mirror of https://github.com/status-im/consul.git
ae: restore previous pause/resume behavior
This commit is contained in:
parent
aba072bd1d
commit
e2452efed8
|
@ -77,7 +77,7 @@ type StateSyncer struct {
|
||||||
|
|
||||||
// paused stores whether sync runs are temporarily disabled.
|
// paused stores whether sync runs are temporarily disabled.
|
||||||
pauseLock sync.Mutex
|
pauseLock sync.Mutex
|
||||||
paused bool
|
paused int
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStateSyner(state State, intv time.Duration, shutdownCh chan struct{}, logger *log.Logger) *StateSyncer {
|
func NewStateSyner(state State, intv time.Duration, shutdownCh chan struct{}, logger *log.Logger) *StateSyncer {
|
||||||
|
@ -180,7 +180,7 @@ FullSync:
|
||||||
func (s *StateSyncer) ifNotPausedRun(f func() error) error {
|
func (s *StateSyncer) ifNotPausedRun(f func() error) error {
|
||||||
s.pauseLock.Lock()
|
s.pauseLock.Lock()
|
||||||
defer s.pauseLock.Unlock()
|
defer s.pauseLock.Unlock()
|
||||||
if s.paused {
|
if s.paused != 0 {
|
||||||
return errPaused
|
return errPaused
|
||||||
}
|
}
|
||||||
return f()
|
return f()
|
||||||
|
@ -189,10 +189,7 @@ func (s *StateSyncer) ifNotPausedRun(f func() error) error {
|
||||||
// Pause temporarily disables sync runs.
|
// Pause temporarily disables sync runs.
|
||||||
func (s *StateSyncer) Pause() {
|
func (s *StateSyncer) Pause() {
|
||||||
s.pauseLock.Lock()
|
s.pauseLock.Lock()
|
||||||
if s.paused {
|
s.paused++
|
||||||
panic("pause while paused")
|
|
||||||
}
|
|
||||||
s.paused = true
|
|
||||||
s.pauseLock.Unlock()
|
s.pauseLock.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,16 +197,18 @@ func (s *StateSyncer) Pause() {
|
||||||
func (s *StateSyncer) Paused() bool {
|
func (s *StateSyncer) Paused() bool {
|
||||||
s.pauseLock.Lock()
|
s.pauseLock.Lock()
|
||||||
defer s.pauseLock.Unlock()
|
defer s.pauseLock.Unlock()
|
||||||
return s.paused
|
return s.paused != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resume re-enables sync runs.
|
// Resume re-enables sync runs.
|
||||||
func (s *StateSyncer) Resume() {
|
func (s *StateSyncer) Resume() {
|
||||||
s.pauseLock.Lock()
|
s.pauseLock.Lock()
|
||||||
if !s.paused {
|
s.paused--
|
||||||
panic("resume while not paused")
|
if s.paused < 0 {
|
||||||
|
panic("unbalanced pause/resume")
|
||||||
|
}
|
||||||
|
if s.paused == 0 {
|
||||||
|
s.SyncChanges.Trigger()
|
||||||
}
|
}
|
||||||
s.paused = false
|
|
||||||
s.pauseLock.Unlock()
|
s.pauseLock.Unlock()
|
||||||
s.SyncChanges.Trigger()
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue