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

services/horizon: Update asset stats processor to ingest new restoration meta #5611

Merged
merged 13 commits into from
Feb 27, 2025

Conversation

tamirms
Copy link
Contributor

@tamirms tamirms commented Feb 24, 2025

PR Checklist

PR Structure

  • This PR has reasonably narrow scope (if not, break it down into smaller PRs).
  • This PR avoids mixing refactoring changes with feature changes (split into two PRs
    otherwise).
  • This PR's title starts with name of package that is most changed in the PR, ex.
    services/friendbot, or all or doc if the changes are broad or impact many
    packages.

Thoroughness

  • This PR adds tests for the most critical parts of the new functionality or fixes.
  • I've updated any docs (developer docs, .md
    files, etc... affected by this change). Take a look in the docs folder for a given service,
    like this one.

Release planning

  • I've reviewed the changes in this PR and if I consider them worthwhile for being mentioned on release notes then I have updated the relevant CHANGELOG.md within the component folder structure. For example, if I changed horizon, then I updated (services/horizon/CHANGELOG.md. I add a new line item describing the change and reference to this PR. If I don't update a CHANGELOG, I acknowledge this PR's change may not be mentioned in future release notes.
  • I've decided if this PR requires a new major/minor version according to
    semver, or if it's mainly a patch change. The PR is targeted at the next
    release branch if it's not a patch change.

What

Fixes #5422 , #5599

This PR updates the asset stats processor to handle the new restoration meta which will be introduced in the upcoming stellar-core v23 release (see stellar/stellar-core#4623 ). The protocol 23 release will also implement eviction of archived ledger entries. The only ingestion processor in Horizon which ingests ledger entries which can be archived / evicted is the asset stats processor.

Now, we no longer store asset stats for archived contract balances. Instead, we immediately delete contract balances from the horizon db as soon as the ttl expires. This allows us to ignore the eviction meta as the ledger entry no longer exists in the horizon db by the time it is evicted.

This PR also adds a runtime check to assert that the stellar-core binary supports protocol 23. This check is necessary because we don't want to maintain support for both protocol 23 and protocol 21 / 22 versions of restoration meta (see #5599 for more details).

Known limitations

There is no integration test which exercises eviction because we still need a stellar rpc docker image which supports protocol 23 before we can run protocol 23 integration tests. Once that docker image is available, we create another PR that adds an eviction integration test.

However, the restoration meta is still exercised in the integration tests because I have updated the integration tests to use the experimental core build ( stellar/unsafe-stellar-core:22.1.1-2291.a50f3f919.focal-do-not-use-in-prd ) which implements the new restoration meta in all protocol versions.

@tamirms tamirms marked this pull request as ready for review February 25, 2025 10:56
@tamirms tamirms requested a review from a team February 25, 2025 11:01
@tamirms tamirms mentioned this pull request Feb 26, 2025
7 tasks
@tamirms tamirms merged commit c975765 into stellar:protocol-23 Feb 27, 2025
21 checks passed
@tamirms tamirms deleted the asset-stats branch February 27, 2025 12:27
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.

2 participants