-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Update stage_finish.go : notifications to rpc daemon #2755
Conversation
Only notify for canonical header obtained from last Finish
It's incompatible with docs: https://geth.ethereum.org/docs/rpc/pubsub |
I'm not arguing but willing to understand. From the specs
Due to Erigon's stage structure is inevitable, particularly on stage cycle 0, all notifications of headers before the very last (the one recorded in Finish) are "past" events.
During first 2 or 3 cycles of a sync from scratch we might well send out more than 10k notifications. Maybe we can send out notifications for all processed headers only if Waiting for your comments |
“send out notifications for all processed headers only if notifyTo - notifyFrom < 1024” i like this logic. |
- early exit if notification channel is not set - change wording
@AskAlexSharov question ... do we really need to pass NotifyHeaders this |
Also ... |
It will do zero-copy broadcast (zero marshal/unmarshal) from db to network of canonical and non-canonical headers from
|
Not sure I understand this. Doesn't RPC Daemon need to be notified of highest canonical header(s) only ? |
Docs says https://geth.ethereum.org/docs/rpc/pubsub: newHeads Fires a notification each time a new header is appended to the chain, including chain reorganizations. Users can use the bloom filter to determine if the block contains logs that are interested to them. In case of a chain reorganization the subscription will emit all new headers for the new chain. Therefore the subscription can emit multiple headers on the same height. |
I still think having 1024 as limit does make sense. |
1024 or 8096 like |
I'm ok with re-using |
I did my best (my GO skills are at "Hello World" level)
I did not dare to change the signature of Please take a look ... and don't be frightened to be rude :D |
Thank you!
|
Another way to print is subscribe to RPCDaemon as a client. For example:
rpcdaemon must have --ws flag to enable websocker |
* begin 2021.10.2 release cycle * Revert "rpcdaemon: (#2752)" (#2762) This reverts commit 2afd028. * Pool v2: --txpool.pricelimit support (#2763) * --txpoo.pricelimit support * Pool v2: --txpool.accountslots flag support (#2765) * Update signal_windows.go (#2767) Trap os.interrupt instead of SIGINT and SIGTERM * Update stage_finish.go : notifications to rpc daemon (#2755) * Dockerfile: switch to go1.17 and alpine3.14 (#2766) * add logs in recoverFromDb func (#2769) * eip 1559 in miner (#2773) * Inner errors (#2774) * Clean up DEBUG category logs (#2776) - move many DEBUG logs into TRACE category * Decoding incarnation implemented (#2764) * WIP decoding incarnation specifically * Changed decodeIncarnation to be an external function * added tests to for decoding incarnations * ran gofmt -w -s * changed test name, and changed incarnations to 4 * Created a test which tests if it returns an error when there is one * ran gofmt * Capitalized all tests and made breaking test * added an error check * changed decodingForStorage for decodingIncarnationFromStorage * ran gofmt -w -s * No senders is fine (#2775) * IntermediateHash stage - switch from incremental to re-generate mode - if jump > 100K blocks (#2781) * Enable "State stream" by default (#2780) * No json rpc streaming (#2779) * reduce_bach_concurrency_default * RPCDaemon: reduce --rpc.batch.concurrency default from 50 to 2 (#2784) * Integration to print right stage in logs (#2785) * remove debug prints * RemoteDB: don't spend time to close cursors on end of tx - server will cleanup everything well (#2786) * Fermion genesis block (#2787) * updated Fermion genesis block * Updated Fermion genesis block: added precompiles * Rpcdaemon: add --tevm flag to enable experiment (#2788) * Reworkings of state compression experiments (#2790) * Changes * Progress * Another way * More * More * Produce encoding * Add uncoded characters * cleanup * Add sortdict * Fixes * Use patricia from erigon-lib * Cleanup * Switch to dynamic programming, optimise allocations in FindMatches * Optimise allocations * Reduce allocations * Switch to main branch of erigon-lib, reduce allocations further Co-authored-by: Alexey Sharp <[email protected]> Co-authored-by: Alex Sharp <[email protected]> * Ignore MaxPeers param for staticpeers (#2789) Co-authored-by: Aleksandr Borodulin <[email protected]> * less warnings * Update skip_analysis.go (#2792) * Extend preverified hashes for mainnet and ropsten (#2793) Co-authored-by: Alexey Sharp <[email protected]> Co-authored-by: Alex Sharov <[email protected]> Co-authored-by: Andrea Lanfranchi <[email protected]> Co-authored-by: Enrique Jose Avila Asapche <[email protected]> Co-authored-by: e-danko <[email protected]> Co-authored-by: ledgerwatch <[email protected]> Co-authored-by: Alexey Sharp <[email protected]> Co-authored-by: Alex Sharp <[email protected]> Co-authored-by: Alexandr Borodulin <[email protected]> Co-authored-by: Aleksandr Borodulin <[email protected]>
Only notify for canonical header obtained from last Finish.
Imho this should be enough. But review !!