From 9219be243809cba84690d1cf740c7063edb5361f Mon Sep 17 00:00:00 2001 From: David Reiss Date: Fri, 14 Jul 2023 13:52:29 -0700 Subject: [PATCH] Do not generate visibility task for unchanged BuildIds (#4632) **What changed?** Do not generate a visibility task for updating BuildIds if it's unchanged. **Why?** Excess visibility tasks. **How did you test it?** will add unit tests **Potential risks** **Is hotfix candidate?** --- service/history/workflow/mutable_state_impl.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/service/history/workflow/mutable_state_impl.go b/service/history/workflow/mutable_state_impl.go index c307dc1899c..5db75e2a7b9 100644 --- a/service/history/workflow/mutable_state_impl.go +++ b/service/history/workflow/mutable_state_impl.go @@ -1902,7 +1902,7 @@ func (ms *MutableStateImpl) ReplicateWorkflowExecutionStartedEvent( } if event.SourceVersionStamp.GetUseVersioning() && event.SourceVersionStamp.GetBuildId() != "" { limit := ms.config.SearchAttributesSizeOfValueLimit(string(ms.namespaceEntry.Name())) - if err := ms.addBuildIdsWithNoVisibilityTask([]string{worker_versioning.VersionedBuildIdSearchAttribute(event.SourceVersionStamp.BuildId)}, limit); err != nil { + if _, err := ms.addBuildIdsWithNoVisibilityTask([]string{worker_versioning.VersionedBuildIdSearchAttribute(event.SourceVersionStamp.BuildId)}, limit); err != nil { return err } } @@ -2107,8 +2107,10 @@ func (ms *MutableStateImpl) trackBuildIdFromCompletion( if len(toAdd) == 0 { return nil } - if err := ms.addBuildIdsWithNoVisibilityTask(toAdd, limits.MaxSearchAttributeValueSize); err != nil { + if changed, err := ms.addBuildIdsWithNoVisibilityTask(toAdd, limits.MaxSearchAttributeValueSize); err != nil { return err + } else if !changed { + return nil } return ms.taskGenerator.GenerateUpsertVisibilityTask() } @@ -2185,16 +2187,16 @@ func (ms *MutableStateImpl) saveBuildIds(buildIds []string, maxSearchAttributeVa return nil } -func (ms *MutableStateImpl) addBuildIdsWithNoVisibilityTask(buildIds []string, maxSearchAttributeValueSize int) error { +func (ms *MutableStateImpl) addBuildIdsWithNoVisibilityTask(buildIds []string, maxSearchAttributeValueSize int) (bool, error) { existingBuildIds, err := ms.loadBuildIds() if err != nil { - return err + return false, err } modifiedBuildIds, added := ms.addBuildIdToLoadedSearchAttribute(existingBuildIds, buildIds) if !added { - return nil + return false, nil } - return ms.saveBuildIds(modifiedBuildIds, maxSearchAttributeValueSize) + return true, ms.saveBuildIds(modifiedBuildIds, maxSearchAttributeValueSize) } // TODO: we will release the restriction when reset API allow those pending