-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
storage/raft_transport: use a separate queue for each message type #7299
Conversation
Review status: 0 of 1 files reviewed at latest revision, 1 unresolved discussion, some commit checks pending. storage/raft_transport.go, line 218 [r1] (raw file):
Remove this comment now that it's just a single error. Comments from Reviewable |
Nice! I see no unmarshal errors on any nodes using a custom build with your changes thus far. Previously, it was trivial to trigger this error with substantial snapshot load. |
Great! Now if only I could figure out why TestSendAndReceive is hanging... |
What is the change here that makes the error go away? Is code like this the problem? stream1, _ := client.RaftMessage(ctx)
stream2, _ := client.RaftMessage(ctx)
// use stream{1,2} concurrently |
Nah, it's that we were using stream2 concurrently - each snapshot was in an async task on the same stream. |
gotcha, thanks. On Thu, Jun 16, 2016 at 10:54 PM Tamir Duberstein [email protected]
-- Tobias |
OK, this is ready for another look. |
Review status: 0 of 2 files reviewed at latest revision, 1 unresolved discussion, some commit checks pending. storage/raft_transport.go, line 218 [r1] (raw file):
|
Review status: 0 of 2 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. storage/raft_transport.go, line 175 [r2] (raw file):
Why are you going back to always calling storage/raft_transport.go, line 222 [r2] (raw file):
This assumes that there's never a case where two goroutines are trying to stream the same type of Raft message to the same node. Is that true in practice? Comments from Reviewable |
Review status: 0 of 2 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. storage/raft_transport.go, line 175 [r2] (raw file):
|
Review status: 0 of 2 files reviewed at latest revision, 4 unresolved discussions, all commit checks successful. storage/raft_transport.go, line 76 [r2] (raw file):
Previously we were using one queue for
And then access it as Comments from Reviewable |
Review status: 0 of 2 files reviewed at latest revision, 4 unresolved discussions, all commit checks successful. storage/raft_transport.go, line 76 [r2] (raw file):
|
Review status: 0 of 2 files reviewed at latest revision, 4 unresolved discussions, all commit checks successful. storage/raft_transport.go, line 76 [r2] (raw file):
|
Review status: 0 of 2 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. storage/raft_transport.go, line 222 [r2] (raw file):
|
Review status: 0 of 2 files reviewed at latest revision, 3 unresolved discussions. storage/raft_transport.go, line 76 [r2] (raw file):
|
Review status: 0 of 2 files reviewed at latest revision, 3 unresolved discussions, some commit checks failed. Comments from Reviewable |
Review status: 0 of 2 files reviewed at latest revision, 2 unresolved discussions, some commit checks failed. Comments from Reviewable |
Review status: 0 of 2 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. storage/raft_transport.go, line 76 [r2] (raw file):
|
Review status: 0 of 2 files reviewed at latest revision, 3 unresolved discussions, some commit checks pending. storage/raft_transport.go, line 76 [r2] (raw file):
|
@cuongdo can you try this to see if it mitigates #7258? If it does, I'll clean the code up some before merging.
This change is