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 automatic event pruning #2460

Merged
merged 2 commits into from
May 7, 2024
Merged

Conversation

frederikrothenberger
Copy link
Member

@frederikrothenberger frederikrothenberger commented May 7, 2024

This PR adds automatic event pruning using timers and self-calls (to enable retries on failure).

In normal operation automatic event pruning should not be needed. However, if II stops processing prepare_delegation canister calls for some reason for an extended period of time then the backlog of events that need pruning will grow.

To make sure that II can process this backlog, PruneEvents are injected if the latest event is older than 5 minutes. If the backlog is too large to be processed in a single canister call, then II will fall back to smaller time windows until it becomes processable.

This PR adds automatic event pruning using timers and self-calls (to
enable retries on failure).

In normal operation automatic event pruning should not be needed.
However, if II stops processing `prepare_delegation` canister calls for
some reason for an extended period of time then the backlog of events
that need pruning will grow.

To make sure that II can process this backlog, `PruneEvents` are injected
if the latest event is older than 5 minutes. If the backlog is too large
to be processed in a single canister call, then II will fall back to
smaller time windows until it becomes processable.
Copy link
Collaborator

@lmuntaner lmuntaner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! We discussed the bulk of the logic change online.

@frederikrothenberger frederikrothenberger added this pull request to the merge queue May 7, 2024
Merged via the queue into main with commit 71113f3 May 7, 2024
65 checks passed
@frederikrothenberger frederikrothenberger deleted the frederik/inject-cleanup branch May 7, 2024 15:25
frederikrothenberger added a commit that referenced this pull request May 8, 2024
A bug was introduced in #2460 that did not correctly restart timers
after an upgrade.
This PR simplifies the initialization to share more code and adds
a test to catch this bug in the future.
frederikrothenberger added a commit that referenced this pull request May 8, 2024
A bug was introduced in #2460 that did not correctly restart timers
after an upgrade.
This PR simplifies the initialization to share more code and adds
a test to catch this bug in the future.
frederikrothenberger added a commit that referenced this pull request May 8, 2024
A bug was introduced in #2460 that did not correctly restart timers
after an upgrade.
This PR simplifies the initialization to share more code and adds
a test to catch this bug in the future.
github-merge-queue bot pushed a commit that referenced this pull request May 8, 2024
* Simplify II init

A bug was introduced in #2460 that did not correctly restart timers
after an upgrade.
This PR simplifies the initialization to share more code and adds
a test to catch this bug in the future.

* Assert expected state before upgrade
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