Skip to content

Commit a5ed9f9

Browse files
committed
Add support for ES index aliases / rollover to the dependency store
Signed-off-by: Christian Rohmann <[email protected]>
1 parent b1868a6 commit a5ed9f9

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

plugin/storage/es/dependencystore/storage.go

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,33 +37,43 @@ const (
3737

3838
// DependencyStore handles all queries and insertions to ElasticSearch dependencies
3939
type DependencyStore struct {
40-
ctx context.Context
41-
client es.Client
42-
logger *zap.Logger
43-
indexPrefix string
40+
ctx context.Context
41+
client es.Client
42+
logger *zap.Logger
43+
indexPrefix string
44+
useReadWriteAliases bool
4445
}
4546

4647
// NewDependencyStore returns a DependencyStore
47-
func NewDependencyStore(client es.Client, logger *zap.Logger, indexPrefix string) *DependencyStore {
48+
func NewDependencyStore(client es.Client, logger *zap.Logger, indexPrefix string, useReadWriteAliases bool) *DependencyStore {
4849
var prefix string
4950
if indexPrefix != "" {
5051
prefix = indexPrefix + "-"
5152
}
5253
return &DependencyStore{
53-
ctx: context.Background(),
54-
client: client,
55-
logger: logger,
56-
indexPrefix: prefix + dependencyIndex,
54+
ctx: context.Background(),
55+
client: client,
56+
logger: logger,
57+
indexPrefix: prefix + dependencyIndex,
58+
useReadWriteAliases: useReadWriteAliases,
5759
}
5860
}
5961

6062
// WriteDependencies implements dependencystore.Writer#WriteDependencies.
6163
func (s *DependencyStore) WriteDependencies(ts time.Time, dependencies []model.DependencyLink) error {
62-
indexName := indexWithDate(s.indexPrefix, ts)
63-
if err := s.createIndex(indexName); err != nil {
64-
return err
64+
65+
var indexName string
66+
67+
if useReadWriteAliases {
68+
indexName = s.indexPrefix + "write"
69+
} else {
70+
indexName := indexWithDate(s.indexPrefix, ts)
71+
if err := s.createIndex(indexName); err != nil {
72+
return err
73+
}
6574
}
6675
s.writeDependencies(indexName, ts, dependencies)
76+
6777
return nil
6878
}
6979

@@ -113,6 +123,11 @@ func buildTSQuery(endTs time.Time, lookback time.Duration) elastic.Query {
113123

114124
func getIndices(prefix string, ts time.Time, lookback time.Duration) []string {
115125
var indices []string
126+
127+
if useReadWriteAliases {
128+
return append(indices, prefix+"read")
129+
}
130+
116131
firstIndex := indexWithDate(prefix, ts.Add(-lookback))
117132
currentIndex := indexWithDate(prefix, ts)
118133
for currentIndex != firstIndex {

plugin/storage/es/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func (f *Factory) CreateSpanWriter() (spanstore.Writer, error) {
112112

113113
// CreateDependencyReader implements storage.Factory
114114
func (f *Factory) CreateDependencyReader() (dependencystore.Reader, error) {
115-
return esDepStore.NewDependencyStore(f.primaryClient, f.logger, f.primaryConfig.GetIndexPrefix()), nil
115+
return esDepStore.NewDependencyStore(f.primaryClient, f.logger, f.primaryConfig.GetIndexPrefix(), cfg.GetUseReadWriteAliases()), nil
116116
}
117117

118118
func loadTagsFromFile(filePath string) ([]string, error) {

0 commit comments

Comments
 (0)