diff --git a/holder.go b/holder.go index efaec5785..67c12e887 100644 --- a/holder.go +++ b/holder.go @@ -1161,9 +1161,6 @@ func (h *Holder) createIndex(cim *CreateIndexMessage, broadcast bool) (*Index, e if err = index.Open(); err != nil { return nil, errors.Wrap(err, "opening") } - if err = index.saveMeta(); err != nil { - return nil, errors.Wrap(err, "meta") - } // Update options. h.addIndex(index) diff --git a/index.go b/index.go index cfa1ecd2a..581c42949 100644 --- a/index.go +++ b/index.go @@ -17,7 +17,6 @@ package pilosa import ( "context" "fmt" - "io/ioutil" "os" "path/filepath" "sort" @@ -25,9 +24,7 @@ import ( "sync" "time" - "github.com/gogo/protobuf/proto" "github.com/pilosa/pilosa/v2/disco" - "github.com/pilosa/pilosa/v2/internal" "github.com/pilosa/pilosa/v2/roaring" "github.com/pilosa/pilosa/v2/stats" "github.com/pilosa/pilosa/v2/testhook" @@ -417,25 +414,6 @@ func (i *Index) openExistenceField() error { return nil } -// saveMeta writes meta data for the index. -func (i *Index) saveMeta() error { - // Marshal metadata. - buf, err := proto.Marshal(&internal.IndexMeta{ - Keys: i.keys, - TrackExistence: i.trackExistence, - }) - if err != nil { - return errors.Wrap(err, "marshalling") - } - - // Write to meta file. - if err := ioutil.WriteFile(filepath.Join(i.path, ".meta"), buf, 0666); err != nil { - return errors.Wrap(err, "writing") - } - - return nil -} - // Close closes the index and its fields. func (i *Index) Close() error { @@ -797,6 +775,11 @@ func (i *Index) DeleteField(name string) error { i.mu.Lock() defer i.mu.Unlock() + // Disallow deleting the existence field. + if name == existenceFieldName { + return newNotFoundError(ErrFieldNotFound, existenceFieldName) + } + // Confirm field exists. f := i.field(name) if f == nil { @@ -812,18 +795,6 @@ func (i *Index) DeleteField(name string) error { return errors.Wrap(err, "Txf.DeleteFieldFromStore") } - // If the field being deleted is the existence field, - // turn off existence tracking on the index. - if name == existenceFieldName { - i.trackExistence = false - i.existenceFld = nil - - // Update meta data on disk. - if err := i.saveMeta(); err != nil { - return errors.Wrap(err, "saving existence meta data") - } - } - // Remove reference. delete(i.fields, name) diff --git a/index_internal_test.go b/index_internal_test.go index faed407c5..909278b2b 100644 --- a/index_internal_test.go +++ b/index_internal_test.go @@ -52,40 +52,3 @@ func (i *Index) reopen() error { } return nil } - -// Ensure that deleting the existence field is handled properly. -func TestIndex_Existence_Delete(t *testing.T) { - // Create Index (with existence tracking). - index := mustOpenIndex(t, IndexOptions{TrackExistence: true}) - defer index.Close() - - // Ensure existence field has been created. - ef := index.Field(existenceFieldName) - if ef == nil { - t.Fatalf("expected field to have been created: %s", existenceFieldName) - } else if !index.trackExistence { - t.Fatalf("expected index.trackExistence to be true") - } else if index.existenceFld == nil { - t.Fatalf("expected index.existenceField to be non-nil") - } - - // Delete existence field. - if err := index.DeleteField(existenceFieldName); err != nil { - t.Fatal(err) - } - - // Re-open index. - if err := index.reopen(); err != nil { - t.Fatal(err) - } - - // Ensure existence field no longer exists. - ef = index.Field(existenceFieldName) - if ef != nil { - t.Fatalf("expected field to have been deleted: %s", existenceFieldName) - } else if index.trackExistence { - t.Fatalf("expected index.trackExistence to be false") - } else if index.existenceFld != nil { - t.Fatalf("expected index.existenceField to be nil") - } -}