-
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
Remove separate storage nodes #4308
Conversation
03663e9
to
0669c4c
Compare
0669c4c
to
8bc8ebf
Compare
Codecov Report
@@ Coverage Diff @@
## master #4308 +/- ##
==========================================
- Coverage 68.85% 68.83% -0.02%
==========================================
Files 413 414 +1
Lines 47070 46309 -761
==========================================
- Hits 32408 31879 -529
+ Misses 10681 10516 -165
+ Partials 3981 3914 -67
Continue to review full report at Codecov.
|
dae76c9
to
0b5b852
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.
There appears to be some terminology inconsistency between compute and executor. Should this be unified to the latter?
@@ -504,20 +492,6 @@ func VerifyRegisterNodeArgs( // nolint: gocyclo | |||
return nil, nil, fmt.Errorf("%w: expiration period greater than allowed", ErrInvalidArgument) | |||
} | |||
|
|||
// Make sure that a node has at least one valid role. |
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.
Note: This was moved to node.ValidateBasic
ErrTxnSchedSigInvalid = p2pError.Permanent(errors.New(moduleName, 12, "roothash/commitment: txn scheduler signature invalid")) | ||
ErrInvalidMessages = p2pError.Permanent(errors.New(moduleName, 13, "roothash/commitment: invalid messages")) | ||
ErrBadStorageReceipts = errors.New(moduleName, 14, "roothash/commitment: bad storage receipts") | ||
// Error code 12 is reserved for future use. |
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.
Reserved for future use, or reserved to never be used again? I guess we can reuse them after the next upgrade...
a138445
to
73df582
Compare
Previously compute was a "super role" that a node would register for and the scheduler would then elect into subroles like executor, txnscheduler, merge but with the changed architecture compute basically equals executor (merge has been gone for a while and txnscheduler now rotates within the executor committee). |
73df582
to
b3b669c
Compare
It is no longer used anywhere and should be removed.
Previously this used a whole common committee node for each client runtime that was using the key manager.
104d350
to
2499ebb
Compare
c62a630
to
27a21ce
Compare
b4021fc
to
5f0194c
Compare
Multiple runs of long-term tests seem to pass now, running one more on the latest commit. |
The cache is populated when the pool is cleared and is only used when resolving known batches for faster resolution after epoch transitions.
5f0194c
to
4a9c33f
Compare
Latest long-term test run has been successful. |
This removes the separate storage committee and makes all compute nodes always imply storage as well. A notion of runtime mode is introduced which can be one of none, compute, keymanager, client and client-stateless. Storage receipts are removed and executor commitments are used as storage availability commitments as well. An additional Byzantine scenario is added where a faulty proposer generates bogus batches by including transactions that nobody else has.
The structure of proposals is changed so that executor workers don't need to download transactions again, but instead use the existing P2P transaction dispatch mechanism.
Also fixes #3905.
Note that this change is consensus-breaking since it changes the committee scheduler and registry.
TODO
Explicit transaction requests for peers in case of missing transaction hashes.