@@ -31,36 +31,50 @@ import (
31
31
)
32
32
33
33
const (
34
- dependencyType = "dependencies"
35
- dependencyIndex = "jaeger-dependencies-"
34
+ dependencyType = "dependencies"
35
+ dependencyIndex = "jaeger-dependencies-"
36
+ indexPrefixSeparator = "-"
36
37
)
37
38
38
39
// DependencyStore handles all queries and insertions to ElasticSearch dependencies
39
40
type DependencyStore struct {
40
- ctx context.Context
41
- client es.Client
42
- logger * zap.Logger
43
- indexPrefix string
41
+ ctx context.Context
42
+ client es.Client
43
+ logger * zap.Logger
44
+ dependencyIndexPrefix string
45
+ useReadWriteAliases bool
46
+ }
47
+
48
+ // DSParams holds constructor parameters for NewDependencyStore
49
+ type DSParams struct {
50
+ Client es.Client
51
+ Logger * zap.Logger
52
+ IndexPrefix string
53
+ UseReadWriteAliases bool
44
54
}
45
55
46
56
// NewDependencyStore returns a DependencyStore
47
- func NewDependencyStore (client es.Client , logger * zap.Logger , indexPrefix string ) * DependencyStore {
48
- var prefix string
49
- if indexPrefix != "" {
50
- prefix = indexPrefix + "-"
51
- }
57
+ func NewDependencyStore (p DSParams ) * DependencyStore {
52
58
return & DependencyStore {
53
- ctx : context .Background (),
54
- client : client ,
55
- logger : logger ,
56
- indexPrefix : prefix + dependencyIndex ,
59
+ ctx : context .Background (),
60
+ client : p .Client ,
61
+ logger : p .Logger ,
62
+ dependencyIndexPrefix : prefixIndexName (p .IndexPrefix , dependencyIndex ),
63
+ useReadWriteAliases : p .UseReadWriteAliases ,
57
64
}
58
65
}
59
66
67
+ func prefixIndexName (prefix , index string ) string {
68
+ if prefix != "" {
69
+ return prefix + indexPrefixSeparator + index
70
+ }
71
+ return index
72
+ }
73
+
60
74
// WriteDependencies implements dependencystore.Writer#WriteDependencies.
61
75
func (s * DependencyStore ) WriteDependencies (ts time.Time , dependencies []model.DependencyLink ) error {
62
- indexName := indexWithDate ( s . indexPrefix , ts )
63
- s .writeDependencies (indexName , ts , dependencies )
76
+ writeIndexName := s . getWriteIndex ( ts )
77
+ s .writeDependencies (writeIndexName , ts , dependencies )
64
78
return nil
65
79
}
66
80
@@ -82,7 +96,8 @@ func (s *DependencyStore) writeDependencies(indexName string, ts time.Time, depe
82
96
83
97
// GetDependencies returns all interservice dependencies
84
98
func (s * DependencyStore ) GetDependencies (endTs time.Time , lookback time.Duration ) ([]model.DependencyLink , error ) {
85
- indices := getIndices (s .indexPrefix , endTs , lookback )
99
+ indices := s .getReadIndices (endTs , lookback )
100
+
86
101
searchResult , err := s .client .Search (indices ... ).
87
102
Size (10000 ). // the default elasticsearch allowed limit
88
103
Query (buildTSQuery (endTs , lookback )).
@@ -109,18 +124,30 @@ func buildTSQuery(endTs time.Time, lookback time.Duration) elastic.Query {
109
124
return elastic .NewRangeQuery ("timestamp" ).Gte (endTs .Add (- lookback )).Lte (endTs )
110
125
}
111
126
112
- func getIndices ( prefix string , ts time.Time , lookback time.Duration ) []string {
127
+ func ( s * DependencyStore ) getReadIndices ( ts time.Time , lookback time.Duration ) []string {
113
128
var indices []string
114
- firstIndex := indexWithDate (prefix , ts .Add (- lookback ))
115
- currentIndex := indexWithDate (prefix , ts )
129
+
130
+ if s .useReadWriteAliases {
131
+ return append (indices , s .dependencyIndexPrefix + "read" )
132
+ }
133
+
134
+ firstIndex := indexWithDate (s .dependencyIndexPrefix , ts .Add (- lookback ))
135
+ currentIndex := indexWithDate (s .dependencyIndexPrefix , ts )
116
136
for currentIndex != firstIndex {
117
137
indices = append (indices , currentIndex )
118
138
ts = ts .Add (- 24 * time .Hour )
119
- currentIndex = indexWithDate (prefix , ts )
139
+ currentIndex = indexWithDate (s . dependencyIndexPrefix , ts )
120
140
}
121
141
return append (indices , firstIndex )
122
142
}
123
143
144
+ func (s * DependencyStore ) getWriteIndex (ts time.Time ) string {
145
+ if s .useReadWriteAliases {
146
+ return s .dependencyIndexPrefix + "write"
147
+ }
148
+ return indexWithDate (s .dependencyIndexPrefix , ts )
149
+ }
150
+
124
151
func indexWithDate (indexNamePrefix string , date time.Time ) string {
125
152
return indexNamePrefix + date .UTC ().Format ("2006-01-02" )
126
153
}
0 commit comments