diff --git a/common/persistence/visibility/store/elasticsearch/visibility_store_read_test.go b/common/persistence/visibility/store/elasticsearch/visibility_store_read_test.go index 3baaea53021..f8230d0b54e 100644 --- a/common/persistence/visibility/store/elasticsearch/visibility_store_read_test.go +++ b/common/persistence/visibility/store/elasticsearch/visibility_store_read_test.go @@ -319,7 +319,7 @@ func (s *ESVisibilitySuite) Test_convertQuery() { query = `StartTime = "2018-06-07T15:04:05.123456789-08:00"` queryParams, err = s.visibilityStore.convertQuery(testNamespace, testNamespaceID, query) s.NoError(err) - s.Equal(`{"bool":{"filter":[{"term":{"NamespaceId":"bfd5c907-f899-4baf-a7b2-2ab85e623ebd"}},{"bool":{"filter":{"match":{"StartTime":{"query":"2018-06-07T15:04:05.123456789-08:00"}}}}}],"must_not":{"exists":{"field":"TemporalNamespaceDivision"}}}}`, s.queryToJSON(queryParams.Query)) + s.JSONEq(`{"bool":{"filter":[{"term":{"NamespaceId":"bfd5c907-f899-4baf-a7b2-2ab85e623ebd"}},{"bool":{"filter":{"match":{"StartTime":{"query":"2018-06-07T15:04:05.123456789-08:00"}}}}}],"must_not":{"exists":{"field":"TemporalNamespaceDivision"}}}}`, s.queryToJSON(queryParams.Query)) s.Nil(queryParams.Sorter) query = `WorkflowId = 'wid' and StartTime > "2018-06-07T15:04:05+00:00"` diff --git a/service/history/visibility_queue_task_executor.go b/service/history/visibility_queue_task_executor.go index e1ff4e82769..d5a7202775f 100644 --- a/service/history/visibility_queue_task_executor.go +++ b/service/history/visibility_queue_task_executor.go @@ -389,13 +389,33 @@ func (t *visibilityQueueTaskExecutor) processChasmTask( return serviceerror.NewInternalf("expected visibility component, but got %T", visComponent) } - searchattributes, err := visComponent.GetSearchAttributes(visTaskContext) + namespaceEntry, err := t.shardContext.GetNamespaceRegistry(). + GetNamespaceByID(namespace.ID(task.GetNamespaceID())) + if err != nil { + return err + } + + searchattributesMapperProvider := t.shardContext.GetSearchAttributesMapperProvider() + searchAttributesMapper, err := searchattributesMapperProvider.GetMapper(namespaceEntry.Name()) if err != nil { return err } - if searchattributes == nil { - searchattributes = make(map[string]*commonpb.Payload) + + searchattributes := make(map[string]*commonpb.Payload) + + aliasedSearchAttributes, err := visComponent.GetSearchAttributes(visTaskContext) + if err != nil { + return err } + + for alias, value := range aliasedSearchAttributes { + fieldName, err := searchAttributesMapper.GetFieldName(alias, namespaceEntry.Name().String()) + if err != nil { + return err + } + searchattributes[fieldName] = value + } + memo, err := visComponent.GetMemo(visTaskContext) if err != nil { return err @@ -419,11 +439,6 @@ func (t *visibilityQueueTaskExecutor) processChasmTask( } } - namespaceEntry, err := t.shardContext.GetNamespaceRegistry(). - GetNamespaceByID(namespace.ID(task.GetNamespaceID())) - if err != nil { - return err - } requestBase := t.getVisibilityRequestBase( task, namespaceEntry, diff --git a/service/history/visibility_queue_task_executor_test.go b/service/history/visibility_queue_task_executor_test.go index cf24ea09421..0b2f32da847 100644 --- a/service/history/visibility_queue_task_executor_test.go +++ b/service/history/visibility_queue_task_executor_test.go @@ -107,6 +107,17 @@ func (s *visibilityQueueTaskExecutorSuite) SetupTest() { config, ) + // Set up expectations on the SearchAttributesMapper mocks created by NewTestContext + mockMapper := searchattribute.NewMockMapper(s.controller) + mockMapper.EXPECT().GetFieldName(gomock.Any(), gomock.Any()).DoAndReturn( + func(alias string, _ string) (string, error) { + return alias, nil + }, + ).AnyTimes() + + mockMapperProvider := s.mockShard.Resource.SearchAttributesMapperProvider + mockMapperProvider.EXPECT().GetMapper(gomock.Any()).Return(mockMapper, nil).AnyTimes() + reg := hsm.NewRegistry() err := workflow.RegisterStateMachine(reg) s.NoError(err)