From 0172aedf0c07730dcdae9b1391b20c50387c850f Mon Sep 17 00:00:00 2001 From: Pavol Loffay Date: Wed, 27 Feb 2019 13:14:40 +0100 Subject: [PATCH 1/2] Deprecate colon in index prefix in ES dependency store Signed-off-by: Pavol Loffay --- plugin/storage/es/dependencystore/storage.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/plugin/storage/es/dependencystore/storage.go b/plugin/storage/es/dependencystore/storage.go index f822fcb465f..17f832b790e 100644 --- a/plugin/storage/es/dependencystore/storage.go +++ b/plugin/storage/es/dependencystore/storage.go @@ -39,18 +39,23 @@ type DependencyStore struct { client es.Client logger *zap.Logger dependencyIndexPrefix string + dependencyIndexPrefixDeprecated string } // NewDependencyStore returns a DependencyStore func NewDependencyStore(client es.Client, logger *zap.Logger, indexPrefix string) *DependencyStore { + var prefix string + var prefixDeprecated string if indexPrefix != "" { - indexPrefix += ":" + prefix = indexPrefix + "-" + prefixDeprecated = indexPrefix + ":" } return &DependencyStore{ ctx: context.Background(), client: client, logger: logger, - dependencyIndexPrefix: indexPrefix + dependencyIndex, + dependencyIndexPrefix: prefix + dependencyIndex, + dependencyIndexPrefixDeprecated: prefixDeprecated + dependencyIndex, } } @@ -81,7 +86,11 @@ func (s *DependencyStore) writeDependencies(indexName string, ts time.Time, depe // GetDependencies returns all interservice dependencies func (s *DependencyStore) GetDependencies(endTs time.Time, lookback time.Duration) ([]model.DependencyLink, error) { - searchResult, err := s.client.Search(getIndices(s.dependencyIndexPrefix, endTs, lookback)...). + indices := getIndices(s.dependencyIndexPrefix, endTs, lookback) + if s.dependencyIndexPrefix != s.dependencyIndexPrefixDeprecated { + indices = append(indices, getIndices(s.dependencyIndexPrefixDeprecated, endTs, lookback)...) + } + searchResult, err := s.client.Search(indices...). Type(dependencyType). Size(10000). // the default elasticsearch allowed limit Query(buildTSQuery(endTs, lookback)). From 75877cfc8a2df32c8131f6c9a88f86f62c7ba363 Mon Sep 17 00:00:00 2001 From: Pavol Loffay Date: Wed, 27 Feb 2019 13:33:25 +0100 Subject: [PATCH 2/2] Fix tests and format Signed-off-by: Pavol Loffay --- plugin/storage/es/dependencystore/storage.go | 16 +++++------ .../es/dependencystore/storage_test.go | 27 +++++++++++++------ 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/plugin/storage/es/dependencystore/storage.go b/plugin/storage/es/dependencystore/storage.go index 17f832b790e..683d5d81280 100644 --- a/plugin/storage/es/dependencystore/storage.go +++ b/plugin/storage/es/dependencystore/storage.go @@ -35,10 +35,10 @@ const ( // DependencyStore handles all queries and insertions to ElasticSearch dependencies type DependencyStore struct { - ctx context.Context - client es.Client - logger *zap.Logger - dependencyIndexPrefix string + ctx context.Context + client es.Client + logger *zap.Logger + dependencyIndexPrefix string dependencyIndexPrefixDeprecated string } @@ -51,10 +51,10 @@ func NewDependencyStore(client es.Client, logger *zap.Logger, indexPrefix string prefixDeprecated = indexPrefix + ":" } return &DependencyStore{ - ctx: context.Background(), - client: client, - logger: logger, - dependencyIndexPrefix: prefix + dependencyIndex, + ctx: context.Background(), + client: client, + logger: logger, + dependencyIndexPrefix: prefix + dependencyIndex, dependencyIndexPrefixDeprecated: prefixDeprecated + dependencyIndex, } } diff --git a/plugin/storage/es/dependencystore/storage_test.go b/plugin/storage/es/dependencystore/storage_test.go index 22c13b91003..dc7f7d9e20c 100644 --- a/plugin/storage/es/dependencystore/storage_test.go +++ b/plugin/storage/es/dependencystore/storage_test.go @@ -39,14 +39,14 @@ type depStorageTest struct { storage *DependencyStore } -func withDepStorage(fn func(r *depStorageTest)) { +func withDepStorage(indexPrefix string, fn func(r *depStorageTest)) { client := &mocks.Client{} logger, logBuffer := testutils.NewLogger() r := &depStorageTest{ client: client, logger: logger, logBuffer: logBuffer, - storage: NewDependencyStore(client, logger, ""), + storage: NewDependencyStore(client, logger, indexPrefix), } fn(r) } @@ -60,8 +60,8 @@ func TestNewSpanReaderIndexPrefix(t *testing.T) { expected string }{ {prefix: "", expected: ""}, - {prefix: "foo", expected: "foo:"}, - {prefix: ":", expected: "::"}, + {prefix: "foo", expected: "foo-"}, + {prefix: ":", expected: ":-"}, } for _, testCase := range testCases { client := &mocks.Client{} @@ -83,7 +83,7 @@ func TestWriteDependencies(t *testing.T) { {}, } for _, testCase := range testCases { - withDepStorage(func(r *depStorageTest) { + withDepStorage("", func(r *depStorageTest) { fixedTime := time.Date(1995, time.April, 21, 4, 21, 19, 95, time.UTC) indexName := indexWithDate("", fixedTime) @@ -129,6 +129,8 @@ func TestGetDependencies(t *testing.T) { searchError error expectedError string expectedOutput []model.DependencyLink + indexPrefix string + indices []interface{} }{ { searchResult: createSearchResult(goodDependencies), @@ -139,23 +141,32 @@ func TestGetDependencies(t *testing.T) { CallCount: 12, }, }, + indices: []interface{}{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"}, }, { searchResult: createSearchResult(badDependencies), expectedError: "Unmarshalling ElasticSearch documents failed", + indices: []interface{}{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"}, }, { searchError: errors.New("search failure"), expectedError: "Failed to search for dependencies: search failure", + indices: []interface{}{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"}, + }, + { + searchError: errors.New("search failure"), + expectedError: "Failed to search for dependencies: search failure", + indexPrefix: "foo", + indices: []interface{}{"foo-jaeger-dependencies-1995-04-21", "foo-jaeger-dependencies-1995-04-20", + "foo:jaeger-dependencies-1995-04-21", "foo:jaeger-dependencies-1995-04-20"}, }, } for _, testCase := range testCases { - withDepStorage(func(r *depStorageTest) { + withDepStorage(testCase.indexPrefix, func(r *depStorageTest) { fixedTime := time.Date(1995, time.April, 21, 4, 21, 19, 95, time.UTC) - indices := []string{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"} searchService := &mocks.SearchService{} - r.client.On("Search", indices[0], indices[1]).Return(searchService) + r.client.On("Search", testCase.indices...).Return(searchService) searchService.On("Type", stringMatcher(dependencyType)).Return(searchService) searchService.On("Size", mock.Anything).Return(searchService)