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

fix(engine): update the key generator on replay #8156

Merged
5 commits merged into from
Nov 5, 2021
Merged

Conversation

npepinpe
Copy link
Member

@npepinpe npepinpe commented Nov 5, 2021

Description

On replay, update the key generator with the replayed record's key. This fixes an issue where the follower would restart with a snapshot where nothing needed to be replayed, and would thus not update its generated key, leading to processing starting with the wrong key and duplicate keys, causing state inconsistencies.

Related issues

closes #8129

Definition of Done

Not all items need to be done depending on the issue and the pull request.

Code changes:

  • The changes are backwards compatibility with previous versions
  • If it fixes a bug then PRs are created to backport the fix to the last two minor versions. You can trigger a backport by assigning labels (e.g. backport stable/0.25) to the PR, in case that fails you need to create backports manually.

Testing:

  • There are unit/integration tests that verify all acceptance criterias of the issue
  • New tests are written to ensure backwards compatibility with further versions
  • The behavior is tested manually
  • The change has been verified by a QA run
  • The impact of the changes is verified by a benchmark

Documentation:

  • The documentation is updated (e.g. BPMN reference, configuration, examples, get-started guides, etc.)
  • New content is added to the release announcement

On replay, update the key generator with the replayed record's key. This
fixes an issue where the follower would restart with a snapshot where
nothing needed to be replayed, and would thus not update its generated
key, leading to processing starting with the wrong key and duplicate
keys, causing state inconsistencies.
Test should verify key column, to make sure on replay and processing key column family is filled.
@npepinpe npepinpe changed the base branch from develop to stable/1.2 November 5, 2021 10:36
@npepinpe npepinpe changed the base branch from stable/1.2 to develop November 5, 2021 10:36
@npepinpe
Copy link
Member Author

npepinpe commented Nov 5, 2021

Please recreate against stable/1.2, as this is the PR that should be merged first. We can later port it to develop.

Regression test which verifies that no duplicated keys are generated on the log, after fail over
@Zelldon Zelldon requested a review from saig0 November 5, 2021 10:45
@Zelldon Zelldon marked this pull request as ready for review November 5, 2021 10:45
@Zelldon
Copy link
Member

Zelldon commented Nov 5, 2021

Working on another PR to backport the fix and tests. 🏃

Copy link
Member

@saig0 saig0 left a comment

Choose a reason for hiding this comment

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

@Zelldon looks good 👍 Thanks 🍰

ghost pushed a commit that referenced this pull request Nov 5, 2021
8158: [Backport 1.2]  Update the key generator on replay  r=npepinpe a=Zelldon

## Description

Backports the fix from #8156 and adjusts the IT test to get it work with 1.2. Snapshot need to be taken so the new leader will not replay the complete log and start with the latest state he had.


<!-- Please explain the changes you made here. -->

## Related issues

<!-- Which issues are closed by this PR or are related -->

related to #8129



Co-authored-by: Nicolas Pepin-Perreault <nicolas.pepin-perreault@camunda.com>
Co-authored-by: Christopher Zell <zelldon91@googlemail.com>
@npepinpe
Copy link
Member Author

npepinpe commented Nov 5, 2021

bors merge

@ghost
Copy link

ghost commented Nov 5, 2021

Build succeeded:

@ghost ghost merged commit 3570f3b into develop Nov 5, 2021
@ghost ghost deleted the 8129-fix-key-generator branch November 5, 2021 14:28
This pull request was closed.
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.

Two process instances with different process definitions share the same key
3 participants