@@ -333,33 +333,37 @@ func (cr *Cluster) Disable(ctx context.Context) (ok bool) {
333
333
{
334
334
logInfo ("Making keepalive before disable" )
335
335
tctx , cancel := context .WithTimeout (ctx , time .Second * 10 )
336
- cr .KeepAlive (tctx )
336
+ ok = cr .KeepAlive (tctx )
337
337
cancel ()
338
+ if ok {
339
+ tctx , cancel := context .WithTimeout (ctx , time .Second * 10 )
340
+ data , err := cr .socket .EmitAckContext (tctx , "disable" )
341
+ cancel ()
342
+ if err != nil {
343
+ logErrorf ("Disable failed: %v" , err )
344
+ ok = false
345
+ } else {
346
+ logDebug ("disable ack:" , data )
347
+ if ero := data [0 ]; ero != nil {
348
+ logErrorf ("Disable failed: %v" , ero )
349
+ ok = false
350
+ } else if ! data [1 ].(bool ) {
351
+ logError ("Disable failed: acked non true value" )
352
+ ok = false
353
+ }
354
+ }
355
+ } else {
356
+ logWarn ("Keep alive failed, disable without send packet" )
357
+ ok = true
358
+ }
338
359
}
339
360
340
- tctx , cancel := context .WithTimeout (ctx , time .Second * 10 )
341
- data , err := cr .socket .EmitAckContext (tctx , "disable" )
342
- cancel ()
343
-
344
361
cr .enabled .Store (false )
345
362
go cr .socket .Close ()
346
363
cr .socket = nil
347
364
close (cr .disabled )
348
- if err != nil {
349
- logErrorf ("Disable failed: %v" , err )
350
- return false
351
- }
352
- logDebug ("disable ack:" , data )
353
- if ero := data [0 ]; ero != nil {
354
- logErrorf ("Disable failed: %v" , ero )
355
- return false
356
- }
357
- if ! data [1 ].(bool ) {
358
- logError ("Disable failed: ack non true value" )
359
- return false
360
- }
361
365
logWarn ("Cluster disabled" )
362
- return true
366
+ return
363
367
}
364
368
365
369
func (cr * Cluster ) Disabled () <- chan struct {} {
0 commit comments