Skip to content

Commit 1fd8ba0

Browse files
authored
Minor race prevention: do not mutate callers' retry policy (#1413)
Concurrently calling `workflow.WithActivityOptions` with a shared retry policy instance that does not set a backoff coefficient can trigger a race because this function mutated it unnecessarily. The fix is easy: just don't do that :) There's no benefit to mutating it, and many downsides.
1 parent 2bceb13 commit 1fd8ba0

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

internal/workflow.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -1849,9 +1849,6 @@ func convertRetryPolicy(retryPolicy *RetryPolicy) *s.RetryPolicy {
18491849
if retryPolicy == nil {
18501850
return nil
18511851
}
1852-
if retryPolicy.BackoffCoefficient == 0 {
1853-
retryPolicy.BackoffCoefficient = backoff.DefaultBackoffCoefficient
1854-
}
18551852
thriftRetryPolicy := s.RetryPolicy{
18561853
InitialIntervalInSeconds: common.Int32Ptr(common.Int32Ceil(retryPolicy.InitialInterval.Seconds())),
18571854
MaximumIntervalInSeconds: common.Int32Ptr(common.Int32Ceil(retryPolicy.MaximumInterval.Seconds())),
@@ -1860,5 +1857,8 @@ func convertRetryPolicy(retryPolicy *RetryPolicy) *s.RetryPolicy {
18601857
NonRetriableErrorReasons: retryPolicy.NonRetriableErrorReasons,
18611858
ExpirationIntervalInSeconds: common.Int32Ptr(common.Int32Ceil(retryPolicy.ExpirationInterval.Seconds())),
18621859
}
1860+
if *thriftRetryPolicy.BackoffCoefficient == 0 {
1861+
thriftRetryPolicy.BackoffCoefficient = common.Float64Ptr(backoff.DefaultBackoffCoefficient)
1862+
}
18631863
return &thriftRetryPolicy
18641864
}

0 commit comments

Comments
 (0)