From 9751bec04c0b54e0aa7194b07a1e70d5f6c1012e Mon Sep 17 00:00:00 2001 From: Ten Thousand Leaves <69466447+soothing-rain@users.noreply.github.com> Date: Thu, 3 Nov 2022 11:01:35 +0800 Subject: [PATCH] Split large Etcd operations while altering segment info (#20278) /kind bug issue: #20275 Signed-off-by: Yuchen Gao Signed-off-by: Yuchen Gao --- internal/metastore/kv/datacoord/kv_catalog.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/metastore/kv/datacoord/kv_catalog.go b/internal/metastore/kv/datacoord/kv_catalog.go index 0b911f6cef..d64665f598 100644 --- a/internal/metastore/kv/datacoord/kv_catalog.go +++ b/internal/metastore/kv/datacoord/kv_catalog.go @@ -113,7 +113,14 @@ func (kc *Catalog) AlterSegments(ctx context.Context, newSegments []*datapb.Segm maps.Copy(kvs, segmentKvs) } - return kc.Txn.MultiSave(kvs) + saveFn := func(partialKvs map[string]string) error { + return kc.Txn.MultiSave(partialKvs) + } + if err := etcd.SaveByBatch(kvs, saveFn); err != nil { + return err + } + + return nil } func (kc *Catalog) AlterSegment(ctx context.Context, newSegment *datapb.SegmentInfo, oldSegment *datapb.SegmentInfo) error {