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 08f21d8761
commit eeb92eb7fc

View file

@ -177,10 +177,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)
}
@ -200,13 +207,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()