lib/storage: load metadata before loading indexdb, since indexdb depends on the metadata

This commit is contained in:
Aliaksandr Valialkin 2021-02-10 17:55:33 +02:00
parent cdecf83ce5
commit 5d5f0b0627

View File

@ -167,10 +167,17 @@ func OpenStorage(path string, retentionMsecs int64) (*Storage, error) {
s.prefetchedMetricIDs.Store(&uint64set.Set{})
// Load metadata
metadataDir := path + "/metadata"
isEmptyDB := !fs.IsPathExist(path + "/indexdb")
if err := fs.MkdirAllIfNotExist(metadataDir); err != nil {
return nil, fmt.Errorf("cannot create %q: %w", metadataDir, err)
}
s.minTimestampForCompositeIndex = mustGetMinTimestampForCompositeIndex(metadataDir, isEmptyDB)
// Load indexdb
idbPath := path + "/indexdb"
idbSnapshotsPath := idbPath + "/snapshots"
isEmptyDB := !fs.IsPathExist(idbPath)
if err := fs.MkdirAllIfNotExist(idbSnapshotsPath); err != nil {
return nil, fmt.Errorf("cannot create %q: %w", idbSnapshotsPath, err)
}
@ -190,13 +197,6 @@ func OpenStorage(path string, retentionMsecs int64) (*Storage, error) {
}
s.tb = tb
// Load metadata
metadataDir := path + "/metadata"
if err := fs.MkdirAllIfNotExist(metadataDir); err != nil {
return nil, fmt.Errorf("cannot create %q: %w", metadataDir, err)
}
s.minTimestampForCompositeIndex = mustGetMinTimestampForCompositeIndex(metadataDir, isEmptyDB)
s.startCurrHourMetricIDsUpdater()
s.startNextDayMetricIDsUpdater()
s.startRetentionWatcher()