@@ -210,24 +210,13 @@ def connect(self):
210
210
211
211
self .update_ro_info ()
212
212
213
- def call (self , func_name , * args , ** kwargs ):
214
- mode = kwargs .get ('mode' , Mode .PREFER_RW )
213
+ def send_with_reload_on_ro_error (self , method_name , mode , * args , ** kwargs ):
215
214
conn = self .strategy .getnext (mode )
216
-
217
- # try:
218
- resp = conn .call (func_name , args )
219
- # except ValueError:
220
- #reload
221
- # resp = conn.call(func_name, args)
222
-
223
- return resp
215
+ method = getattr (Connection , method_name )
216
+ print (args )
224
217
225
- def eval (self , expr , * args , ** kwargs ):
226
- mode = kwargs .get ('mode' , Mode .PREFER_RW )
227
- conn = self .strategy .getnext (mode )
228
-
229
218
try :
230
- resp = conn . eval ( expr , args )
219
+ resp = method ( conn , * args , ** kwargs )
231
220
except DatabaseError as e :
232
221
if len (e .args ) > 0 :
233
222
strerror = tnt_strerror (e .args [0 ])
@@ -237,12 +226,21 @@ def eval(self, expr, *args, **kwargs):
237
226
if strerror != 'UNDEFINED' and strerror [0 ] == 'ER_READONLY' :
238
227
self .update_ro_info ()
239
228
conn = self .strategy .getnext (mode )
240
- resp = conn . eval ( expr , args )
229
+ resp = method ( conn , * args , ** kwargs )
241
230
else :
242
231
raise
243
232
244
233
return resp
245
234
235
+
236
+ def call (self , func_name , * args , ** kwargs ):
237
+ mode = kwargs .get ('mode' , Mode .PREFER_RW )
238
+ return self .send_with_reload_on_ro_error ('call' , mode , func_name , * args )
239
+
240
+ def eval (self , expr , * args , ** kwargs ):
241
+ mode = kwargs .get ('mode' , Mode .PREFER_RW )
242
+ return self .send_with_reload_on_ro_error ('eval' , mode , expr , * args )
243
+
246
244
def replace (self , space_name , values ):
247
245
raise NotImplementedError
248
246
0 commit comments