修改传递给 CallActivityWithRetry Async 的 RetryOptions 是否需要版本控制功能?

Does modifying the RetryOptions passed to CallActivityWithRetry Async require versioning orchestration function?

在更改编排器代码时我一直犹豫不决,因为尽管一遍又一遍地阅读文档,但我从来没有 100% 清楚地了解什么是破坏性变化与非破坏性变化的细节。我担心我会破坏飞行中的编排,并且通常会因谨慎而出错。

在这种情况下,我真的宁愿不必版本化,但我不确定这是否符合更改条件。我目前正在我的业务流程中调用 CallActitivityWithRetryAsync 并希望将 BackoffCoefficient 的值设置为 2.0。

我的问题是设置此值是否会破坏运行中的编排并需要对我的编排功能进行版本控制以便两者可以并排工作。

当前:

var retryOptions = new RetryOptions(TimeSpan.FromMinutes(1), 5);
await context.CallActivityWithRetryAsync("MyActivity", retryOptions, null);

期望:

var retryOptions = new RetryOptions(TimeSpan.FromMinutes(1), 5) 
retryOptions.BackoffCoefficient = 2.0;
await context.CallActivityWithRetryAsync("MyActivity", retryOptions, null);

运行 来自 Durable Functions 团队的 Chris Gillum 的回答是:视情况而定。

Changing the retry options settings could change the history that gets generated by your orchestrator function. For example, if making a retry policy change results in more or fewer retries for existing instances, they may fail with a non-determinism error.

在 OP 要求的具体示例的情况下,应该 不需要 版本更改,因为它只是更改退避系数,不会导致对 max 的任何更改尝试。