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

Implement fast TXMeta #2550

Closed
14 of 19 tasks
ire-and-curses opened this issue May 5, 2020 · 2 comments
Closed
14 of 19 tasks

Implement fast TXMeta #2550

ire-and-curses opened this issue May 5, 2020 · 2 comments

Comments

@ire-and-curses
Copy link
Member

ire-and-curses commented May 5, 2020

This is the meta issue for the fast TXMeta project.

The goal is to decouple Horizon from the stellar-core database, remove the need for stellar-core to maintain txmeta internally, and allow Horizon to come up to date with historical ledger information quickly and easily.

"Offline mode" means the bulk replay mode where a captive stellar-core with in-memory ledger processing is used to generate historical txmeta very quickly.

"Online mode" means the current-ledger trickle mode where a captive stellar-core provides on-going ledger updates in real-time.

"FSC" means "fast stellar-core", a stellar-core instance running in-memory solely for the purpose of producing txmeta.

Offline mode

Online mode

  • Discuss whether we need online mode to run in-memory
  • Identify any needed work on stellar-core side and raise issues
  • Update interface to communicate bulk (offline) vs trickle (online) mode
  • Update prototype to support online mode
  • Produce a test demonstrating code can catch up offline and then switch to online mode
  • Confirm crash/restart works reliably during online mode (no corruption etc)
  • Identify how to implement transaction submission

Clustering

  • Remove requirement for front-end Horizon nodes to directly ingest to memory
  • Implement support for multiple online Horizon-FSC instances for redundancy

Packaging

  • Determine how to optimally package and distribute Horizon-FSC for ease of use

Cleanup

  • Remove Horizon accesses to stellar-core DB during ingestion
  • Remove stellar-core queries made from the txsub package for the case where Horizon is configured to ignore failed transactions (implement a short lived failed transactions cache in ingestion instead?) and transaction status is requested.
  • Clean up and remove all cursors and any vestigial code that accesses the stellar-core database.

Stretch goals (nice to have)

  • Implement XDR contract changes to allow partial ledger processing.
  • Fall back to sqlite for more modest hardware / very large ledgers
  • Confirm Horizon-FSC runs on Windows (Docker container sufficient)
@bartekn
Copy link
Contributor

bartekn commented Jul 22, 2020

Closing because all the items here are done, in separate issues or will be added later during a code cleanup stage.

@bartekn bartekn closed this as completed Jul 22, 2020
@ire-and-curses
Copy link
Member Author

So. Cool.

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

No branches or pull requests

2 participants