-
Notifications
You must be signed in to change notification settings - Fork 2
WIP: Replay #6
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
WIP: Replay #6
Conversation
tomwheeler
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made some suggestions, mostly style issue such as punctuation or capitalization. I spotted and commented on a few technical issues, though they were fairly minor.
This is fantastic. You covered the right things. Your explanations were clear and easy to follow.
docs/curriculum/Tests.md
Outdated
| @@ -91,68 +90,6 @@ that is, the only reason an "Activity" component even exists is because the orch | |||
| _Does your Workflow definition have conditional branches?_ | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| _Does your Workflow definition have conditional branches?_ | |
| _Does your Workflow Definition have conditional branches?_ |
This is capitalized, as per the Temporal Style Guide
docs/curriculum/Tests.md
Outdated
| @@ -91,68 +90,6 @@ that is, the only reason an "Activity" component even exists is because the orch | |||
| _Does your Workflow definition have conditional branches?_ | |||
| If so, mocking or stubbing the Activity definitions themselves can reduce test complexity by directly providing their results, allowing you to verify the branch paths. | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If so, mocking or stubbing the Activity definitions themselves can reduce test complexity by directly providing their results, allowing you to verify the branch paths. | |
| If so, mocking or stubbing the Activity Definitions themselves can reduce test complexity by directly providing their results, allowing you to verify the branch paths. |
Capitalized, as per the Temporal Style Guide
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will fix these over in the docs repo since these are moved over there now Thanks!
docs/curriculum/Versions.md
Outdated
| * Compare the implications of choosing _In Situ_ Versioning to _Routed_ Versioning | ||
| * Address message versioning as it applies to _In Situ_ Versioning | ||
| * Address message versioning strategies | ||
| * Compare the implications of choosing _Patched_ Workflow Versioning to _Routed_ Workflow Versioning |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a comment, but the term "Routed Workflow Versioning" isn't one that's used in our documentation (neither the API docs from Engineering nor the docs produced by the Education team). I saw later in the document where you clarify that this is a category of versioning strategies, not a specific implementation, which relieves my concern that someone wouldn't find any results for a search on this term.
docs/curriculum/Versions.md
Outdated
|
|
||
| ## Message Versioning | ||
|
|
||
| Temporal saves in its event history the serialized representation of your messages used for inputs and outputs of all interactions with a Workflow. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Temporal saves in its event history the serialized representation of your messages used for inputs and outputs of all interactions with a Workflow. | |
| Temporal saves in its Event History the serialized representation of your messages used for inputs and outputs of all interactions with a Workflow. |
docs/curriculum/Versions.md
Outdated
| your Applications. | ||
|
|
||
| You can avoid this by: | ||
| * Implement an explicit message version strategy that keeps messages backwards compatible. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * Implement an explicit message version strategy that keeps messages backwards compatible. | |
| * Implementing an explicit message version strategy that keeps messages backwards compatible. |
This change in verb tense enables this text to complete the sentence leading into it ("You can avoid this by ...")
docs/curriculum/Versions.md
Outdated
| **External Workflow History Storage** | ||
|
|
||
| * _Cons_ | ||
| * This can be problematic in ephemeral containers used for CICD purposes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * This can be problematic in ephemeral containers used for CICD purposes. | |
| * This can be problematic in ephemeral containers used for CI/CD purposes. |
docs/curriculum/Versions.md
Outdated
| * This can be problematic in ephemeral containers used for CICD purposes. | ||
| * This might require non-trivial authnz to an external file storage solution. | ||
| * Garbage collection on histories might be needed to keep storage costs down | ||
| * Detecting which histories are eligible for collection can be complex for Workflow Definitions that are long-running and do not implement Continue As New |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * Detecting which histories are eligible for collection can be complex for Workflow Definitions that are long-running and do not implement Continue As New | |
| * Detecting which histories are eligible for collection can be complex for Workflow Definitions that are long-running and do not implement Continue-As-New |
docs/curriculum/Versions.md
Outdated
| * Detecting which histories are eligible for collection can be complex for Workflow Definitions that are long-running and do not implement Continue As New | ||
| * The `DataConverter` used to generate the histories _must_ be used when doing these tests. | ||
| * _Pros_ | ||
| * No need to maintain more than one implementation in VCS for the same Workflow Type in the same source version. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * No need to maintain more than one implementation in VCS for the same Workflow Type in the same source version. | |
| * No need to maintain more than one implementation in a version control system (VCS) for the same Workflow Type in the same source version. |
I suspect that some developers might not be familiar with the abbreviation, so I recommend spelling it out on first reference here. In my experience, some (older) people say "revision control system." I suspect that some younger people have only ever known git and therefore have no need to generalize about what kind of tool it is.
docs/curriculum/Versions.md
Outdated
|
|
||
| > The Patched Versioning strategy is convenient because `Starters` don't need to update their code with version changes or coordinate deployments with services hosting Temporal Workers. | ||
| > | ||
| > Note that in all SDKs except Java need to specify a `string` WorkflowType name explicitly in the Worker registration,type decorator or attribute options |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| > Note that in all SDKs except Java need to specify a `string` WorkflowType name explicitly in the Worker registration,type decorator or attribute options | |
| > Note that in all SDKs except Java need to specify a `string` Workflow Type name explicitly in the Worker registration,type decorator or attribute options |
docs/curriculum/Writes.md
Outdated
| _Signal Handler_ | ||
|
|
||
| 1. Inside the Signal handler: Set (propose) the received input message onto common (shared) Workflow Execution state | ||
| 2. Inside the Workflow main method: Apply the side effect(s) caused by the proposal (input). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the word "main" in "Workflow main method" necessary here?
I fear that someone might confuse this with the main method in a Java class (i.e., the entry point). Since only one method for a given Workflow Type will be designated as @WorkflowMethod, I think "Workflow method" is sufficient to describe it.
Versioning and Replay are effectively, coupled.
This PR adds a
Versionsdoc to get down in the weeds of deciding on the right Version strategy.Replay test guidance is still under construction in the doc.