Repository: modin-project/modin

Issue:
BUG: OmnisciLaunchParameters.get() throws RecursionError: maximum recursion depth exceeded in comparison
### Modin version checks

- [X] I have checked that this issue has not already been reported.

- [X] I have confirmed this bug exists on the latest released version of Modin.

- [X] I have confirmed this bug exists on the main branch of Modin. (In order to do this you can follow [this guide](https://modin.readthedocs.io/en/stable/getting_started/installation.html#installing-from-the-github-master-branch).)


### Reproducible Example

```python
Python 3.9.4 (default, Jun 17 2021, 12:19:44)
[Clang 12.0.5 (clang-1205.0.22.9)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
import modin.config as mc
mc.OmnisciLaunchParameters.get()

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 513, in get
    return OmnisciLaunchParameters.get()
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 513, in get
    return OmnisciLaunchParameters.get()
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 513, in get
    return OmnisciLaunchParameters.get()
  [Previous line repeated 995 more times]
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 509, in get
    if cls == OmnisciLaunchParameters or (
RecursionError: maximum recursion depth exceeded in comparison
```


### Issue Description

Hi folks, looks like there is an issue getting `OmnisciLaunchParameters` config value.  See example above.

Tested on main commit `ab385279c4bd143cb787712a583bf9f8bb51128e`.

### Expected Behavior

No error

### Error Logs

<details>

```python-traceback

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 513, in get
    return OmnisciLaunchParameters.get()
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 513, in get
    return OmnisciLaunchParameters.get()
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 513, in get
    return OmnisciLaunchParameters.get()
  [Previous line repeated 995 more times]
  File "/Volumes/workplace/.venvmodin/lib/python3.9/site-packages/modin/config/envvars.py", line 509, in get
    if cls == OmnisciLaunchParameters or (
RecursionError: maximum recursion depth exceeded in comparison

```

</details>


### Installed Versions

<details>

INSTALLED VERSIONS
------------------
commit           : ab385279c4bd143cb787712a583bf9f8bb51128e
python           : 3.9.4.final.0
python-bits      : 64
OS               : Darwin
OS-release       : 21.6.0
Version          : Darwin Kernel Version 21.6.0: Sat Jun 18 17:07:25 PDT 2022; root:xnu-8020.140.41~1/RELEASE_X86_64
machine          : x86_64
processor        : i386
byteorder        : little
LC_ALL           : None
LANG             : en_GB.UTF-8
LOCALE           : en_GB.UTF-8

Modin dependencies
------------------
modin            : 0.16.0+31.gab38527
ray              : 2.0.1
dask             : 2022.10.2
distributed      : 2022.10.2
hdk              : None

pandas dependencies
-------------------
pandas           : 1.5.1
numpy            : 1.23.4
pytz             : 2022.6
dateutil         : 2.8.2
setuptools       : 49.2.1
pip              : 22.3
Cython           : None
pytest           : None
hypothesis       : None
sphinx           : None
blosc            : None
feather          : None
xlsxwriter       : None
lxml.etree       : None
html5lib         : None
pymysql          : None
psycopg2         : None
jinja2           : 3.1.2
IPython          : 8.6.0
pandas_datareader: None
bs4              : 4.11.1
bottleneck       : None
brotli           : None
fastparquet      : None
fsspec           : 2022.10.0
gcsfs            : None
matplotlib       : None
numba            : None
numexpr          : None
odfpy            : None
openpyxl         : None
pandas_gbq       : None
pyarrow          : 10.0.0
pyreadstat       : None
pyxlsb           : None
s3fs             : None
scipy            : None
snappy           : None
sqlalchemy       : None
tables           : None
tabulate         : None
xarray           : None
xlrd             : None
xlwt             : None
zstandard        : None
tzdata           : None

</details>



Discussion:
cc @AndreyPavlenko 
The `HdkLaunchParameters` actually works as expected though `OmnisciLaunchParameters` is supposed to be just an alias for HDK params:
```python
>>> import modin.config as mc
>>> mc.HdkLaunchParameters.get()
{'enable_union': 1, 'enable_columnar_output': 1, 'enable_lazy_fetch': 0, 'null_div_by_zero': 1, 'enable_watchdog': 0, 'enable_thrift_logs': 0}
```

Resolving patch:
diff --git a/modin/config/envvars.py b/modin/config/envvars.py
--- a/modin/config/envvars.py
+++ b/modin/config/envvars.py
@@ -478,7 +478,7 @@ class PersistentPickle(EnvironmentVariable, type=bool):
 
 class HdkLaunchParameters(EnvironmentVariable, type=dict):
     """
-    Additional command line options for the OmniSci engine.
+    Additional command line options for the HDK engine.
 
     Please visit OmniSci documentation for the description of available parameters:
     https://docs.omnisci.com/installation-and-configuration/config-parameters#configuration-parameters-for-omniscidb
@@ -510,8 +510,20 @@ def get(cls) -> dict:
             OmnisciLaunchParameters.varname in os.environ
             and HdkLaunchParameters.varname not in os.environ
         ):
-            return OmnisciLaunchParameters.get()
+            return OmnisciLaunchParameters._get()
+        else:
+            return HdkLaunchParameters._get()
+
+    @classmethod
+    def _get(cls) -> dict:
+        """
+        Get the resulted command-line options.
 
+        Returns
+        -------
+        dict
+            Decoded and verified config value.
+        """
         custom_parameters = super().get()
         result = cls.default.copy()
         result.update(


Test patch:
diff --git a/modin/config/test/test_envvars.py b/modin/config/test/test_envvars.py
--- a/modin/config/test/test_envvars.py
+++ b/modin/config/test/test_envvars.py
@@ -13,7 +13,7 @@
 
 import os
 import pytest
-
+import modin.config as cfg
 from modin.config.envvars import EnvironmentVariable, _check_vars, ExactStr
 
 
@@ -60,3 +60,32 @@ def test_custom_set(make_custom_envvar, set_custom_envvar):
 def test_custom_help(make_custom_envvar):
     assert "MODIN_CUSTOM" in make_custom_envvar.get_help()
     assert "custom var" in make_custom_envvar.get_help()
+
+
+def test_hdk_envvar():
+    os.environ[
+        cfg.OmnisciLaunchParameters.varname
+    ] = "enable_union=2,enable_thrift_logs=3"
+    params = cfg.OmnisciLaunchParameters.get()
+    assert params["enable_union"] == 2
+    assert params["enable_thrift_logs"] == 3
+
+    params = cfg.HdkLaunchParameters.get()
+    assert params["enable_union"] == 2
+    assert params["enable_thrift_logs"] == 3
+
+    os.environ[cfg.HdkLaunchParameters.varname] = "enable_union=4,enable_thrift_logs=5"
+    del cfg.HdkLaunchParameters._value
+    params = cfg.HdkLaunchParameters.get()
+    assert params["enable_union"] == 4
+    assert params["enable_thrift_logs"] == 5
+
+    params = cfg.OmnisciLaunchParameters.get()
+    assert params["enable_union"] == 2
+    assert params["enable_thrift_logs"] == 3
+
+    del os.environ[cfg.OmnisciLaunchParameters.varname]
+    del cfg.OmnisciLaunchParameters._value
+    params = cfg.OmnisciLaunchParameters.get()
+    assert params["enable_union"] == 4
+    assert params["enable_thrift_logs"] == 5