From a53f3024cf0689c6dcd0411f7900ccd0798e3f9a Mon Sep 17 00:00:00 2001 From: congqixia Date: Tue, 15 Apr 2025 12:14:32 +0800 Subject: [PATCH] fix: Add save field schema log for kv_catalog.AlterCollection (#41242) Related to #41241 --------- Signed-off-by: Congqi Xia --- internal/metastore/kv/rootcoord/kv_catalog.go | 15 ++++++++++++++- .../metastore/kv/rootcoord/kv_catalog_test.go | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/internal/metastore/kv/rootcoord/kv_catalog.go b/internal/metastore/kv/rootcoord/kv_catalog.go index ad36df2b30..a320f6c930 100644 --- a/internal/metastore/kv/rootcoord/kv_catalog.go +++ b/internal/metastore/kv/rootcoord/kv_catalog.go @@ -655,8 +655,21 @@ func (kc *Catalog) alterModifyCollection(ctx context.Context, oldColl *model.Col return err } saves := map[string]string{newKey: string(value)} + // no default aliases will be created. + // save fields info to new path. + for _, field := range newColl.Fields { + k := BuildFieldKey(newColl.CollectionID, field.FieldID) + fieldInfo := model.MarshalFieldModel(field) + v, err := proto.Marshal(fieldInfo) + if err != nil { + return err + } + saves[k] = string(v) + } if oldKey == newKey { - return kc.Snapshot.Save(ctx, newKey, string(value), ts) + return etcd.SaveByBatchWithLimit(saves, util.MaxEtcdTxnNum/2, func(partialKvs map[string]string) error { + return kc.Snapshot.MultiSave(ctx, partialKvs, ts) + }) } return kc.Snapshot.MultiSaveAndRemove(ctx, saves, []string{oldKey}, ts) } diff --git a/internal/metastore/kv/rootcoord/kv_catalog_test.go b/internal/metastore/kv/rootcoord/kv_catalog_test.go index 8ffe8b4dcf..5da728a256 100644 --- a/internal/metastore/kv/rootcoord/kv_catalog_test.go +++ b/internal/metastore/kv/rootcoord/kv_catalog_test.go @@ -1036,6 +1036,12 @@ func TestCatalog_AlterCollection(t *testing.T) { kvs[key] = value return nil } + snapshot.MultiSaveFunc = func(ctx context.Context, saveKvs map[string]string, _ typeutil.Timestamp) error { + for k, v := range saveKvs { + kvs[k] = v + } + return nil + } kc := NewCatalog(nil, snapshot).(*Catalog) ctx := context.Background() var collectionID int64 = 1