open bolt translate store partitions asynchronously

This commit is contained in:
Travis 2020-02-07 14:07:02 -06:00 • committed by Matt Jaffee
parent 49c8bf01a0
commit 4dd530e956
No known key found for this signature in database
GPG key ID: 08A3DFFF987B11BF

View file

@ -165,12 +165,26 @@ func (i *Index) Open() (err error) {
}
i.logger.Debugf("open translate store for index: %s", i.name)
var g errgroup.Group
var mu sync.Mutex
for partitionID := 0; partitionID < i.partitionN; partitionID++ {
store, err := i.OpenTranslateStore(i.TranslateStorePath(partitionID), i.name, "", partitionID, i.partitionN)
if err != nil {
return errors.Wrap(err, "opening index translate store")
}
i.translateStores[partitionID] = store
partitionID := partitionID
g.Go(func() error {
store, err := i.OpenTranslateStore(i.TranslateStorePath(partitionID), i.name, "", partitionID, i.partitionN)
if err != nil {
return errors.Wrapf(err, "opening index translate store: partition=%d", partitionID)
}
mu.Lock()
defer mu.Unlock()
i.translateStores[partitionID] = store
return nil
})
}
if err := g.Wait(); err != nil {
return err
}
return nil