Merge pull request #172 from sgotti/readdb_improve_handleevents_goroutines_exit

readdb: improve HandleEvents goroutine exiting
This commit is contained in:
Simone Gotti 2019-11-12 14:57:22 +01:00 committed by GitHub
commit 2076b171eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 9 deletions

View File

@ -445,18 +445,19 @@ func (r *ReadDB) Run(ctx context.Context) error {
}
}
errCh := make(chan error, 1)
doneCh := make(chan struct{}, 2)
hctx, cancel := context.WithCancel(ctx)
wg := &sync.WaitGroup{}
wg.Add(1)
go func() {
r.log.Infof("starting handleEvents")
if err := r.handleEvents(hctx); err != nil {
r.log.Errorf("handleEvents err: %+v", err)
errCh <- err
}
wg.Done()
doneCh <- struct{}{}
}()
select {
@ -464,7 +465,7 @@ func (r *ReadDB) Run(ctx context.Context) error {
r.log.Infof("readdb exiting")
cancel()
return nil
case <-errCh:
case <-doneCh:
// cancel context and wait for the all the goroutines to exit
cancel()
wg.Wait()

View File

@ -306,28 +306,28 @@ func (r *ReadDB) Run(ctx context.Context) error {
}
}
errCh := make(chan error, 2)
doneCh := make(chan struct{}, 2)
hctx, cancel := context.WithCancel(ctx)
wg := &sync.WaitGroup{}
wg.Add(1)
wg.Add(2)
go func() {
r.log.Infof("starting handleEvents")
if err := r.handleEvents(hctx); err != nil {
r.log.Errorf("handleEvents err: %+v", err)
errCh <- err
}
wg.Done()
doneCh <- struct{}{}
}()
wg.Add(1)
go func() {
r.log.Infof("starting handleEventsOST")
if err := r.handleEventsOST(hctx); err != nil {
r.log.Errorf("handleEventsOST err: %+v", err)
errCh <- err
}
wg.Done()
doneCh <- struct{}{}
}()
select {
@ -335,7 +335,7 @@ func (r *ReadDB) Run(ctx context.Context) error {
r.log.Infof("readdb exiting")
cancel()
return nil
case <-errCh:
case <-doneCh:
// cancel context and wait for the all the goroutines to exit
cancel()
wg.Wait()