Ensure backwards compat in upperSchemaVersion handling #2146
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.
Currently, Python SDK versions 1.1.0 to 1.1.3 only handle
upperSchemaVersion
values of 0 (V1) and 1 (V2). This is a problem, becauseupperSchemaVersion
was supposed to support arbitrary integers to denote replay protocol versions and we just implementedupperSchemaVersion.V3
in the Extension.Technically speaking, the error is due to a bug in the Python SDK. However, due to the auto-upgrading nature of Bundles, I think it's important to consider how to avoid impacting existing SDKs when we're making a minor Extension release. This PR proposes one way to do that.
Essentially, we're "deprecating" the
upperSchemaVersion
field sent to the SDKs and instead utilizing a new fieldnewUpperSchemaVersion
to include protocol versions larger than V2. This will give the Python SDK the possibility of supporting new replay schemas without prevent older SDK releases from working with Extension Bundles.Since this change is so minimal, I think we could include this change without needing to re-run all the validation work for Extension release
2.7.0
. The only affected path should be the OOProc smoke tests, which can be executed easily. Alternatively, we can always make a2.7.1
hotpatch release with this change after2.7.0
is out.Issue describing the changes in this PR
Related to # Azure/azure-functions-durable-python#368 and #2138
Pull request checklist
pending_docs.md
release_notes.md
/src/Worker.Extensions.DurableTask/AssemblyInfo.cs