-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
routing: persistent mission control #3164
Conversation
06997c0
to
222e395
Compare
f5a1dc7
to
215f2d3
Compare
8681348
to
69cc375
Compare
e10b03b
to
6207be7
Compare
This commit prepares for timestamps being supplied from the database for processing of historical payment results.
This commit groups together all payment result data. It is a preparation for historical payment results being retrieved from the database.
84d123a
to
c9d2d8e
Compare
c9d2d8e
to
5a4b1b3
Compare
for b.numRecords >= b.maxRecords { | ||
cursor := bucket.Cursor() | ||
cursor.First() | ||
if err := cursor.Delete(); err != nil { |
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.
in the past i think we observed a performance issue in calling First()
then Delete()
repetitively, since it actually results in a quadratic operation. fortunately i think we only expect this to be called once here, but something to keep in mind in the future. @Roasbeef was this not one of the root causes in that migration performance issue?
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.
Ok interesting. Yes, it is expected to be called only once.
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.
IIRC, in that case, we would have repeated calls to Delete()
, then First()
, as Delete
would move the cursor one record after the deleted key. We ended up resolving it by using a two pass approach: 974ec02#diff-99f3013528876f55a0e46ff7014e8a19
5a4b1b3
to
7e7b620
Compare
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.
LGTM 💯
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.
LGTM 🥨
for b.numRecords >= b.maxRecords { | ||
cursor := bucket.Cursor() | ||
cursor.First() | ||
if err := cursor.Delete(); err != nil { |
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.
IIRC, in that case, we would have repeated calls to Delete()
, then First()
, as Delete
would move the cursor one record after the deleted key. We ended up resolving it by using a two pass approach: 974ec02#diff-99f3013528876f55a0e46ff7014e8a19
This PR adds persistence to mission control by storing the raw payment results and reprocessing them on startup.