-
Notifications
You must be signed in to change notification settings - Fork 131
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
drainer: Refactor, eliminate duplicate code by introducing a taskGroup #572
Conversation
/run-all-tests |
func (s *Server) heartbeat(ctx context.Context) <-chan error { | ||
errc := make(chan error, 1) | ||
err := s.updateStatus() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the change is a little different. Before the change, calling heartbeat
would must execute updateStatus
, now it's not sure
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
heartbeat
is only called in Start
and Start
calls updateStatus
right before heartbeat
, so even when the goroutine scheduler decides not to run another updateStatus
immediately, it makes little difference.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok
Rest LGTM. Good Job! keep to clear codes |
LGTM |
/run-all-tests |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rest LGTM.
* drainer/: Fix when pk is handle and value overflow int64 (#573) * arbiter: Refactor and add more unit tests (#570) * More tests for arbiter * Log os.Hostname error * drainer: Refactor, eliminate duplicate code by introducing a taskGroup (#572) * Refactor, eliminate duplicate code by introducing a taskGroup * Use zap.Stack directly * binlogctl: refine log output when use help command (#580) * Minor edits to README (#583) * drainer: Refactor and add unit tests (#571) * Add tests for drainer * Use DeepEquals to simplify map testing * Just import context * Use Equals
What problem does this PR solve?
The code used by
drainer.Server
to start stuff likecollector
andsyncer
are almost identical.
What is changed and how it works?
Create a wrapper of
sync.WaitGroup
that's similar toerrgroup
, butprovide a
GoNoPanic
method that automatically recover from goroutine panicsand log the error.
Check List
Tests
Code changes
Side effects
Related changes