Skip to content

Commit

Permalink
fix stream api deadlock
Browse files Browse the repository at this point in the history
  • Loading branch information
zhukaihan committed Oct 21, 2024
1 parent a896a48 commit 72d1fd1
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
15 changes: 9 additions & 6 deletions pkg/experiment/local/flag_config_stream_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,17 +119,14 @@ func (api *flagConfigStreamApiV2) Connect(
stopCh := make(chan bool)
api.stopCh = stopCh

closeAllAndNotify := func(err error) {
closeAll := func() {
api.lock.Lock()
defer api.lock.Unlock()
closeStream()
if api.stopCh == stopCh {
api.stopCh = nil
}
close(stopCh)
if onError != nil {
onError(err)
}
}

// Retrieve and pass on message forever until stopCh closes.
Expand All @@ -144,7 +141,10 @@ func (api *flagConfigStreamApiV2) Connect(
flags, err := parseData(msg.data)
if err != nil {
// Error, close everything.
closeAllAndNotify(errors.New("stream corrupt data, cause: " + err.Error()))
closeAll()
if onError != nil {
onError(errors.New("stream corrupt data, cause: " + err.Error()))
}
return
}
if onUpdate != nil {
Expand All @@ -154,7 +154,10 @@ func (api *flagConfigStreamApiV2) Connect(
}
case err := <-streamErrCh:
// Error, close everything.
closeAllAndNotify(err)
closeAll()
if onError != nil {
onError(err)
}
return
}
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/experiment/local/flag_config_updater.go
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,8 @@ func (w *flagConfigFallbackRetryWrapper) scheduleRetry() {
}

w.log.Debug("main updater retry start")
err := w.mainUpdater.Start(func(error) {
err := w.mainUpdater.Start(func(err error) {
w.log.Error("main updater updating err, starting fallback if available. error: ", err)
go func() { w.scheduleRetry() }() // Don't care if poller start error or not, always retry.
if w.fallbackUpdater != nil {
//nolint:errcheck
Expand Down

0 comments on commit 72d1fd1

Please sign in to comment.