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

Don't mutate state through JobBackoffChecker #13041

Closed
Tracked by #12302
lenaschoenburg opened this issue Jun 9, 2023 · 0 comments · Fixed by #13402
Closed
Tracked by #12302

Don't mutate state through JobBackoffChecker #13041

lenaschoenburg opened this issue Jun 9, 2023 · 0 comments · Fixed by #13402
Assignees
Labels
component/engine kind/bug Categorizes an issue or PR as a bug version:8.3.0-alpha4 Marks an issue as being completely or in parts released in 8.3.0-alpha4 version:8.3.0 Marks an issue as being completely or in parts released in 8.3.0

Comments

@lenaschoenburg
Copy link
Member

lenaschoenburg commented Jun 9, 2023

Similar to #12797, the JobBackoffChecker also tries to cleanup backoffs:

https://github.com/camunda/zeebe/blob/d166007d8fee3fa6f112367ea595d35199807f4f/engine/src/main/java/io/camunda/zeebe/engine/state/instance/DbJobState.java#L308-L317

@lenaschoenburg lenaschoenburg self-assigned this Jun 9, 2023
@lenaschoenburg lenaschoenburg added kind/bug Categorizes an issue or PR as a bug component/engine labels Jun 9, 2023
zeebe-bors-camunda bot added a commit that referenced this issue Jul 14, 2023
13402: fix(engine): don't mutate state when checking for job backoffs r=oleschoenburg a=oleschoenburg

Remove sneaky state mutation when visiting jobs with expired backoffs. Instead, reliably cleanup backoff when recurring or deleting the job. When a backoff is found again before the first `RECUR_AFTER_BACKOFF` command is processed, another `RECUR_AFTER_BACKOFF` command is written. This is okay because on processing, we ignore jobs that no longer exist or that have a newer recurring time set.

Closes #13041 

Co-authored-by: Ole Schönburg <ole.schoenburg@gmail.com>
zeebe-bors-camunda bot added a commit that referenced this issue Jul 14, 2023
13402: fix(engine): don't mutate state when checking for job backoffs r=oleschoenburg a=oleschoenburg

Remove sneaky state mutation when visiting jobs with expired backoffs. Instead, reliably cleanup backoff when recurring or deleting the job. When a backoff is found again before the first `RECUR_AFTER_BACKOFF` command is processed, another `RECUR_AFTER_BACKOFF` command is written. This is okay because on processing, we ignore jobs that no longer exist or that have a newer recurring time set.

Closes #13041 

Co-authored-by: Ole Schönburg <ole.schoenburg@gmail.com>
zeebe-bors-camunda bot added a commit that referenced this issue Jul 14, 2023
13402: fix(engine): don't mutate state when checking for job backoffs r=oleschoenburg a=oleschoenburg

Remove sneaky state mutation when visiting jobs with expired backoffs. Instead, reliably cleanup backoff when recurring or deleting the job. When a backoff is found again before the first `RECUR_AFTER_BACKOFF` command is processed, another `RECUR_AFTER_BACKOFF` command is written. This is okay because on processing, we ignore jobs that no longer exist or that have a newer recurring time set.

Closes #13041 

Co-authored-by: Ole Schönburg <ole.schoenburg@gmail.com>
@megglos megglos added the version:8.3.0-alpha4 Marks an issue as being completely or in parts released in 8.3.0-alpha4 label Aug 2, 2023
lenaschoenburg added a commit that referenced this issue Aug 14, 2023
After an update from a previous version, both backoff and deadline
column families might contain entries without a corresponding job or
multiple entries for a single job. Before fixing #12797 and #13041,
these were cleaned up ad-hoc whenever they were found. This is no longer
the case because we now prevent the creation of duplicated entries and
always cleanup properly.
This adds two necessary migrations that remove orphaned entries that
were left by a previous version. The migrations run once and walk
through all deadline and backoff entries, removing those without a job
and duplicates which don't match the current job state.

The fixes for #13041 and
#13041 ensured that deadlines and
backoffs are not removed ad-hoc whenever the job no longer exists.
These two new migrations ensure that
lenaschoenburg added a commit that referenced this issue Aug 14, 2023
After an update from a previous version, both backoff and deadline
column families might contain entries without a corresponding job or
multiple entries for a single job. Before fixing #12797 and #13041,
these were cleaned up ad-hoc whenever they were found. This is no longer
the case because we now prevent the creation of duplicated entries and
always cleanup properly.
This adds two necessary migrations that remove orphaned entries that
were left by a previous version. The migrations run once and walk
through all deadline and backoff entries, removing those without a job
and duplicates which don't match the current job state.
zeebe-bors-camunda bot added a commit that referenced this issue Aug 15, 2023
13886: fix(engine): cleanup orphaned job timeouts and backoffs on migration r=koevskinikola a=oleschoenburg

After an update from a previous version, both backoff and deadline column families might contain entries without a corresponding job or multiple entries for a single job. 
Before fixing #12797 and #13041, these were cleaned up ad-hoc whenever they were found. This is no longer the case because we now prevent the creation of duplicated entries and always cleanup properly.

This adds two necessary migrations that remove orphaned entries that were left by a previous version. The migrations run once and walk through all deadline and backoff entries, removing those without a job and duplicates which don't match the current job state.

closes #13881

Co-authored-by: Ole Schönburg <ole.schoenburg@gmail.com>
Co-authored-by: Meggle (Sebastian Bathke) <sebastian.bathke@camunda.com>
lenaschoenburg added a commit that referenced this issue Aug 15, 2023
After an update from a previous version, both backoff and deadline
column families might contain entries without a corresponding job or
multiple entries for a single job. Before fixing #12797 and #13041,
these were cleaned up ad-hoc whenever they were found. This is no longer
the case because we now prevent the creation of duplicated entries and
always cleanup properly.
This adds two necessary migrations that remove orphaned entries that
were left by a previous version. The migrations run once and walk
through all deadline and backoff entries, removing those without a job
and duplicates which don't match the current job state.

(cherry picked from commit 1d82e6e)
lenaschoenburg added a commit that referenced this issue Aug 15, 2023
After an update from a previous version, both backoff and deadline
column families might contain entries without a corresponding job or
multiple entries for a single job. Before fixing #12797 and #13041,
these were cleaned up ad-hoc whenever they were found. This is no longer
the case because we now prevent the creation of duplicated entries and
always cleanup properly.
This adds two necessary migrations that remove orphaned entries that
were left by a previous version. The migrations run once and walk
through all deadline and backoff entries, removing those without a job
and duplicates which don't match the current job state.

(cherry picked from commit 1d82e6e)
lenaschoenburg added a commit that referenced this issue Aug 15, 2023
After an update from a previous version, both backoff and deadline
column families might contain entries without a corresponding job or
multiple entries for a single job. Before fixing #12797 and #13041,
these were cleaned up ad-hoc whenever they were found. This is no longer
the case because we now prevent the creation of duplicated entries and
always cleanup properly.
This adds two necessary migrations that remove orphaned entries that
were left by a previous version. The migrations run once and walk
through all deadline and backoff entries, removing those without a job
and duplicates which don't match the current job state.

(cherry picked from commit 1d82e6e)
lenaschoenburg added a commit that referenced this issue Aug 15, 2023
After an update from a previous version, both backoff and deadline
column families might contain entries without a corresponding job or
multiple entries for a single job. Before fixing #12797 and #13041,
these were cleaned up ad-hoc whenever they were found. This is no longer
the case because we now prevent the creation of duplicated entries and
always cleanup properly.
This adds two necessary migrations that remove orphaned entries that
were left by a previous version. The migrations run once and walk
through all deadline and backoff entries, removing those without a job
and duplicates which don't match the current job state.

(cherry picked from commit 1d82e6e)
lenaschoenburg added a commit that referenced this issue Aug 15, 2023
After an update from a previous version, both backoff and deadline
column families might contain entries without a corresponding job or
multiple entries for a single job. Before fixing #12797 and #13041,
these were cleaned up ad-hoc whenever they were found. This is no longer
the case because we now prevent the creation of duplicated entries and
always cleanup properly.
This adds two necessary migrations that remove orphaned entries that
were left by a previous version. The migrations run once and walk
through all deadline and backoff entries, removing those without a job
and duplicates which don't match the current job state.

(cherry picked from commit 1d82e6e)
@megglos megglos added the version:8.3.0 Marks an issue as being completely or in parts released in 8.3.0 label Oct 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/engine kind/bug Categorizes an issue or PR as a bug version:8.3.0-alpha4 Marks an issue as being completely or in parts released in 8.3.0-alpha4 version:8.3.0 Marks an issue as being completely or in parts released in 8.3.0
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants