File tree Expand file tree Collapse file tree 3 files changed +17
-4
lines changed Expand file tree Collapse file tree 3 files changed +17
-4
lines changed Original file line number Diff line number Diff line change 42
42
* Fix Sentinel.execute_command doesn't execute across the entire sentinel cluster bug (#2458)
43
43
* Added a replacement for the default cluster node in the event of failure (#2463)
44
44
* Fix for Unhandled exception related to self.host with unix socket (#2496)
45
+ * Improve error output for master discovery
45
46
46
47
* 4.1.3 (Feb 8, 2022)
47
48
* Fix flushdb and flushall (#1926)
Original file line number Diff line number Diff line change @@ -254,10 +254,12 @@ async def discover_master(self, service_name: str):
254
254
Returns a pair (address, port) or raises MasterNotFoundError if no
255
255
master is found.
256
256
"""
257
+ collected_errors = list ()
257
258
for sentinel_no , sentinel in enumerate (self .sentinels ):
258
259
try :
259
260
masters = await sentinel .sentinel_masters ()
260
- except (ConnectionError , TimeoutError ):
261
+ except (ConnectionError , TimeoutError ) as e :
262
+ collected_errors .append (f"{ sentinel } - { e !r} " )
261
263
continue
262
264
state = masters .get (service_name )
263
265
if state and self .check_master_state (state , service_name ):
@@ -267,7 +269,11 @@ async def discover_master(self, service_name: str):
267
269
self .sentinels [0 ],
268
270
)
269
271
return state ["ip" ], state ["port" ]
270
- raise MasterNotFoundError (f"No master found for { service_name !r} " )
272
+
273
+ error_info = ""
274
+ if len (collected_errors ) > 0 :
275
+ error_info = f" : { ', ' .join (collected_errors )} "
276
+ raise MasterNotFoundError (f"No master found for { service_name !r} { error_info } " )
271
277
272
278
def filter_slaves (
273
279
self , slaves : Iterable [Mapping ]
Original file line number Diff line number Diff line change @@ -230,10 +230,12 @@ def discover_master(self, service_name):
230
230
Returns a pair (address, port) or raises MasterNotFoundError if no
231
231
master is found.
232
232
"""
233
+ collected_errors = list ()
233
234
for sentinel_no , sentinel in enumerate (self .sentinels ):
234
235
try :
235
236
masters = sentinel .sentinel_masters ()
236
- except (ConnectionError , TimeoutError ):
237
+ except (ConnectionError , TimeoutError ) as e :
238
+ collected_errors .append (f"{ sentinel } - { e !r} " )
237
239
continue
238
240
state = masters .get (service_name )
239
241
if state and self .check_master_state (state , service_name ):
@@ -243,7 +245,11 @@ def discover_master(self, service_name):
243
245
self .sentinels [0 ],
244
246
)
245
247
return state ["ip" ], state ["port" ]
246
- raise MasterNotFoundError (f"No master found for { service_name !r} " )
248
+
249
+ error_info = ""
250
+ if len (collected_errors ) > 0 :
251
+ error_info = f" : { ', ' .join (collected_errors )} "
252
+ raise MasterNotFoundError (f"No master found for { service_name !r} { error_info } " )
247
253
248
254
def filter_slaves (self , slaves ):
249
255
"Remove slaves that are in an ODOWN or SDOWN state"
You can’t perform that action at this time.
0 commit comments