mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-10-07 11:27:50 +00:00
requested idx == nil fix; add doc comment
This commit is contained in:
parent
7013910158
commit
d57050d966
2 changed files with 32 additions and 28 deletions
|
|
@ -312,6 +312,8 @@ type inMemSchemator struct {
|
|||
schema Schema
|
||||
}
|
||||
|
||||
// NewInMemSchemator instantiates an InMemSchemator
|
||||
// this allows new holders to have thier own, and not rely on a shared instance
|
||||
func NewInMemSchemator() *inMemSchemator {
|
||||
return &inMemSchemator{
|
||||
schema: make(Schema),
|
||||
|
|
|
|||
58
index.go
58
index.go
|
|
@ -267,40 +267,42 @@ func (i *Index) openFields(idx *disco.Index) error {
|
|||
eg, ctx := errgroup.WithContext(context.Background())
|
||||
var mu sync.Mutex
|
||||
|
||||
if idx != nil {
|
||||
fileLoop:
|
||||
for fname, fld := range idx.Fields {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
break fileLoop
|
||||
default:
|
||||
var cfm *CreateFieldMessage = &CreateFieldMessage{}
|
||||
var err error
|
||||
if idx == nil {
|
||||
return nil
|
||||
}
|
||||
fileLoop:
|
||||
for fname, fld := range idx.Fields {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
break fileLoop
|
||||
default:
|
||||
var cfm *CreateFieldMessage = &CreateFieldMessage{}
|
||||
var err error
|
||||
|
||||
// Decode the CreateFieldMessage from the schema data in order to
|
||||
// get its metadata.
|
||||
cfm, err = decodeCreateFieldMessage(i.holder.serializer, fld.Data)
|
||||
// Decode the CreateFieldMessage from the schema data in order to
|
||||
// get its metadata.
|
||||
cfm, err = decodeCreateFieldMessage(i.holder.serializer, fld.Data)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "decoding create field message")
|
||||
}
|
||||
|
||||
indexQueue <- struct{}{}
|
||||
eg.Go(func() error {
|
||||
defer func() {
|
||||
<-indexQueue
|
||||
}()
|
||||
i.holder.Logger.Debugf("open field: %s", fname)
|
||||
|
||||
_, err := i.openField(&mu, cfm, fname)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "decoding create field message")
|
||||
return errors.Wrap(err, "opening field")
|
||||
}
|
||||
|
||||
indexQueue <- struct{}{}
|
||||
eg.Go(func() error {
|
||||
defer func() {
|
||||
<-indexQueue
|
||||
}()
|
||||
i.holder.Logger.Debugf("open field: %s", fname)
|
||||
|
||||
_, err := i.openField(&mu, cfm, fname)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "opening field")
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
err = eg.Wait()
|
||||
if err != nil {
|
||||
// Close any fields which got opened, since the overall
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue