-
Notifications
You must be signed in to change notification settings - Fork 35
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
Replaces the consensus module with Bifrost #1253
Conversation
086070c
to
aa0be91
Compare
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.
Very nicely executed. Very impressive work. Feel free to follow up on future PRs to unblock. Also, this needs to be rebased on #1256.
header, | ||
Command::InvokerEffect(invoker_output), | ||
)) | ||
.await?; |
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.
Same comment about handling bifrost failures and crashing the node.
aa0be91
to
66b0d75
Compare
Rebased onto #1256. Will address the review feedback as a next step. Thanks a lot for it @AhmedSoliman. |
Rebasing the PR onto the latest |
66b0d75
to
720077f
Compare
Moving the logic of command application into an inner struct separates a bit better the leadership acquisition logic and the command application.
720077f
to
c31bd06
Compare
Rebased on latest master and fixed a few bugs which made the e2e tests fail. Now they should pass. I will now address your comments, Ahmed. |
c31bd06
to
509ecbb
Compare
This commit removes the in-memory channel from which the PartitionProcessor receives messages from the Consensus module with Bifrost. This makes the PartitionProcessor independent of the Consensus module.
This commit replaces the in-memory channels with Bifrost in the Shuffle component.
By letting the AdminSerivce directly write messages to Bifrost, we can remove the Worker services.
By letting the ingress-dispatcher directly write to Bifrost, we no longer need the in-memory network channel.
With the introduction of Bifrost, we are no longer acking the reception of messages.
The dedup information is now sent as part of the destination field of the header. Therefore, these fields are no longer needed.
We are now sending dedup information as part of the destination field of the header. Therefore, the sequence_number field is no longer needed.
…oglet An Lsn::INVALID with base Lsn::OLDEST should translate into LogletOffset::INVALID instead of LogletOffset::OLDEST. The MemoryLoglet needs to add 1 to its index because the underlying array index is 0-based.
During Worker construction metadata() has not been properly initialized.
Until we go distributed there will be exactly one PartitionProcessor per log which can become leader when it starts.
…omponents This commit removes the with_bifrost function as it turned out to be more confusing than helping. Passing the Bifrost dependency explicitly to the components that need it turned out to be a lot simpler and easier to understand.
509ecbb
to
888a86a
Compare
Since we are no longer requiring to flush writes to RocksDB, the existing batching mechanism might no longer needed. Moreover, it adds complexity which could be avoided until we assert that batching of commands has a measurable impact on Restate's performance. Until then and in order to make the future development a bit easier, we remove it.
888a86a
to
d1d9f87
Compare
This PR is currently based on #1250.
Important: With this PR we are temporarily losing durability because we are only relying on the
MemoryLoglet
.I will add a more thorough description soon.