databricks-sql-python icon indicating copy to clipboard operation
databricks-sql-python copied to clipboard

Max retries exceeded with url (NewConnectionError) - Upgrading from 2.7.0 to 2.9.3

Open nrichards17 opened this issue 2 years ago • 4 comments

Description

I encountered this very consistent error when using the dbt-databricks adapter when upgrading from dbt-databricks==1.5.5 to dbt-databricks==1.6.6. For a dbt run with sufficiently enough models, this error always occurs eventually - sometimes immediately and sometimes after many models have successfully built:

Runtime Error
  Runtime Error
    Database Error
      HTTPSConnectionPool(host='<HOST>', port=443): Max retries exceeded with url: /sql/1.0/warehouses/<URL> 
      (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x16d7d5390>: 
      Failed to establish a new connection: [Errno 12] Cannot allocate memory'))

I isolated the issue to be with this databricks-sql-python package when upgrading from databricks-sql-connector==2.7.0 to databricks-sql-connector==2.9.3.

The fact that it's a NewConnectionError isn't surprising but that it's failing because of "memory allocation" is very odd.

What Works

Using dbt-databricks==1.5.5 and databricks-sql-connector==2.7.0 works perfectly. Even dbt-databricks==1.6.6 then downgrading to databricks-sql-connector==2.7.0, forcing an incompatible package version, results in an environment that still works fine.

What Does Not Work

An environment with dbt-databricks==1.6.6 and databricks-sql-connector==2.9.3.

Other Troubleshooting

$ python --version
Python 3.11.5
$ dbt --version
Core:
  - installed: 1.6.6
  - latest:    1.6.6 - Up to date!

Plugins:
  - databricks: 1.6.6 - Up to date!
  - spark:      1.6.0 - Up to date!

I have attempted to adjust all of the profiles.yml parameters for retries and connections, with no success in getting 2.9.3 to work properly, ex:

      threads: 4
      retry_all: True
      connect_retries: 5
      connect_timeout: 180

I will add the full list of packages in my python environments below in the comments.

Perhaps these issues will be resolved in the 3.0.0 release, but I wanted to raise this issue just in case!

nrichards17 avatar Oct 26 '23 02:10 nrichards17

Packages in working environment:

# Name                    Version                   Build  Channel
agate                     1.7.0                    pypi_0    pypi
alembic                   1.11.1                   pypi_0    pypi
attrs                     23.1.0                   pypi_0    pypi
babel                     2.12.1                   pypi_0    pypi
bzip2                     1.0.8                h620ffc9_4  
ca-certificates           2023.05.30           hca03da5_0  
certifi                   2023.7.22                pypi_0    pypi
cffi                      1.15.1                   pypi_0    pypi
charset-normalizer        3.2.0                    pypi_0    pypi
click                     8.1.3                    pypi_0    pypi
colorama                  0.4.6                    pypi_0    pypi
databricks-sdk            0.1.7                    pypi_0    pypi
databricks-sql-connector  2.7.0                    pypi_0    pypi
dbt-core                  1.5.3                    pypi_0    pypi
dbt-databricks            1.5.5                    pypi_0    pypi
dbt-extractor             0.4.1                    pypi_0    pypi
dbt-spark                 1.5.0                    pypi_0    pypi
et-xmlfile                1.1.0                    pypi_0    pypi
future                    0.18.3                   pypi_0    pypi
hologram                  0.0.16                   pypi_0    pypi
idna                      3.4                      pypi_0    pypi
importlib-metadata        6.8.0                    pypi_0    pypi
isodate                   0.6.1                    pypi_0    pypi
jaraco-classes            3.3.0                    pypi_0    pypi
jinja2                    3.1.2                    pypi_0    pypi
jsonschema                4.18.4                   pypi_0    pypi
jsonschema-specifications 2023.7.1                 pypi_0    pypi
keyring                   24.2.0                   pypi_0    pypi
leather                   0.3.4                    pypi_0    pypi
libffi                    3.4.4                hca03da5_0  
logbook                   1.5.3                    pypi_0    pypi
lz4                       4.3.2                    pypi_0    pypi
mako                      1.2.4                    pypi_0    pypi
markupsafe                2.1.3                    pypi_0    pypi
mashumaro                 3.6                      pypi_0    pypi
minimal-snowplow-tracker  0.0.2                    pypi_0    pypi
more-itertools            10.0.0                   pypi_0    pypi
msgpack                   1.0.5                    pypi_0    pypi
ncurses                   6.4                  h313beb8_0  
networkx                  2.8.8                    pypi_0    pypi
numpy                     1.25.1                   pypi_0    pypi
oauthlib                  3.2.2                    pypi_0    pypi
openpyxl                  3.1.2                    pypi_0    pypi
openssl                   3.0.9                h1a28f6b_0  
packaging                 23.1                     pypi_0    pypi
pandas                    1.5.3                    pypi_0    pypi
parsedatetime             2.4                      pypi_0    pypi
pathspec                  0.11.1                   pypi_0    pypi
pip                       23.2.1          py311hca03da5_0  
protobuf                  4.23.4                   pypi_0    pypi
pyarrow                   12.0.1                   pypi_0    pypi
pycparser                 2.21                     pypi_0    pypi
python                    3.11.4               hb885b13_0  
python-dateutil           2.8.2                    pypi_0    pypi
python-slugify            8.0.1                    pypi_0    pypi
pytimeparse               1.1.8                    pypi_0    pypi
pytz                      2023.3                   pypi_0    pypi
pyyaml                    6.0.1                    pypi_0    pypi
readline                  8.2                  h1a28f6b_0  
referencing               0.30.0                   pypi_0    pypi
requests                  2.28.2                   pypi_0    pypi
rpds-py                   0.9.2                    pypi_0    pypi
setuptools                68.0.0          py311hca03da5_0  
six                       1.16.0                   pypi_0    pypi
sqlalchemy                1.4.49                   pypi_0    pypi
sqlite                    3.41.2               h80987f9_0  
sqlparams                 5.1.0                    pypi_0    pypi
sqlparse                  0.4.4                    pypi_0    pypi
text-unidecode            1.3                      pypi_0    pypi
thrift                    0.16.0                   pypi_0    pypi
tk                        8.6.12               hb8d0fd4_0  
typing-extensions         4.7.1                    pypi_0    pypi
tzdata                    2023c                h04d1e81_0  
urllib3                   1.26.16                  pypi_0    pypi
werkzeug                  2.3.6                    pypi_0    pypi
wheel                     0.38.4          py311hca03da5_0  
xz                        5.4.2                h80987f9_0  
zipp                      3.16.2                   pypi_0    pypi
zlib                      1.2.13               h5a0b063_0  

nrichards17 avatar Oct 26 '23 02:10 nrichards17

Packages in NON-working environment:

# Name                    Version                   Build  Channel
agate                     1.7.1                    pypi_0    pypi
alembic                   1.12.0                   pypi_0    pypi
attrs                     23.1.0                   pypi_0    pypi
babel                     2.13.1                   pypi_0    pypi
bzip2                     1.0.8                h620ffc9_4  
ca-certificates           2023.08.22           hca03da5_0  
certifi                   2023.7.22                pypi_0    pypi
cffi                      1.16.0                   pypi_0    pypi
charset-normalizer        3.3.1                    pypi_0    pypi
click                     8.1.7                    pypi_0    pypi
colorama                  0.4.6                    pypi_0    pypi
databricks-sdk            0.12.0                   pypi_0    pypi
databricks-sql-connector  2.9.3                    pypi_0    pypi
dbt-core                  1.6.6                    pypi_0    pypi
dbt-databricks            1.6.6                    pypi_0    pypi
dbt-extractor             0.4.1                    pypi_0    pypi
dbt-semantic-interfaces   0.2.2                    pypi_0    pypi
dbt-spark                 1.6.0                    pypi_0    pypi
et-xmlfile                1.1.0                    pypi_0    pypi
hologram                  0.0.16                   pypi_0    pypi
idna                      3.4                      pypi_0    pypi
importlib-metadata        6.8.0                    pypi_0    pypi
isodate                   0.6.1                    pypi_0    pypi
jaraco-classes            3.3.0                    pypi_0    pypi
jinja2                    3.1.2                    pypi_0    pypi
jsonschema                4.19.1                   pypi_0    pypi
jsonschema-specifications 2023.7.1                 pypi_0    pypi
keyring                   24.2.0                   pypi_0    pypi
leather                   0.3.4                    pypi_0    pypi
libffi                    3.4.4                hca03da5_0  
logbook                   1.5.3                    pypi_0    pypi
lz4                       4.3.2                    pypi_0    pypi
mako                      1.2.4                    pypi_0    pypi
markupsafe                2.1.3                    pypi_0    pypi
mashumaro                 3.8.1                    pypi_0    pypi
minimal-snowplow-tracker  0.0.2                    pypi_0    pypi
more-itertools            8.14.0                   pypi_0    pypi
msgpack                   1.0.7                    pypi_0    pypi
ncurses                   6.4                  h313beb8_0  
networkx                  3.2                      pypi_0    pypi
numpy                     1.26.1                   pypi_0    pypi
oauthlib                  3.2.2                    pypi_0    pypi
openpyxl                  3.1.2                    pypi_0    pypi
openssl                   3.0.11               h1a28f6b_2  
packaging                 23.2                     pypi_0    pypi
pandas                    2.1.1                    pypi_0    pypi
parsedatetime             2.6                      pypi_0    pypi
pathspec                  0.11.2                   pypi_0    pypi
pip                       23.3            py311hca03da5_0  
pip-system-certs          4.0                      pypi_0    pypi
protobuf                  4.24.4                   pypi_0    pypi
pyarrow                   13.0.0                   pypi_0    pypi
pycparser                 2.21                     pypi_0    pypi
pydantic                  1.10.13                  pypi_0    pypi
python                    3.11.5               hb885b13_0  
python-dateutil           2.8.2                    pypi_0    pypi
python-slugify            8.0.1                    pypi_0    pypi
pytimeparse               1.1.8                    pypi_0    pypi
pytz                      2023.3.post1             pypi_0    pypi
pyyaml                    6.0.1                    pypi_0    pypi
readline                  8.2                  h1a28f6b_0  
referencing               0.30.2                   pypi_0    pypi
requests                  2.31.0                   pypi_0    pypi
rpds-py                   0.10.6                   pypi_0    pypi
setuptools                68.0.0          py311hca03da5_0  
six                       1.16.0                   pypi_0    pypi
sqlalchemy                1.4.49                   pypi_0    pypi
sqlite                    3.41.2               h80987f9_0  
sqlparams                 5.1.0                    pypi_0    pypi
sqlparse                  0.4.4                    pypi_0    pypi
text-unidecode            1.3                      pypi_0    pypi
thrift                    0.16.0                   pypi_0    pypi
tk                        8.6.12               hb8d0fd4_0  
typing-extensions         4.8.0                    pypi_0    pypi
tzdata                    2023.3                   pypi_0    pypi
urllib3                   1.26.18                  pypi_0    pypi
wheel                     0.41.2          py311hca03da5_0  
wrapt                     1.15.0                   pypi_0    pypi
xz                        5.4.2                h80987f9_0  
zipp                      3.17.0                   pypi_0    pypi
zlib                      1.2.13               h5a0b063_0  

nrichards17 avatar Oct 26 '23 02:10 nrichards17

I tested several other versions of this databricks-sql-connector package, including the latest unreleased changes from main. Version 2.8.0 still works as expected, but anything >=2.9.0 fails with the same NewConnectionError from the original issue above:

Runtime Error
  Runtime Error
    Database Error
      HTTPSConnectionPool(host='<HOST>', port=443): Max retries exceeded with url: /sql/1.0/warehouses/<URL> 
      (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x16d7d5390>: 
      Failed to establish a new connection: [Errno 12] Cannot allocate memory'))

Versions tested:

2.7.0 - pass
2.8.0 - pass
2.9.0 - fail (DatabricksRetryPolicy bypass)
2.9.1 - fail (yanked package version, DatabricksRetryPolicy bypass) 
2.9.2 - fail (yanked package version)
2.9.3 - fail
main@9b48cd49ac55b434b6daa80ef07e2f4f4b0b3173 - fail

nrichards17 avatar Oct 26 '23 17:10 nrichards17

Hi @nrichards17! Does this issue still reproduce if you upgrade to latest dbt-databricks and databricks-sql-connector?

kravets-levko avatar Apr 17 '24 17:04 kravets-levko