-
Notifications
You must be signed in to change notification settings - Fork 502
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/ingest: Batch Offers insert/updates #3917
Conversation
This commit adds a new `UpsertOffers` method (and generic `upsertRows`) and modifies `OffersProcessor` to use it. The performance of `OffersProcessor` degraded recently due to number of offers in the network and batching updates should improve the performance of the processor and ingestion overall.
@@ -14,8 +14,7 @@ type QOffers interface { | |||
GetOffersByIDs(ctx context.Context, ids []int64) ([]Offer, error) | |||
CountOffers(ctx context.Context) (int, error) | |||
GetUpdatedOffers(ctx context.Context, newerThanSequence uint32) ([]Offer, error) | |||
NewOffersBatchInsertBuilder(maxBatchSize int) OffersBatchInsertBuilder | |||
UpdateOffer(ctx context.Context, offer Offer) (int64, error) | |||
UpsertOffers(ctx context.Context, offers []Offer) error | |||
RemoveOffers(ctx context.Context, offerIDs []int64, lastModifiedLedger uint32) (int64, error) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RemoveOffers
can be replaced by UpsertOffers
(since a removal is implemented by a tombstone which be set with UpserOffers
).
This would save us (up to) a query in each offers processor iteration.
CC @bartekn
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to keep it separated for the reasons explained in #3944 (comment).
PR Checklist
PR Structure
otherwise).
services/friendbot
, orall
ordoc
if the changes are broad or impact manypackages.
Thoroughness
.md
files, etc... affected by this change). Take a look in the
docs
folder for a given service,like this one.
Release planning
needed with deprecations, added features, breaking changes, and DB schema changes.
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
This commit adds a new
UpsertOffers
method (and genericupsertRows
) and modifiesOffersProcessor
to use it.Close #3913.
Why
The performance of
OffersProcessor
degraded recently due to number of offers in the network and batching updates should improve the performance of the processor and ingestion overall.Known limitations
The other processors should probably switch to
upsertRows
methods. This can be done in a separate PR.