-
Notifications
You must be signed in to change notification settings - Fork 4.4k
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
Time based last_id for banks #1405
Comments
Proposal 2 looks great. Also consider defining zero transactions to mean "tick". |
My (perhaps naive) concern is that this may prevent an EntryData from representing a batch of transactions that can be executed in parallel. |
Seems like a reasonable concern. If it's time to rotate leaders, I think the current leader would prefer to split the tx batch to squeeze them in and take the fees. Otherwise, I think the leader would simply write the Tick and then write full batch just after. |
I wasn't thinking economically, I was just saying that between this issue, mt_bank, and the proposal in #950 I don't understand how transactions are batched for parallel verification in validators. Perhaps this is a non-issue, now? |
@rob-solana an entry cannot contain non parallizable transactions. #950 ensures that as well |
proposal 2 with an empty transaction vector is exactly the definition of Entry today, right? |
@rob-solana yea, it would be super easy to just use |
"the flag", do you mean the predicate for whether to call register_entry_id? |
another concern: the meaning of "bank.last_id()" is used in tests everywhere, and we'd be changing that? |
|
means that those chaining tests need to add their own calls to register_entry_id(), because there's no banking stage... |
Fixed in #1441 |
…solana-labs#1405) Bumps [@babel/node](https://github.com/babel/babel/tree/HEAD/packages/babel-node) from 7.13.0 to 7.13.10. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.13.10/packages/babel-node) Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The bank's last_id queue is based on number or entries that have passed through the bank's pipeline. Because of stalls its really easy to generate more entries then there are slots in the queue, and because of stalls the queue no longer represents a uniform passage of time.
This is pretty obvious in just the banking stage bencher
The verified chunks loop can easily blow through the last_id queue before all the transactions have been processed.
I think that the bank's last_ids should only come from PoH Tick events, and not data entries. Which means that verifiers that are replaying the ledger should only register entries that represent Tick events.
Proposal 1
Proposal 2
@garious @rob-solana what do you think?
The text was updated successfully, but these errors were encountered: