Do I need versioning if

Hi,

I have an activity which is part of a workflow. Do I need versioning if the logic of this activity is modified ?

No, activity implementation can change any time without a problem. Versioning is required only when the workflow code changes.

Do I need versioning if I remove of add activity retry options ?

Do I need versioning if I remove of add activity retry options ?

No versioning is needed. Retry options, as well as activity argument values, are not compared during replay.

@maxim Where can i read more on whats compared during replay. I also made an incremental change to rate limit activities on the taskqueue across all workers using taskQueueActivitiesPerSecond. Is this compared during replay ?

Any changes to WorkerOptions are safe without versioning. So taskQueueActivitiesPerSecond can be changed any time.

We don’t have a document that specifies what is considered non compatible change. Here is a short version:

  • Type of operation. For example, adding a Workflow.sleep anywhere in the workflow code. Or changing activity invocation to a child workflow invocation.
  • Type of activity. For example, invoking activity A instead of B.
  • Type of a child workflow. For example, invoking child of type C instead of D.

Anything that doesn’t affect the order of these operations is considered safe. The tricky part is that the order can have non trivial dependencies on workflow state.

is Versioning required when we add few extra lines in workflow code?

Yes, if these lines generate new commands. For example, scheduling an activity or calling workflow sleep generates a command.

No, if these lines don’t affect how the workflow is executed, for example, they change some values used only by a query.