Skip to content

Commit 1198151

Browse files
Set mode for insert request
This approach supports inheritance approach. If something will be changed in Connection code (except for removing _build_*_request func), you should not do anything more to support it in MeshConnection code.
1 parent 0f95f28 commit 1198151

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

tarantool/connection.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,11 @@ def subscribe(self, cluster_uuid, server_uuid, vclock=None):
527527
return
528528
self.close() # close connection after SUBSCRIBE
529529

530+
def _build_insert_request(self, space_name, values):
531+
if isinstance(space_name, string_types):
532+
space_name = self.schema.get_space(space_name).sid
533+
return RequestInsert(self, space_name, values)
534+
530535
def insert(self, space_name, values):
531536
'''
532537
Execute INSERT request.
@@ -540,9 +545,7 @@ def insert(self, space_name, values):
540545
541546
:rtype: `Response` instance
542547
'''
543-
if isinstance(space_name, string_types):
544-
space_name = self.schema.get_space(space_name).sid
545-
request = RequestInsert(self, space_name, values)
548+
request = self._build_insert_request(space_name, values)
546549
return self._send_request(request)
547550

548551
def delete(self, space_name, key, **kwargs):

tarantool/mesh_connection.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'''
66

77
import time
8-
8+
from enum import Enum
99

1010
from tarantool.connection import Connection
1111
from tarantool.error import (
@@ -34,6 +34,11 @@
3434
string_types = str
3535

3636

37+
class Mode(Enum):
38+
RW = 1
39+
PREFER_RW = 2
40+
PREFER_RO = 3
41+
3742
def parse_uri(uri):
3843
# TODO: Support Unix sockets.
3944
def parse_error(uri, msg):
@@ -363,3 +368,8 @@ def _send_request(self, request):
363368
'''
364369
self._opt_refresh_instances()
365370
return super(MeshConnection, self)._send_request(request)
371+
372+
def _build_insert_request(self, space_name, values):
373+
request = super(MeshConnection, self)._build_insert_request(space_name, values)
374+
request.mode = Mode.RW
375+
return request

tarantool/request.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ def __init__(self, conn):
7676
self._sync = None
7777
self._body = ''
7878
self.response_class = Response
79+
# Mode is supported only in MeshConnection.
80+
self.mode = None
7981

8082
packer_kwargs = dict()
8183

0 commit comments

Comments
 (0)