-
Notifications
You must be signed in to change notification settings - Fork 913
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
Migrate to reset reapply event type exclusions instead of inclusions #5360
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Closed
9a35ddf
to
48e0147
Compare
2170deb
to
6a37404
Compare
13a1f43
to
a180aea
Compare
a180aea
to
0a5bd90
Compare
yycptt
approved these changes
Mar 12, 2024
stephanos
pushed a commit
to stephanos/temporal
that referenced
this pull request
Mar 21, 2024
…emporalio#5360) ## What changed? - Start honoring the new `reset_reapply_exclude_types` request field added in temporalio/api#348 - Change all reapply codepaths to specify excluded event types rather than included - Pass the set of excluded types further down the stack - Delete a pointless helper function ## Why? - We must honor the new request field because it is in the API and it is how we are going to control update reapply when we implement that - The previous code was not future-proof: there were various codepaths passing `enumspb.RESET_REAPPLY_TYPE_SIGNAL` to mean "reapply everything". This PR changes those codepaths to pass an empty set of exclusions, which is robust to future additions of new reappliable event types. - The actual work is done by `reapplyEvents`, and the excluded types had to be pushed all the way down the stack to this function. The previous code was pretty fragile: it checked that the caller had requested reapplication of signals and then let the downstream code reapply everything. ## How did you test it? - Unit tests ## Potential risks - It could break replication, and reset ## Is hotfix candidate? - No
dandavison
added a commit
that referenced
this pull request
Apr 9, 2024
## What changed? Revert change to default enum value made in #5360 ## Why? We cannot deploy a change that both introduces a new value and starts using it as the default, since during rollout it may cause a frontend client on the new version to send a value that is unknown to a history node on the old version. ## How did you test it? I didn't ## Potential risks No risk ## Is hotfix candidate? This change should be cherry-picked onto current release candidates.
dnr
pushed a commit
that referenced
this pull request
Apr 9, 2024
## What changed? Revert change to default enum value made in #5360 ## Why? We cannot deploy a change that both introduces a new value and starts using it as the default, since during rollout it may cause a frontend client on the new version to send a value that is unknown to a history node on the old version. ## How did you test it? I didn't ## Potential risks No risk ## Is hotfix candidate? This change should be cherry-picked onto current release candidates.
dandavison
added a commit
that referenced
this pull request
Sep 25, 2024
## What changed? Change default `ResetReapply` enum value to `ALL_ELIGIBLE`. ## Why? Reverts #5688, i.e. after this PR we will have the behavior described in #5360. This means both signals *and* updates will be reapplied by default during resets and coinflict resolution, which is the product behavior we want. ### Explanation - #5360 attempted to introduce a new proto enum value and start using it as the default - However, that is not a valid single-deploy change, since it can cause a frontend client on the new version to send a value that is unknown to a history node on the old version. - Therefore #5688 reverted the change to the default, allowing the new proto enum value to be introduced to the codebase - This PR is deployable iff all clusters that we deploy to have #5360 deployed ## How did you test it? I didn't. Tests were added in the original PR #5360. ## Potential risks Could break reset or history conflict resolution. ## Is hotfix candidate? 1.25.1
jmbarzee
pushed a commit
that referenced
this pull request
Sep 27, 2024
Change default `ResetReapply` enum value to `ALL_ELIGIBLE`. Reverts #5688, i.e. after this PR we will have the behavior described in #5360. This means both signals *and* updates will be reapplied by default during resets and coinflict resolution, which is the product behavior we want. - #5360 attempted to introduce a new proto enum value and start using it as the default - However, that is not a valid single-deploy change, since it can cause a frontend client on the new version to send a value that is unknown to a history node on the old version. - Therefore #5688 reverted the change to the default, allowing the new proto enum value to be introduced to the codebase - This PR is deployable iff all clusters that we deploy to have #5360 deployed I didn't. Tests were added in the original PR #5360. Could break reset or history conflict resolution. 1.25.1
dnr
pushed a commit
that referenced
this pull request
Oct 4, 2024
Change default `ResetReapply` enum value to `ALL_ELIGIBLE`. Reverts #5688, i.e. after this PR we will have the behavior described in #5360. This means both signals *and* updates will be reapplied by default during resets and coinflict resolution, which is the product behavior we want. - #5360 attempted to introduce a new proto enum value and start using it as the default - However, that is not a valid single-deploy change, since it can cause a frontend client on the new version to send a value that is unknown to a history node on the old version. - Therefore #5688 reverted the change to the default, allowing the new proto enum value to be introduced to the codebase - This PR is deployable iff all clusters that we deploy to have #5360 deployed I didn't. Tests were added in the original PR #5360. Could break reset or history conflict resolution. 1.25.1
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What changed?
reset_reapply_exclude_types
request field added in ResetReapplyExcludeType (preparation for Update reapply) api#348Why?
enumspb.RESET_REAPPLY_TYPE_SIGNAL
to mean "reapply everything". This PR changes those codepaths to pass an empty set of exclusions, which is robust to future additions of new reappliable event types.reapplyEvents
, and the excluded types had to be pushed all the way down the stack to this function. The previous code was pretty fragile: it checked that the caller had requested reapplication of signals and then let the downstream code reapply everything.How did you test it?
Potential risks
Is hotfix candidate?