From 4dd530e956b3dc788fc06492b7be5d8832157d54 Mon Sep 17 00:00:00 2001 From: Travis Date: Fri, 7 Feb 2020 14:07:02 -0600 Subject: [PATCH] open bolt translate store partitions asynchronously --- index.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/index.go b/index.go index 65609cb3e..51e062823 100644 --- a/index.go +++ b/index.go @@ -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