Skip to content

Commit 4ddb00c

Browse files
committed
SNOW-27430: added login_timeout and network_timeout parameters to connection. By default, login timeout is 60 seconds and network timeout is infinite.
1 parent 8e9e4c6 commit 4ddb00c

File tree

5 files changed

+95
-72
lines changed

5 files changed

+95
-72
lines changed

chunk_downloader.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from .errors import (Error, OperationalError)
1414
from .network import (SnowflakeRestful, NO_TOKEN, MAX_CONNECTION_POOL)
1515

16-
DEFAULT_REQUEST_TIMEOUT = 300
16+
DEFAULT_REQUEST_TIMEOUT = 3600
1717
DEFAULT_CLIENT_RESULT_PREFETCH_SLOTS = 2
1818
DEFAULT_CLIENT_RESULT_PREFETCH_THREADS = 1
1919

@@ -257,8 +257,7 @@ def __del__(self):
257257
def _get_request(
258258
self, url, headers,
259259
is_raw_binary_iterator=True,
260-
max_connection_pool=MAX_CONNECTION_POOL,
261-
retry=10):
260+
max_connection_pool=MAX_CONNECTION_POOL):
262261
"""
263262
GET request for Large Result set chunkloader
264263
"""
@@ -282,7 +281,6 @@ def _get_request(
282281
timeout=(self._connection._connect_timeout,
283282
self._connection._connect_timeout,
284283
DEFAULT_REQUEST_TIMEOUT),
285-
retry=retry,
286284
token=NO_TOKEN,
287285
is_raw_binary=True,
288286
is_raw_binary_iterator=is_raw_binary_iterator,

connection.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@
5454
u'schema': None, # snowflake
5555
u'role': None, # snowflake
5656
u'session_id': None, # snowflake
57-
u'connect_timeout': None, # connection timeout
58-
u'request_timeout': None, # request timeout
57+
u'connect_timeout': None, # snowflake internal connection timeout
58+
u'request_timeout': None, # snowflake internalrequest timeout
59+
u'login_timeout': 60, # login timeout
60+
u'network_timeout': None, # network timeout (infinite by default)
5961
u'passcode_in_password': False, # Snowflake MFA
6062
u'passcode': None, # Snowflake MFA
6163
u'authenticator': network.DEFAULT_AUTHENTICATOR,
@@ -74,7 +76,6 @@
7476
u'ocsp_response_cache_filename': None, # snowflake internal
7577
u'converter_class': SnowflakeConverter, # snowflake internal
7678
u'chunk_downloader_class': SnowflakeChunkDownloader, # snowflake internal
77-
u'retry_connection_auth': True, # snowflake internal
7879
}
7980

8081
APPLICATION_RE = re.compile(r'[\w\d_]+')
@@ -201,6 +202,20 @@ def request_timeout(self):
201202
"""
202203
return self._request_timeout
203204

205+
@property
206+
def login_timeout(self):
207+
"""
208+
Login timeout. Used in authentication
209+
"""
210+
return self._login_timeout
211+
212+
@property
213+
def network_timeout(self):
214+
"""
215+
Network timeout. Used for general purpose
216+
"""
217+
return self._network_timeout
218+
204219
@property
205220
def rest(self):
206221
u"""
@@ -452,7 +467,6 @@ def __open_connection(self, mfa_callback, password_callback):
452467
mfa_callback=mfa_callback,
453468
password_callback=password_callback,
454469
session_parameters=self._session_parameters,
455-
retry_connection_auth=self._retry_connection_auth,
456470
)
457471
self._password = None
458472
self._token = self._con.token
@@ -564,9 +578,7 @@ def _cmd_query(self, sql, sequence_counter, request_id,
564578
# retry 1000 times/4.5 hours for general queries
565579
ret = self._con.request(
566580
u'/queries/v1/query-request?' + urlencode(url_parameters),
567-
data,
568-
client=client,
569-
_no_results=_no_results, retry=1000)
581+
data, client=client, _no_results=_no_results)
570582

571583
if ret is not None and u'data' in ret and ret[u'data'] is None:
572584
ret[u'data'] = {}

cursor.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -578,9 +578,7 @@ def chunk_info(self, data, use_ijson=False):
578578

579579
def query_result(self, qid, _use_ijson=False):
580580
url = ('/queries/{qid}/result').format(qid=qid)
581-
# retry 1000 times for getting the results
582-
ret = self._connection._con.request(
583-
url=url, method='get', retry=1000)
581+
ret = self._connection._con.request(url=url, method='get')
584582
if ret.get(u'success'):
585583
data = ret.get(u'data')
586584
self.chunk_info(data, use_ijson=_use_ijson)
@@ -603,9 +601,8 @@ def query_result(self, qid, _use_ijson=False):
603601
return self
604602

605603
def abort_query(self, qid):
606-
url = ('/queries/{qid}/abort-request').format(qid=qid)
607-
ret = self._connection._con.request(
608-
url=url, method='post', retry=100)
604+
url = '/queries/{qid}/abort-request'.format(qid=qid)
605+
ret = self._connection._con.request(url=url, method='post')
609606
return ret.get(u'success')
610607

611608
def executemany(self, command, seqparams):

0 commit comments

Comments
 (0)