Skip to content

Commit 06c610c

Browse files
authored
Deprecate colon in index prefix in ES dependency store (#1386)
* Deprecate colon in index prefix in ES dependency store Signed-off-by: Pavol Loffay <ploffay@redhat.com> * Fix tests and format Signed-off-by: Pavol Loffay <ploffay@redhat.com>
1 parent d8ab694 commit 06c610c

File tree

2 files changed

+38
-18
lines changed

2 files changed

+38
-18
lines changed

plugin/storage/es/dependencystore/storage.go

+19-10
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,27 @@ const (
3535

3636
// DependencyStore handles all queries and insertions to ElasticSearch dependencies
3737
type DependencyStore struct {
38-
ctx context.Context
39-
client es.Client
40-
logger *zap.Logger
41-
dependencyIndexPrefix string
38+
ctx context.Context
39+
client es.Client
40+
logger *zap.Logger
41+
dependencyIndexPrefix string
42+
dependencyIndexPrefixDeprecated string
4243
}
4344

4445
// NewDependencyStore returns a DependencyStore
4546
func NewDependencyStore(client es.Client, logger *zap.Logger, indexPrefix string) *DependencyStore {
47+
var prefix string
48+
var prefixDeprecated string
4649
if indexPrefix != "" {
47-
indexPrefix += ":"
50+
prefix = indexPrefix + "-"
51+
prefixDeprecated = indexPrefix + ":"
4852
}
4953
return &DependencyStore{
50-
ctx: context.Background(),
51-
client: client,
52-
logger: logger,
53-
dependencyIndexPrefix: indexPrefix + dependencyIndex,
54+
ctx: context.Background(),
55+
client: client,
56+
logger: logger,
57+
dependencyIndexPrefix: prefix + dependencyIndex,
58+
dependencyIndexPrefixDeprecated: prefixDeprecated + dependencyIndex,
5459
}
5560
}
5661

@@ -81,7 +86,11 @@ func (s *DependencyStore) writeDependencies(indexName string, ts time.Time, depe
8186

8287
// GetDependencies returns all interservice dependencies
8388
func (s *DependencyStore) GetDependencies(endTs time.Time, lookback time.Duration) ([]model.DependencyLink, error) {
84-
searchResult, err := s.client.Search(getIndices(s.dependencyIndexPrefix, endTs, lookback)...).
89+
indices := getIndices(s.dependencyIndexPrefix, endTs, lookback)
90+
if s.dependencyIndexPrefix != s.dependencyIndexPrefixDeprecated {
91+
indices = append(indices, getIndices(s.dependencyIndexPrefixDeprecated, endTs, lookback)...)
92+
}
93+
searchResult, err := s.client.Search(indices...).
8594
Type(dependencyType).
8695
Size(10000). // the default elasticsearch allowed limit
8796
Query(buildTSQuery(endTs, lookback)).

plugin/storage/es/dependencystore/storage_test.go

+19-8
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ type depStorageTest struct {
3939
storage *DependencyStore
4040
}
4141

42-
func withDepStorage(fn func(r *depStorageTest)) {
42+
func withDepStorage(indexPrefix string, fn func(r *depStorageTest)) {
4343
client := &mocks.Client{}
4444
logger, logBuffer := testutils.NewLogger()
4545
r := &depStorageTest{
4646
client: client,
4747
logger: logger,
4848
logBuffer: logBuffer,
49-
storage: NewDependencyStore(client, logger, ""),
49+
storage: NewDependencyStore(client, logger, indexPrefix),
5050
}
5151
fn(r)
5252
}
@@ -60,8 +60,8 @@ func TestNewSpanReaderIndexPrefix(t *testing.T) {
6060
expected string
6161
}{
6262
{prefix: "", expected: ""},
63-
{prefix: "foo", expected: "foo:"},
64-
{prefix: ":", expected: "::"},
63+
{prefix: "foo", expected: "foo-"},
64+
{prefix: ":", expected: ":-"},
6565
}
6666
for _, testCase := range testCases {
6767
client := &mocks.Client{}
@@ -83,7 +83,7 @@ func TestWriteDependencies(t *testing.T) {
8383
{},
8484
}
8585
for _, testCase := range testCases {
86-
withDepStorage(func(r *depStorageTest) {
86+
withDepStorage("", func(r *depStorageTest) {
8787
fixedTime := time.Date(1995, time.April, 21, 4, 21, 19, 95, time.UTC)
8888
indexName := indexWithDate("", fixedTime)
8989

@@ -129,6 +129,8 @@ func TestGetDependencies(t *testing.T) {
129129
searchError error
130130
expectedError string
131131
expectedOutput []model.DependencyLink
132+
indexPrefix string
133+
indices []interface{}
132134
}{
133135
{
134136
searchResult: createSearchResult(goodDependencies),
@@ -139,23 +141,32 @@ func TestGetDependencies(t *testing.T) {
139141
CallCount: 12,
140142
},
141143
},
144+
indices: []interface{}{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"},
142145
},
143146
{
144147
searchResult: createSearchResult(badDependencies),
145148
expectedError: "Unmarshalling ElasticSearch documents failed",
149+
indices: []interface{}{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"},
146150
},
147151
{
148152
searchError: errors.New("search failure"),
149153
expectedError: "Failed to search for dependencies: search failure",
154+
indices: []interface{}{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"},
155+
},
156+
{
157+
searchError: errors.New("search failure"),
158+
expectedError: "Failed to search for dependencies: search failure",
159+
indexPrefix: "foo",
160+
indices: []interface{}{"foo-jaeger-dependencies-1995-04-21", "foo-jaeger-dependencies-1995-04-20",
161+
"foo:jaeger-dependencies-1995-04-21", "foo:jaeger-dependencies-1995-04-20"},
150162
},
151163
}
152164
for _, testCase := range testCases {
153-
withDepStorage(func(r *depStorageTest) {
165+
withDepStorage(testCase.indexPrefix, func(r *depStorageTest) {
154166
fixedTime := time.Date(1995, time.April, 21, 4, 21, 19, 95, time.UTC)
155-
indices := []string{"jaeger-dependencies-1995-04-21", "jaeger-dependencies-1995-04-20"}
156167

157168
searchService := &mocks.SearchService{}
158-
r.client.On("Search", indices[0], indices[1]).Return(searchService)
169+
r.client.On("Search", testCase.indices...).Return(searchService)
159170

160171
searchService.On("Type", stringMatcher(dependencyType)).Return(searchService)
161172
searchService.On("Size", mock.Anything).Return(searchService)

0 commit comments

Comments
 (0)