From 37b309be16a4b258e3dee53297652b4dd372906b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Podg=C3=B3rski?= Date: Mon, 8 Feb 2021 21:54:39 +0100 Subject: [PATCH] Move schemator from API to index. Fix TestExecutor_Execute_SetRow --- api.go | 12 ------------ executor_test.go | 1 + holder.go | 5 +++++ index.go | 5 +++++ 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/api.go b/api.go index 61fc8c8f0..0fd7bcb0d 100644 --- a/api.go +++ b/api.go @@ -57,7 +57,6 @@ type API struct { importWork chan importJob Serializer Serializer - schemator disco.Schemator } func (api *API) Holder() *Holder { @@ -73,7 +72,6 @@ func OptAPIServer(s *Server) apiOption { a.holder = s.holder a.cluster = s.cluster a.Serializer = s.serializer - a.schemator = s.schemator return nil } } @@ -256,11 +254,6 @@ func (api *API) DeleteIndex(ctx context.Context, indexName string) error { return errors.Wrap(err, "validating api method") } - // Delete the index from etcd as the system of record. - if err := api.schemator.DeleteIndex(ctx, indexName); err != nil { - return errors.Wrapf(err, "deleting index from etcd: %s", indexName) - } - // Delete index from the holder. err := api.holder.DeleteIndex(indexName) if err != nil { @@ -540,11 +533,6 @@ func (api *API) DeleteField(ctx context.Context, indexName string, fieldName str return newNotFoundError(ErrIndexNotFound, indexName) } - // Delete the field from etcd as the system of record. - if err := api.schemator.DeleteField(ctx, indexName, fieldName); err != nil { - return errors.Wrapf(err, "deleting field from etcd: %s/%s", indexName, fieldName) - } - // Delete field from the index. if err := index.DeleteField(fieldName); err != nil { return errors.Wrap(err, "deleting field") diff --git a/executor_test.go b/executor_test.go index 9f1d7728b..11b15fcbe 100644 --- a/executor_test.go +++ b/executor_test.go @@ -651,6 +651,7 @@ func TestExecutor_Execute_Set(t *testing.T) { }) t.Run("ErrInvalidColValueType", func(t *testing.T) { + hldr.SetBit("i", "f", 1, 0) // creates and Commits a Tx internally. if err := idx.DeleteField("f"); err != nil { t.Fatal(err) diff --git a/holder.go b/holder.go index 47ca88254..835be2f6d 100644 --- a/holder.go +++ b/holder.go @@ -1245,6 +1245,11 @@ func (h *Holder) DeleteIndex(name string) error { // Remove reference. h.deleteIndex(name) + // Delete the index from etcd as the system of record. + if err := h.schemator.DeleteIndex(context.TODO(), name); err != nil { + return errors.Wrapf(err, "deleting index from etcd: %s", name) + } + // I'm not sure if calling Reset() here is necessary // since closing the index stops its translation // sync processes. diff --git a/index.go b/index.go index f999ae137..ac5afedc2 100644 --- a/index.go +++ b/index.go @@ -737,6 +737,11 @@ func (i *Index) DeleteField(name string) error { // Remove reference. delete(i.fields, name) + // Delete the field from etcd as the system of record. + if err := i.schemator.DeleteField(context.TODO(), i.name, name); err != nil { + return errors.Wrapf(err, "deleting field from etcd: %s/%s", i.name, name) + } + return i.translationSyncer.Reset() }