pkg/receive: remove deadlock on interrupt#1231
Merged
brancz merged 1 commit intothanos-io:masterfrom Jun 6, 2019
Merged
Conversation
bwplotka
reviewed
Jun 6, 2019
Member
bwplotka
left a comment
There was a problem hiding this comment.
Nice finding! Some suggestion (:
pkg/receive/handler.go
Outdated
| }, func(error) { | ||
| go func() { | ||
| <-ctx.Done() | ||
| runutil.CloseWithLogOnErr(h.logger, listener, "receive HTTP listener") |
Member
There was a problem hiding this comment.
Why not having handler.Close method and closing listener there? And having Close() method invoked in root oklog/run? Would be more explicit and consistent? (:
Member
Author
There was a problem hiding this comment.
yes absolutely sounds good, I assumed we were using context for consistency :)
Member
There was a problem hiding this comment.
Hard to say about any consistency here.. but you are right we mix things everywhere in this space. (: We can do both, but this sounds like extra hidden go routine (:
d7a3a2e to
a12c79e
Compare
bwplotka
approved these changes
Jun 6, 2019
cmd/thanos/receive.go
Outdated
| func() error { | ||
| if err := webHandler.Run(ctx); err != nil { | ||
| if err := webHandler.Run(); err != nil { | ||
| return fmt.Errorf("error starting web server: %s", err) |
Member
There was a problem hiding this comment.
errors.Wrap instead, also I am 90% sure Run will never return nil error (: Not a blocker.
| func (h *Handler) Quit() <-chan struct{} { | ||
| return h.quitCh | ||
| // Close stops the Handler. | ||
| func (h *Handler) Close() { |
Currently, the receive component blocks indefinitely when the Thanos process is interrupted because the given context is not actually used to stop the server.
Member
|
Thanks! lgtm 👍 |
FUSAKLA
pushed a commit
to FUSAKLA/thanos
that referenced
this pull request
Jun 8, 2019
Currently, the receive component blocks indefinitely when the Thanos process is interrupted because the given context is not actually used to stop the server.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
Currently, the receive component blocks indefinitely when the Thanos
process is interrupted because the given context is not actually used
to stop the server.
Verification
cc @brancz @bwplotka