27
27
class ThriftInfinityClient :
28
28
def __init__ (self , uri : URI ):
29
29
self .uri = uri
30
+ self .transport = None
30
31
self .reconnect ()
31
32
32
33
def reconnect (self ):
34
+ if self .transport is not None :
35
+ self .transport .close ()
36
+ self .transport = None
33
37
# self.transport = TTransport.TFramedTransport(TSocket.TSocket(self.uri.ip, self.uri.port)) # async
34
38
self .transport = TTransport .TBufferedTransport (
35
39
TSocket .TSocket (self .uri .ip , self .uri .port )) # sync
@@ -126,7 +130,8 @@ def list_indexes(self, db_name: str, table_name: str):
126
130
127
131
def insert (self , db_name : str , table_name : str , column_names : list [str ], fields : list [Field ]):
128
132
retry = 0
129
- while retry <= 10 :
133
+ inner_ex = None
134
+ while retry <= 2 :
130
135
try :
131
136
res = self .client .Insert (InsertRequest (session_id = self .session_id ,
132
137
db_name = db_name ,
@@ -135,12 +140,12 @@ def insert(self, db_name: str, table_name: str, column_names: list[str], fields:
135
140
fields = fields ))
136
141
return res
137
142
except TTransportException as ex :
138
- if ex . type == ex . END_OF_FILE :
139
- self . reconnect ()
140
- retry += 1
141
- else :
142
- break
143
- return CommonResponse (ErrorCode .TOO_MANY_CONNECTIONS , "retry insert failed" )
143
+ #import traceback
144
+ #traceback.print_exc ()
145
+ self . reconnect ()
146
+ inner_ex = ex
147
+ retry += 1
148
+ return CommonResponse (ErrorCode .TOO_MANY_CONNECTIONS , "insert failed with exception: " + str ( inner_ex ) )
144
149
145
150
# Can be used in compact mode
146
151
# def insert(self, db_name: str, table_name: str, column_names: list[str], fields: list[Field]):
@@ -198,7 +203,11 @@ def update(self, db_name: str, table_name: str, where_expr, update_expr_array):
198
203
update_expr_array = update_expr_array ))
199
204
200
205
def disconnect (self ):
201
- res = self .client .Disconnect (CommonRequest (session_id = self .session_id ))
206
+ res = None
207
+ try :
208
+ res = self .client .Disconnect (CommonRequest (session_id = self .session_id ))
209
+ except Exception :
210
+ pass
202
211
self .transport .close ()
203
212
return res
204
213
0 commit comments