Skip to content

Commit 88aaa84

Browse files
committed
api: extend connect with fetch_schema param
Added support of the fetch_schema parameter, which allows to ignore schema changes on the server. Closes #219
1 parent 1154b3d commit 88aaa84

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

tarantool/connection.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,8 @@ def __init__(self, host, port,
363363
ssl_ca_file=DEFAULT_SSL_CA_FILE,
364364
ssl_ciphers=DEFAULT_SSL_CIPHERS,
365365
packer_factory=default_packer_factory,
366-
unpacker_factory=default_unpacker_factory):
366+
unpacker_factory=default_unpacker_factory,
367+
fetch_schema = True):
367368
"""
368369
:param host: Server hostname or IP address. Use ``None`` for
369370
Unix sockets.
@@ -533,8 +534,10 @@ def __init__(self, host, port,
533534
self.socket_timeout = socket_timeout
534535
self.reconnect_delay = reconnect_delay
535536
self.reconnect_max_attempts = reconnect_max_attempts
536-
self.schema = Schema(self)
537-
self.schema_version = 1
537+
self.fetch_schema = fetch_schema
538+
if self.fetch_schema:
539+
self.schema = Schema(self)
540+
self.schema_version = 1
538541
self._socket = None
539542
self.connected = False
540543
self.error = True
@@ -745,7 +748,8 @@ def connect(self):
745748
if self.transport == SSL_TRANSPORT:
746749
self.wrap_socket_ssl()
747750
self.handshake()
748-
self.load_schema()
751+
if self.fetch_schema:
752+
self.load_schema()
749753
self._check_features()
750754
except SslError as e:
751755
raise e
@@ -841,7 +845,8 @@ def _send_request_wo_reconnect(self, request, on_push=None, on_push_ctx=None):
841845
response = request.response_class(self, self._read_response())
842846
break
843847
except SchemaReloadException as e:
844-
self.update_schema(e.schema_version)
848+
if self.fetch_schema:
849+
self.update_schema(e.schema_version)
845850
continue
846851

847852
while response._code == IPROTO_CHUNK:

tarantool/request.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,13 @@ def header(self, length):
186186
"""
187187

188188
self._sync = self.conn.generate_sync()
189-
header = self._dumps({IPROTO_REQUEST_TYPE: self.request_type,
190-
IPROTO_SYNC: self._sync,
191-
IPROTO_SCHEMA_ID: self.conn.schema_version})
189+
header_fields = {
190+
IPROTO_REQUEST_TYPE: self.request_type,
191+
IPROTO_SYNC: self._sync,
192+
}
193+
if self.conn.fetch_schema:
194+
header_fields[IPROTO_SCHEMA_ID] = self.conn.schema_version
195+
header = self._dumps(header_fields)
192196

193197
return self._dumps(length + len(header)) + header
194198

0 commit comments

Comments
 (0)