-
Notifications
You must be signed in to change notification settings - Fork 106
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
go/worker/txnscheduler: Support multiple txnscheduler workers #3184
Conversation
f90d071
to
99460e4
Compare
88f703b
to
ddb3838
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.
One thing to note, the commitment pool (pool.go
) needs to make sure that the batch was proposed by the leader at the time the first commitment was received. I don't see any modifications to the consensus code here.
416796c
to
43fc3d4
Compare
Codecov Report
@@ Coverage Diff @@
## master #3184 +/- ##
==========================================
+ Coverage 67.45% 67.46% +0.01%
==========================================
Files 380 371 -9
Lines 36474 36107 -367
==========================================
- Hits 24603 24361 -242
+ Misses 8701 8580 -121
+ Partials 3170 3166 -4
Continue to review full report at Codecov.
|
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.
So this removes the transaction scheduler worker but not the transaction scheduler committee? There is no need for a separate committee AFAIK, it makes more sense that one of the executor nodes is the transaction scheduler (proposer).
yeah but removing the committee will be straightforward so i left it for after i have the rest done :-) |
43fc3d4
to
24b1dfb
Compare
4b6f595
to
cf072ef
Compare
go/worker/compute/executor/committee/txnscheduling/algorithm/batching/batching.go
Outdated
Show resolved
Hide resolved
90e4f15
to
0bf97c0
Compare
a3924b5
to
cced41b
Compare
5428c9b
to
866e82a
Compare
866e82a
to
4bf8ee4
Compare
go/runtime/scheduling/api/api.go
Outdated
// Initialize initializes the internal transaction scheduler state. | ||
// Algorithm should use the provided transaction dispatcher to dispatch | ||
// scheduled transactions. | ||
// Scheduler defines an algorithm for scheduling incoming transaction. |
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.
// Scheduler defines an algorithm for scheduling incoming transaction. | |
// Scheduler defines an algorithm for scheduling incoming transactions. |
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.
Was this reverted, I remember this was already fixed :-)
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.
Yeah me to 🤔
78f9f41
to
e71147d
Compare
58a905b
to
202b578
Compare
202b578
to
a44b64f
Compare
Did some more (minor) changes see: 5738d83 (in a separate commit for now, for easier review) |
511d8cb
to
1de4b3b
Compare
go/runtime/scheduling/api/api.go
Outdated
// Initialize initializes the internal transaction scheduler state. | ||
// Algorithm should use the provided transaction dispatcher to dispatch | ||
// scheduled transactions. | ||
// Scheduler defines an algorithm for scheduling incoming transaction. |
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.
Was this reverted, I remember this was already fixed :-)
1de4b3b
to
72a48ae
Compare
Transaction scheduling committee is removed and the transaction scheduler worker is merged into the executor. Transaction scheduling gRPC service is removed and runtime transaction submission is now done via libp2p's gossipsub. Each active executor worker now also acts as a transaction scheduler. Each round one of the executors acts as the scheduler and is expected to propose a batch for scheduling. Nodes switch between schedulers in round robin fashion.
72a48ae
to
16499ba
Compare
Really thanks for all the great reviews @kostko ! |
Fixes: #1654
Fixes: #1677
Adds support for multiple txnschedulers in runtime committees:
added- txnschedulers switch between leaders in round-robin fashion (switching on each runtime round)LeadersInterval
runtime parameterTODO:
add support for roothash timeout in case the current leader is not submitting batches- open issue, will handle in separate PR