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

use UnsetVersioningOverride field in ApplyWorkflowExecutionOptionsUpdatedEvent #7091

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

carlydf
Copy link
Contributor

@carlydf carlydf commented Jan 16, 2025

What changed?

use UnsetVersioningOverride field in ApplyWorkflowExecutionOptionsUpdatedEvent

Why?

So that users of this event don't need to load VersioningOverride from mutable state every time they create this event.
Now, a nil Versioning Override in this event means "no change" instead of "remove".
This reduces the chance that someone accidentally unsets an override in the future, and also is more efficient.
We've discussed this change internally in the server team and are ok with changing the meaning of this history event, because it is such a small change and the scope of impact is small (pre-release versioning users who have unset a versioning override and are building mutable state from that history).

How did you test it?

Made sure that versioning override functional tests pass.

Potential risks

Now, a nil Versioning Override in this event means "no change" instead of "remove".
If an event exists with the previous meaning and the mutable state is rebuilt, the Versioning Override would not be removed.
But the chance of that happening is very low.

Documentation

Is hotfix candidate?

carlydf added a commit to temporalio/api that referenced this pull request Jan 18, 2025
…Attributes (#516)

_**READ BEFORE MERGING:** All PRs require approval by both Server AND
SDK teams before merging! This is why the number of required approvals
is "2" and not "1"--two reviewers from the same team is NOT sufficient.
If your PR is not approved by someone in BOTH teams, it may be summarily
reverted._

<!-- Describe what has changed in this PR -->
### What:

Add unset_versioning_override to
WorkflowExecutionOptionsUpdatedEventAttributes

<!-- Tell your future self why have you made these changes -->
### Why:

So that users of this event don't need to load VersioningOverride from
mutable state every time they create this event.
This change was prompted because the event is now being used for
non-version-override-related things, and I received feedback that it is
inefficient / awkward / error-prone to have to load and pass in the
current versioning override every time anyone writes to this event.

Now, a nil Versioning Override in this event means "no change" instead
of "remove".
This reduces the chance that someone accidentally unsets an override in
the future, and also is more efficient.
We've discussed this change internally in the server team and are ok
with changing the meaning of this history event, because it is such a
small change and the scope of impact is small (pre-release versioning
users who have unset a versioning override and are building mutable
state from that history).


<!-- Are there any breaking changes on binary or code level? -->
### Breaking changes?

Now, a nil Versioning Override in this event means "no change" instead
of "remove".
If an event exists with the previous meaning and the mutable state is
rebuilt, the Versioning Override would not be removed.
But the chance of that happening is very low.

<!-- If this breaks the Server, please provide the Server PR to merge
right after this PR was merged. -->
temporalio/temporal#7091
temporal-cicd bot pushed a commit to temporalio/api-go that referenced this pull request Jan 18, 2025
…Attributes (#516)

_**READ BEFORE MERGING:** All PRs require approval by both Server AND
SDK teams before merging! This is why the number of required approvals
is "2" and not "1"--two reviewers from the same team is NOT sufficient.
If your PR is not approved by someone in BOTH teams, it may be summarily
reverted._

<!-- Describe what has changed in this PR -->
### What:

Add unset_versioning_override to
WorkflowExecutionOptionsUpdatedEventAttributes

<!-- Tell your future self why have you made these changes -->
### Why:

So that users of this event don't need to load VersioningOverride from
mutable state every time they create this event.
This change was prompted because the event is now being used for
non-version-override-related things, and I received feedback that it is
inefficient / awkward / error-prone to have to load and pass in the
current versioning override every time anyone writes to this event.

Now, a nil Versioning Override in this event means "no change" instead
of "remove".
This reduces the chance that someone accidentally unsets an override in
the future, and also is more efficient.
We've discussed this change internally in the server team and are ok
with changing the meaning of this history event, because it is such a
small change and the scope of impact is small (pre-release versioning
users who have unset a versioning override and are building mutable
state from that history).

<!-- Are there any breaking changes on binary or code level? -->
### Breaking changes?

Now, a nil Versioning Override in this event means "no change" instead
of "remove".
If an event exists with the previous meaning and the mutable state is
rebuilt, the Versioning Override would not be removed.
But the chance of that happening is very low.

<!-- If this breaks the Server, please provide the Server PR to merge
right after this PR was merged. -->
temporalio/temporal#7091
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