From 27c2529c1a237f1ee4bd9e7c40bf48fe198193cf Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 29 May 2018 02:51:55 -0400 Subject: [PATCH] Add sanity check to end of DispatchLoop --- dispatch.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/dispatch.go b/dispatch.go index bbb696e6da..a6308709e8 100644 --- a/dispatch.go +++ b/dispatch.go @@ -108,6 +108,7 @@ func DispatchLoop() { wg.Done() // Corresponds to the wg.Add(1) in Pub(). case <-doneChan: // All goroutines have completed. Now we can exit main(). + checkChanEmpty() return } @@ -120,3 +121,18 @@ func DispatchLoop() { first = false } } + +func checkChanEmpty() { + // We've received a done event. As a sanity check, make sure that resChan is + // empty. + select { + case _, ok := <-resChan: + if ok { + panic("Read a message from resChan after doneChan closed.") + } else { + panic("resChan closed. Unexpected.") + } + default: + // No value ready, moving on. + } +}