-
Notifications
You must be signed in to change notification settings - Fork 107
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
Stacks API Event Replay Procedure does not Succeed #1879
Comments
@AshtonStephens @wileyj GM. I can check this issue, as well, since I've worked on this event-replay implementation. Thanks! |
Its not the end of the world that it takes 16Gb for the event replay, but it would be really nice if it didn't. I think you could have pandas output the files as it goes as opposed to in one fell swoop. |
## [7.10.0-nakamoto.1](v7.9.0...v7.10.0-nakamoto.1) (2024-03-21) ### Features * add signer-keys from pox4 events ([#1857](#1857)) ([c17ad23](c17ad23)) * ingest signer_bitvec ([#1900](#1900)) ([aa1750f](aa1750f)) * nakamoto block timestamps ([#1886](#1886)) ([f547832](f547832)) * pox 4 revoke events and signer-key support ([#1829](#1829)) ([5e5650a](5e5650a)), closes [#1849](#1849) * pox stacker & signer cycle details ([#1873](#1873)) ([d2c2805](d2c2805)) ### Bug Fixes * event-replay readiness for nakamoto & fix for [#1879](#1879) ([#1903](#1903)) ([1572e73](1572e73)) * remove signer columns from tenure-change transactions ([#1845](#1845)) ([8ec726b](8ec726b)) * sql transactional consistency bug with fetching chaintip in various areas ([#1853](#1853)) ([ada8536](ada8536))
## [7.10.0-beta.1](v7.9.0...v7.10.0-beta.1) (2024-03-21) ### Features * add signer-keys from pox4 events ([#1857](#1857)) ([c17ad23](c17ad23)) * ingest signer_bitvec ([#1900](#1900)) ([aa1750f](aa1750f)) * nakamoto block timestamps ([#1886](#1886)) ([f547832](f547832)) * pox 4 revoke events and signer-key support ([#1829](#1829)) ([5e5650a](5e5650a)), closes [#1849](#1849) * pox stacker & signer cycle details ([#1873](#1873)) ([d2c2805](d2c2805)) ### Bug Fixes * event-replay readiness for nakamoto & fix for [#1879](#1879) ([#1903](#1903)) ([1572e73](1572e73)) * remove signer columns from tenure-change transactions ([#1845](#1845)) ([8ec726b](8ec726b)) * sql transactional consistency bug with fetching chaintip in various areas ([#1853](#1853)) ([ada8536](ada8536))
The work behind this event-replay implementation was to make it fast. So, to achieve that there is a tradeoff between computer resources usage and speed. Previous versions was taken days to finish. Some improvements that were made:
To validate those changes, the file https://archive.hiro.so/testnet/stacks-blockchain-api/testnet-stacks-blockchain-api-latest.gz was used and the event-replay process has finished with success in a Apple M1 Max with 64GB of RAM. The suggestions above will be taken into consideration in improvements to the event-replay process. Thanks. @AshtonStephens @wileyj please, fee free to reach out if anything else is need. |
## [7.10.0](v7.9.1...v7.10.0) (2024-04-15) ### Features * add nakamoto block time to v2 endpoints ([#1921](#1921)) ([ae6bbe8](ae6bbe8)) * add signer-keys from pox4 events ([#1857](#1857)) ([c17ad23](c17ad23)) * ingest signer_bitvec ([#1900](#1900)) ([aa1750f](aa1750f)) * nakamoto block timestamps ([#1886](#1886)) ([f547832](f547832)) * pox 4 revoke events and signer-key support ([#1829](#1829)) ([5e5650a](5e5650a)), closes [#1849](#1849) * pox stacker & signer cycle details ([#1873](#1873)) ([d2c2805](d2c2805)) * rosetta pox4 stacking support ([#1928](#1928)) ([2ba36f9](2ba36f9)), closes [#1929](#1929) ### Bug Fixes * add nakamoto testnet to openapi docs ([#1910](#1910)) ([01fb971](01fb971)) * batch drop mempool transactions ([#1920](#1920)) ([a7ee96d](a7ee96d)) * cycle signer filter ([#1916](#1916)) ([dc7d600](dc7d600)) * cycles response for empty cycle info ([#1914](#1914)) ([a7a4558](a7a4558)) * delegate-stx burn-op parsing and test fix ([#1939](#1939)) ([73ec0db](73ec0db)) * event-replay readiness for nakamoto & fix for [#1879](#1879) ([#1903](#1903)) ([1572e73](1572e73)) * log message when sql migration is performed ([#1942](#1942)) ([49a4d25](49a4d25)) * other empty result responses ([#1915](#1915)) ([3cd2c64](3cd2c64)) * pox4 stack-stx burn-op handling ([#1936](#1936)) ([9e9a464](9e9a464)) * remove signer columns from tenure-change transactions ([#1845](#1845)) ([8ec726b](8ec726b)) * sql transactional consistency bug with fetching chaintip in various areas ([#1853](#1853)) ([ada8536](ada8536))
## [7.10.0-beta.1](v7.9.1...v7.10.0-beta.1) (2024-04-15) ### Features * add nakamoto block time to v2 endpoints ([#1921](#1921)) ([ae6bbe8](ae6bbe8)) * add signer-keys from pox4 events ([#1857](#1857)) ([c17ad23](c17ad23)) * ingest signer_bitvec ([#1900](#1900)) ([aa1750f](aa1750f)) * nakamoto block timestamps ([#1886](#1886)) ([f547832](f547832)) * pox 4 revoke events and signer-key support ([#1829](#1829)) ([5e5650a](5e5650a)), closes [#1849](#1849) * pox stacker & signer cycle details ([#1873](#1873)) ([d2c2805](d2c2805)) * rosetta pox4 stacking support ([#1928](#1928)) ([2ba36f9](2ba36f9)), closes [#1929](#1929) * support multiple STX faucet source accounts ([#1946](#1946)) ([5d69c7c](5d69c7c)) ### Bug Fixes * add nakamoto testnet to openapi docs ([#1910](#1910)) ([01fb971](01fb971)) * batch drop mempool transactions ([#1920](#1920)) ([a7ee96d](a7ee96d)) * cycle signer filter ([#1916](#1916)) ([dc7d600](dc7d600)) * cycles response for empty cycle info ([#1914](#1914)) ([a7a4558](a7a4558)) * delegate-stx burn-op parsing and test fix ([#1939](#1939)) ([73ec0db](73ec0db)) * event-replay readiness for nakamoto & fix for [#1879](#1879) ([#1903](#1903)) ([1572e73](1572e73)) * log message when sql migration is performed ([#1942](#1942)) ([49a4d25](49a4d25)) * other empty result responses ([#1915](#1915)) ([3cd2c64](3cd2c64)) * pox4 stack-stx burn-op handling ([#1936](#1936)) ([9e9a464](9e9a464)) * remove signer columns from tenure-change transactions ([#1845](#1845)) ([8ec726b](8ec726b)) * sql transactional consistency bug with fetching chaintip in various areas ([#1853](#1853)) ([ada8536](ada8536))
Describe the bug
Stacks API event replay procedure cannot complete.
To Reproduce
Steps to reproduce the behavior:
Below is a script that does the majority of what I did, minus some initial installation. I did not check whether this script works but it's fully representative of what I did, including the environment. The only difference is I made a separate fork with two changes that I elaborate on below.
What you'll likely see:
One bug I found in this process is here: https://github.com/hirosystems/stacks-blockchain-api/blob/develop/src/event-replay/parquet-based/importers/new-block-importer.ts#L87, where the API should not be batching 1400 Txs. It looks like these each turn into more than 46 parameters to the SQL database, meaning that this number exceeds the maximum parameter count of
65534
.Below is the error, but changing the line I highlighted to 500 Fixes it for the time being.
There are some other issues as well, some with duckdb, but after upgrading to version
0.10.0
(latest) of duckdb that went away. Maybe that's a problem but the program progressed after I upgraded so I suspect it's fine.But once all the other errors went away we now get this error:
The program has 29Gb of Ram available to it on a 32Gb Ram machine. I could get a 64Gb machine going, but at this point I suspect there is something else is going wrong. It might make sense to include running the event replay procedure to some local testing steps so that this is easier to run when Nakamoto releases.
Expected behavior
We should be able to run the API and ingest the event archive in the way listed in the docs.
Additional context
This is needed to run part of a potential Nakamoto debugging environment, and is the only current part of the network that is failing to start up. It would be great if we could get this fixed in the very near future.
The text was updated successfully, but these errors were encountered: