Skip to content
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

No json rpc streaming #2779

Merged
merged 29 commits into from
Oct 5, 2021
Merged

No json rpc streaming #2779

merged 29 commits into from
Oct 5, 2021

Conversation

AskAlexSharov
Copy link
Collaborator

  • Drop feature of streaming json to network because JSON-RPC 2.0 is not ready for this. It's just impossible to return error which happened in the middle of stream and don't break JSON format.
  • But keep jsoniter.Stream itself - because it reducing allocations, allow use streams buffer pool, etc...

@AskAlexSharov AskAlexSharov merged commit ba9e2c0 into devel Oct 5, 2021
@AskAlexSharov AskAlexSharov deleted the no_json_rpc_streaming branch October 5, 2021 09:12
mandrigin added a commit that referenced this pull request Oct 7, 2021
* 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]>
@AskAlexSharov
Copy link
Collaborator Author

We decided to enable back streaming feature by default:

#4647 Erigon has enalbed json streamin for some heavy endpoints (like trace_*). It's treadoff: greatly reduce amount of RAM (in some cases from 30GB to 30mb), but it produce invalid json format if error happened in the middle of streaming (because json is not streaming-friendly format)

We decided that value from this streaming is higher than handling "error happen in the middle" rare corner case. But added flag: --rpc.streaming.disable if users wish to pay for correctnesses or compatibility.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant