1212
1313namespace CondenserDotNet . Client . Leadership
1414{
15- public class LeaderWatcherNew : ILeaderWatcher
15+ public class LeaderWatcher : ILeaderWatcher
1616 {
1717 private readonly AsyncManualResetEvent < bool > _electedLeaderEvent = new AsyncManualResetEvent < bool > ( ) ;
1818 private Action < InformationService > _callback ;
@@ -23,8 +23,10 @@ public class LeaderWatcherNew : ILeaderWatcher
2323 private string _keyToWatch ;
2424 private AsyncManualResetEvent < InformationService > _currentInfoService = new AsyncManualResetEvent < InformationService > ( ) ;
2525
26- public LeaderWatcherNew ( IServiceManager serviceManager , string keyToWatch )
26+ public LeaderWatcher ( IServiceManager serviceManager , string keyToWatch )
2727 {
28+ _currentInfoService . Reset ( ) ;
29+ _electedLeaderEvent . Reset ( ) ;
2830 _keyToWatch = keyToWatch ;
2931 _serviceManager = serviceManager ;
3032 _sessionIdTask = GetSession ( ) ;
@@ -92,7 +94,7 @@ private async Task KeepLeadershipLoop()
9294 }
9395 else
9496 {
95- _electedLeaderEvent . Set ( false ) ;
97+ _electedLeaderEvent . Reset ( ) ;
9698 }
9799 await WaitForLeadershipChange ( ) ;
98100 }
@@ -105,6 +107,13 @@ private async Task WaitForLeadershipChange()
105107 var leaderResult = await _serviceManager . Client . GetAsync ( $ "{ KeyPath } { _keyToWatch } ?index={ _consulIndex } ") ;
106108 if ( ! leaderResult . IsSuccessStatusCode )
107109 {
110+ //Lock deleted
111+ if ( leaderResult . StatusCode == System . Net . HttpStatusCode . NotFound )
112+ {
113+ _electedLeaderEvent . Reset ( ) ;
114+ _currentInfoService . Reset ( ) ;
115+ return ;
116+ }
108117 await Task . Delay ( 500 ) ;
109118 continue ;
110119 }
0 commit comments