From 751c9d4e8144dfbc6fd7730eeff3e86fd102a6d0 Mon Sep 17 00:00:00 2001 From: sunby Date: Fri, 9 Apr 2021 09:55:04 +0800 Subject: [PATCH] Refactor meta.go Signed-off-by: sunby --- go.mod | 1 - internal/dataservice/dd_handler.go | 4 +- internal/dataservice/meta.go | 263 ++++----- internal/dataservice/meta_test.go | 24 +- internal/dataservice/segment_allocator.go | 10 +- .../dataservice/segment_allocator_test.go | 10 +- internal/dataservice/server.go | 12 +- internal/dataservice/stats_handler.go | 2 +- internal/dataservice/watcher.go | 2 +- internal/dataservice/watcher_test.go | 4 +- .../masterservice/masterservice_test.go | 4 +- internal/kv/kv.go | 1 + internal/kv/mem/mem_kv.go | 19 + internal/masterservice/master_service.go | 2 +- internal/masterservice/master_service_test.go | 4 +- internal/masterservice/meta_table.go | 10 +- internal/masterservice/meta_table_test.go | 4 +- internal/proto/data_service.proto | 36 +- internal/proto/datapb/data_service.pb.go | 557 ++++++++++-------- internal/proxynode/impl.go | 2 +- internal/querynode/meta_service.go | 2 +- internal/querynode/meta_service_test.go | 2 +- 22 files changed, 529 insertions(+), 446 deletions(-) diff --git a/go.mod b/go.mod index a23ca2117..7e4be92e8 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,6 @@ require ( google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150 // indirect google.golang.org/grpc v1.31.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 - gopkg.in/yaml.v2 v2.3.0 // indirect honnef.co/go/tools v0.0.1-2020.1.4 // indirect sigs.k8s.io/yaml v1.2.0 // indirect ) diff --git a/internal/dataservice/dd_handler.go b/internal/dataservice/dd_handler.go index ad7ddc3c5..322495a38 100644 --- a/internal/dataservice/dd_handler.go +++ b/internal/dataservice/dd_handler.go @@ -3,6 +3,8 @@ package dataservice import ( "context" + "github.com/zilliztech/milvus-distributed/internal/proto/datapb" + "github.com/golang/protobuf/proto" "github.com/zilliztech/milvus-distributed/internal/msgstream" "github.com/zilliztech/milvus-distributed/internal/proto/commonpb" @@ -45,7 +47,7 @@ func (handler *ddHandler) handleCreateCollection(msg *msgstream.CreateCollection if err := proto.Unmarshal(msg.Schema, schema); err != nil { return err } - err := handler.meta.AddCollection(&collectionInfo{ + err := handler.meta.AddCollection(&datapb.CollectionInfo{ ID: msg.CollectionID, Schema: schema, }) diff --git a/internal/dataservice/meta.go b/internal/dataservice/meta.go index 680646f75..d5103a189 100644 --- a/internal/dataservice/meta.go +++ b/internal/dataservice/meta.go @@ -2,7 +2,6 @@ package dataservice import ( "fmt" - "strconv" "sync" "github.com/golang/protobuf/proto" @@ -11,7 +10,11 @@ import ( "github.com/zilliztech/milvus-distributed/internal/proto/commonpb" "github.com/zilliztech/milvus-distributed/internal/proto/datapb" "github.com/zilliztech/milvus-distributed/internal/proto/internalpb" - "github.com/zilliztech/milvus-distributed/internal/proto/schemapb" +) + +const ( + metaPrefix = "dataservice-meta" + segmentPrefix = metaPrefix + "/s" ) type errSegmentNotFound struct { @@ -20,16 +23,11 @@ type errSegmentNotFound struct { type errCollectionNotFound struct { collectionID UniqueID } -type collectionInfo struct { - ID UniqueID - Schema *schemapb.CollectionSchema - Partitions []UniqueID -} type meta struct { - client kv.TxnBase // client of a reliable kv service, i.e. etcd client - collID2Info map[UniqueID]*collectionInfo // collection id to collection info - segID2Info map[UniqueID]*datapb.SegmentInfo // segment id to segment info - ddLock sync.RWMutex + sync.RWMutex + client kv.TxnBase // client of a reliable kv service, i.e. etcd client + collections map[UniqueID]*datapb.CollectionInfo // collection id to collection info + segments map[UniqueID]*datapb.SegmentInfo // segment id to segment info } func newErrSegmentNotFound(segmentID UniqueID) errSegmentNotFound { @@ -51,8 +49,8 @@ func (err errCollectionNotFound) Error() string { func newMeta(kv kv.TxnBase) (*meta, error) { mt := &meta{ client: kv, - collID2Info: make(map[UniqueID]*collectionInfo), - segID2Info: make(map[UniqueID]*datapb.SegmentInfo), + collections: make(map[UniqueID]*datapb.CollectionInfo), + segments: make(map[UniqueID]*datapb.SegmentInfo), } err := mt.reloadFromKV() if err != nil { @@ -62,7 +60,7 @@ func newMeta(kv kv.TxnBase) (*meta, error) { } func (meta *meta) reloadFromKV() error { - _, values, err := meta.client.LoadWithPrefix("segment") + _, values, err := meta.client.LoadWithPrefix(segmentPrefix) if err != nil { return err } @@ -73,66 +71,65 @@ func (meta *meta) reloadFromKV() error { if err != nil { return fmt.Errorf("DataService reloadFromKV UnMarshalText datapb.SegmentInfo err:%w", err) } - meta.segID2Info[segmentInfo.SegmentID] = segmentInfo + meta.segments[segmentInfo.ID] = segmentInfo } return nil } -func (meta *meta) AddCollection(collectionInfo *collectionInfo) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() - if _, ok := meta.collID2Info[collectionInfo.ID]; ok { - return fmt.Errorf("collection %s with id %d already exist", collectionInfo.Schema.Name, collectionInfo.ID) +func (meta *meta) AddCollection(collection *datapb.CollectionInfo) error { + meta.Lock() + defer meta.Unlock() + if _, ok := meta.collections[collection.ID]; ok { + return fmt.Errorf("collection %s with id %d already exist", collection.Schema.Name, collection.ID) } - meta.collID2Info[collectionInfo.ID] = collectionInfo + meta.collections[collection.ID] = collection return nil } func (meta *meta) DropCollection(collID UniqueID) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() + meta.Lock() + defer meta.Unlock() - if _, ok := meta.collID2Info[collID]; !ok { + if _, ok := meta.collections[collID]; !ok { return newErrCollectionNotFound(collID) } - ids := make([]UniqueID, 0) - for i, info := range meta.segID2Info { + key := fmt.Sprintf("%s/%d/", segmentPrefix, collID) + if err := meta.client.RemoveWithPrefix(key); err != nil { + return err + } + delete(meta.collections, collID) + + for i, info := range meta.segments { if info.CollectionID == collID { - delete(meta.segID2Info, i) - ids = append(ids, i) + delete(meta.segments, i) } } - if err := meta.removeSegments(ids); err != nil { - _ = meta.reloadFromKV() - return err - } - delete(meta.collID2Info, collID) return nil } func (meta *meta) HasCollection(collID UniqueID) bool { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() - _, ok := meta.collID2Info[collID] + meta.RLock() + defer meta.RUnlock() + _, ok := meta.collections[collID] return ok } -func (meta *meta) GetCollection(collectionID UniqueID) (*collectionInfo, error) { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() +func (meta *meta) GetCollection(collectionID UniqueID) (*datapb.CollectionInfo, error) { + meta.RLock() + defer meta.RUnlock() - collectionInfo, ok := meta.collID2Info[collectionID] + collection, ok := meta.collections[collectionID] if !ok { return nil, newErrCollectionNotFound(collectionID) } - return collectionInfo, nil + return proto.Clone(collection).(*datapb.CollectionInfo), nil } func (meta *meta) GetNumRowsOfCollection(collectionID UniqueID) (int64, error) { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() + meta.RLock() + defer meta.RUnlock() var ret int64 = 0 - for _, info := range meta.segID2Info { + for _, info := range meta.segments { if info.CollectionID == collectionID { ret += info.NumRows } @@ -141,10 +138,10 @@ func (meta *meta) GetNumRowsOfCollection(collectionID UniqueID) (int64, error) { } func (meta *meta) GetMemSizeOfCollection(collectionID UniqueID) (int64, error) { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() + meta.RLock() + defer meta.RUnlock() var ret int64 = 0 - for _, info := range meta.segID2Info { + for _, info := range meta.segments { if info.CollectionID == collectionID { ret += info.MemSize } @@ -152,161 +149,158 @@ func (meta *meta) GetMemSizeOfCollection(collectionID UniqueID) (int64, error) { return ret, nil } -func (meta *meta) AddSegment(segmentInfo *datapb.SegmentInfo) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() - if _, ok := meta.segID2Info[segmentInfo.SegmentID]; ok { - return fmt.Errorf("segment %d already exist", segmentInfo.SegmentID) +func (meta *meta) AddSegment(segment *datapb.SegmentInfo) error { + meta.Lock() + defer meta.Unlock() + if _, ok := meta.segments[segment.ID]; ok { + return fmt.Errorf("segment %d already exist", segment.ID) } - meta.segID2Info[segmentInfo.SegmentID] = segmentInfo - if err := meta.saveSegmentInfo(segmentInfo); err != nil { - _ = meta.reloadFromKV() + meta.segments[segment.ID] = segment + if err := meta.saveSegmentInfo(segment); err != nil { return err } return nil } -func (meta *meta) UpdateSegment(segmentInfo *datapb.SegmentInfo) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() - meta.segID2Info[segmentInfo.SegmentID] = segmentInfo - if err := meta.saveSegmentInfo(segmentInfo); err != nil { - _ = meta.reloadFromKV() +func (meta *meta) UpdateSegment(segment *datapb.SegmentInfo) error { + meta.Lock() + defer meta.Unlock() + seg, ok := meta.segments[segment.ID] + if !ok { + return newErrSegmentNotFound(segment.ID) + } + seg.OpenTime = segment.OpenTime + seg.SealedTime = segment.SealedTime + seg.NumRows = segment.NumRows + seg.MemSize = segment.MemSize + seg.StartPosition = proto.Clone(segment.StartPosition).(*internalpb.MsgPosition) + seg.EndPosition = proto.Clone(segment.EndPosition).(*internalpb.MsgPosition) + + if err := meta.saveSegmentInfo(segment); err != nil { return err } return nil } func (meta *meta) DropSegment(segmentID UniqueID) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() + meta.Lock() + defer meta.Unlock() - if _, ok := meta.segID2Info[segmentID]; !ok { + segment, ok := meta.segments[segmentID] + if !ok { return newErrSegmentNotFound(segmentID) } - delete(meta.segID2Info, segmentID) - if err := meta.removeSegmentInfo(segmentID); err != nil { - _ = meta.reloadFromKV() + if err := meta.removeSegmentInfo(segment); err != nil { return err } + delete(meta.segments, segmentID) return nil } func (meta *meta) GetSegment(segID UniqueID) (*datapb.SegmentInfo, error) { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() + meta.RLock() + defer meta.RUnlock() - segmentInfo, ok := meta.segID2Info[segID] + segment, ok := meta.segments[segID] if !ok { return nil, newErrSegmentNotFound(segID) } - return segmentInfo, nil + return proto.Clone(segment).(*datapb.SegmentInfo), nil } func (meta *meta) OpenSegment(segmentID UniqueID, timetick Timestamp) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() + meta.Lock() + defer meta.Unlock() - segInfo, ok := meta.segID2Info[segmentID] + segInfo, ok := meta.segments[segmentID] if !ok { return newErrSegmentNotFound(segmentID) } segInfo.OpenTime = timetick - - err := meta.saveSegmentInfo(segInfo) - if err != nil { - _ = meta.reloadFromKV() + if err := meta.saveSegmentInfo(segInfo); err != nil { return err } return nil } func (meta *meta) SealSegment(segID UniqueID, timetick Timestamp) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() + meta.Lock() + defer meta.Unlock() - segInfo, ok := meta.segID2Info[segID] + segInfo, ok := meta.segments[segID] if !ok { return newErrSegmentNotFound(segID) } segInfo.SealedTime = timetick - - err := meta.saveSegmentInfo(segInfo) - if err != nil { - _ = meta.reloadFromKV() + if err := meta.saveSegmentInfo(segInfo); err != nil { return err } return nil } func (meta *meta) FlushSegment(segID UniqueID, timetick Timestamp) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() + meta.Lock() + defer meta.Unlock() - segInfo, ok := meta.segID2Info[segID] + segInfo, ok := meta.segments[segID] if !ok { return newErrSegmentNotFound(segID) } - segInfo.FlushedTime = timetick segInfo.State = commonpb.SegmentState_Flushed - err := meta.saveSegmentInfo(segInfo) - if err != nil { - _ = meta.reloadFromKV() + if err := meta.saveSegmentInfo(segInfo); err != nil { return err } return nil } func (meta *meta) SetSegmentState(segmentID UniqueID, state commonpb.SegmentState) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() + meta.Lock() + defer meta.Unlock() - segInfo, ok := meta.segID2Info[segmentID] + segInfo, ok := meta.segments[segmentID] if !ok { return newErrSegmentNotFound(segmentID) } segInfo.State = state - err := meta.saveSegmentInfo(segInfo) - if err != nil { - _ = meta.reloadFromKV() + if err := meta.saveSegmentInfo(segInfo); err != nil { return err } return nil } func (meta *meta) GetSegmentsOfCollection(collectionID UniqueID) []UniqueID { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() + meta.RLock() + defer meta.RUnlock() ret := make([]UniqueID, 0) - for _, info := range meta.segID2Info { + for _, info := range meta.segments { if info.CollectionID == collectionID { - ret = append(ret, info.SegmentID) + ret = append(ret, info.ID) } } return ret } func (meta *meta) GetSegmentsOfPartition(collectionID, partitionID UniqueID) []UniqueID { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() + meta.RLock() + defer meta.RUnlock() ret := make([]UniqueID, 0) - for _, info := range meta.segID2Info { + for _, info := range meta.segments { if info.CollectionID == collectionID && info.PartitionID == partitionID { - ret = append(ret, info.SegmentID) + ret = append(ret, info.ID) } } return ret } func (meta *meta) AddPartition(collectionID UniqueID, partitionID UniqueID) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() - coll, ok := meta.collID2Info[collectionID] + meta.Lock() + defer meta.Unlock() + coll, ok := meta.collections[collectionID] if !ok { return newErrCollectionNotFound(collectionID) } @@ -321,10 +315,10 @@ func (meta *meta) AddPartition(collectionID UniqueID, partitionID UniqueID) erro } func (meta *meta) DropPartition(collID UniqueID, partitionID UniqueID) error { - meta.ddLock.Lock() - defer meta.ddLock.Unlock() + meta.Lock() + defer meta.Unlock() - collection, ok := meta.collID2Info[collID] + collection, ok := meta.collections[collID] if !ok { return newErrCollectionNotFound(collID) } @@ -339,26 +333,25 @@ func (meta *meta) DropPartition(collID UniqueID, partitionID UniqueID) error { return fmt.Errorf("cannot find partition id %d", partitionID) } - ids := make([]UniqueID, 0) - for i, info := range meta.segID2Info { - if info.PartitionID == partitionID { - delete(meta.segID2Info, i) - ids = append(ids, i) - } - } - if err := meta.removeSegments(ids); err != nil { - _ = meta.reloadFromKV() + prefix := fmt.Sprintf("%s/%d/%d/", segmentPrefix, collID, partitionID) + if err := meta.client.RemoveWithPrefix(prefix); err != nil { return err } collection.Partitions = append(collection.Partitions[:idx], collection.Partitions[idx+1:]...) + + for i, info := range meta.segments { + if info.PartitionID == partitionID { + delete(meta.segments, i) + } + } return nil } func (meta *meta) GetNumRowsOfPartition(collectionID UniqueID, partitionID UniqueID) (int64, error) { - meta.ddLock.RLock() - defer meta.ddLock.RUnlock() + meta.RLock() + defer meta.RUnlock() var ret int64 = 0 - for _, info := range meta.segID2Info { + for _, info := range meta.segments { if info.CollectionID == collectionID && info.PartitionID == partitionID { ret += info.NumRows } @@ -366,27 +359,21 @@ func (meta *meta) GetNumRowsOfPartition(collectionID UniqueID, partitionID Uniqu return ret, nil } -func (meta *meta) saveSegmentInfo(segmentInfo *datapb.SegmentInfo) error { - segBytes := proto.MarshalTextString(segmentInfo) +func (meta *meta) saveSegmentInfo(segment *datapb.SegmentInfo) error { + segBytes := proto.MarshalTextString(segment) - return meta.client.Save("/segment/"+strconv.FormatInt(segmentInfo.SegmentID, 10), segBytes) + key := fmt.Sprintf("%s/%d/%d/%d", segmentPrefix, segment.CollectionID, segment.PartitionID, segment.ID) + return meta.client.Save(key, segBytes) } -func (meta *meta) removeSegmentInfo(segID UniqueID) error { - return meta.client.Remove("/segment/" + strconv.FormatInt(segID, 10)) -} - -func (meta *meta) removeSegments(segIDs []UniqueID) error { - segmentPaths := make([]string, len(segIDs)) - for i, id := range segIDs { - segmentPaths[i] = "/segment/" + strconv.FormatInt(id, 10) - } - return meta.client.MultiRemove(segmentPaths) +func (meta *meta) removeSegmentInfo(segment *datapb.SegmentInfo) error { + key := fmt.Sprintf("%s/%d/%d/%d", segmentPrefix, segment.CollectionID, segment.PartitionID, segment.ID) + return meta.client.Remove(key) } func BuildSegment(collectionID UniqueID, partitionID UniqueID, segmentID UniqueID, channelName string) (*datapb.SegmentInfo, error) { return &datapb.SegmentInfo{ - SegmentID: segmentID, + ID: segmentID, CollectionID: collectionID, PartitionID: partitionID, InsertChannel: channelName, diff --git a/internal/dataservice/meta_test.go b/internal/dataservice/meta_test.go index 437ca3c41..d32e93509 100644 --- a/internal/dataservice/meta_test.go +++ b/internal/dataservice/meta_test.go @@ -3,6 +3,10 @@ package dataservice import ( "testing" + "github.com/golang/protobuf/proto" + + "github.com/zilliztech/milvus-distributed/internal/proto/datapb" + "github.com/stretchr/testify/assert" ) @@ -13,13 +17,13 @@ func TestCollection(t *testing.T) { testSchema := newTestSchema() id, err := mockAllocator.allocID() assert.Nil(t, err) - err = meta.AddCollection(&collectionInfo{ + err = meta.AddCollection(&datapb.CollectionInfo{ ID: id, Schema: testSchema, Partitions: []UniqueID{100}, }) assert.Nil(t, err) - err = meta.AddCollection(&collectionInfo{ + err = meta.AddCollection(&datapb.CollectionInfo{ ID: id, Schema: testSchema, }) @@ -52,20 +56,20 @@ func TestSegment(t *testing.T) { assert.Nil(t, err) err = meta.AddSegment(segmentInfo) assert.Nil(t, err) - info, err := meta.GetSegment(segmentInfo.SegmentID) + info, err := meta.GetSegment(segmentInfo.ID) assert.Nil(t, err) - assert.EqualValues(t, segmentInfo, info) + assert.True(t, proto.Equal(info, segmentInfo)) ids := meta.GetSegmentsOfCollection(id) assert.EqualValues(t, 1, len(ids)) - assert.EqualValues(t, segmentInfo.SegmentID, ids[0]) + assert.EqualValues(t, segmentInfo.ID, ids[0]) ids = meta.GetSegmentsOfPartition(id, 100) assert.EqualValues(t, 1, len(ids)) - assert.EqualValues(t, segmentInfo.SegmentID, ids[0]) - err = meta.SealSegment(segmentInfo.SegmentID, 100) + assert.EqualValues(t, segmentInfo.ID, ids[0]) + err = meta.SealSegment(segmentInfo.ID, 100) assert.Nil(t, err) - err = meta.FlushSegment(segmentInfo.SegmentID, 200) + err = meta.FlushSegment(segmentInfo.ID, 200) assert.Nil(t, err) - info, err = meta.GetSegment(segmentInfo.SegmentID) + info, err = meta.GetSegment(segmentInfo.ID) assert.Nil(t, err) assert.NotZero(t, info.SealedTime) assert.NotZero(t, info.FlushedTime) @@ -81,7 +85,7 @@ func TestPartition(t *testing.T) { err = meta.AddPartition(id, 10) assert.NotNil(t, err) - err = meta.AddCollection(&collectionInfo{ + err = meta.AddCollection(&datapb.CollectionInfo{ ID: id, Schema: testSchema, Partitions: []UniqueID{}, diff --git a/internal/dataservice/segment_allocator.go b/internal/dataservice/segment_allocator.go index 8634f6a98..ac4d3aed0 100644 --- a/internal/dataservice/segment_allocator.go +++ b/internal/dataservice/segment_allocator.go @@ -90,8 +90,8 @@ func (allocator *segmentAllocator) OpenSegment(ctx context.Context, segmentInfo defer sp.Finish() allocator.mu.Lock() defer allocator.mu.Unlock() - if _, ok := allocator.segments[segmentInfo.SegmentID]; ok { - return fmt.Errorf("segment %d already exist", segmentInfo.SegmentID) + if _, ok := allocator.segments[segmentInfo.ID]; ok { + return fmt.Errorf("segment %d already exist", segmentInfo.ID) } totalRows, err := allocator.estimateTotalRows(segmentInfo.CollectionID) if err != nil { @@ -99,10 +99,10 @@ func (allocator *segmentAllocator) OpenSegment(ctx context.Context, segmentInfo } log.Debug("dataservice: estimateTotalRows: ", zap.Int64("CollectionID", segmentInfo.CollectionID), - zap.Int64("SegmentID", segmentInfo.SegmentID), + zap.Int64("SegmentID", segmentInfo.ID), zap.Int("Rows", totalRows)) - allocator.segments[segmentInfo.SegmentID] = &segmentStatus{ - id: segmentInfo.SegmentID, + allocator.segments[segmentInfo.ID] = &segmentStatus{ + id: segmentInfo.ID, collectionID: segmentInfo.CollectionID, partitionID: segmentInfo.PartitionID, total: totalRows, diff --git a/internal/dataservice/segment_allocator_test.go b/internal/dataservice/segment_allocator_test.go index cdce69d00..3590a17da 100644 --- a/internal/dataservice/segment_allocator_test.go +++ b/internal/dataservice/segment_allocator_test.go @@ -8,6 +8,8 @@ import ( "testing" "time" + "github.com/zilliztech/milvus-distributed/internal/proto/datapb" + "github.com/zilliztech/milvus-distributed/internal/util/tsoutil" "github.com/stretchr/testify/assert" @@ -24,7 +26,7 @@ func TestAllocSegment(t *testing.T) { schema := newTestSchema() collID, err := mockAllocator.allocID() assert.Nil(t, err) - err = meta.AddCollection(&collectionInfo{ + err = meta.AddCollection(&datapb.CollectionInfo{ ID: collID, Schema: schema, }) @@ -75,7 +77,7 @@ func TestSealSegment(t *testing.T) { schema := newTestSchema() collID, err := mockAllocator.allocID() assert.Nil(t, err) - err = meta.AddCollection(&collectionInfo{ + err = meta.AddCollection(&datapb.CollectionInfo{ ID: collID, Schema: schema, }) @@ -90,7 +92,7 @@ func TestSealSegment(t *testing.T) { assert.Nil(t, err) err = segAllocator.OpenSegment(ctx, segmentInfo) assert.Nil(t, err) - lastSegID = segmentInfo.SegmentID + lastSegID = segmentInfo.ID } err = segAllocator.SealSegment(ctx, lastSegID) @@ -112,7 +114,7 @@ func TestExpireSegment(t *testing.T) { schema := newTestSchema() collID, err := mockAllocator.allocID() assert.Nil(t, err) - err = meta.AddCollection(&collectionInfo{ + err = meta.AddCollection(&datapb.CollectionInfo{ ID: collID, Schema: schema, }) diff --git a/internal/dataservice/server.go b/internal/dataservice/server.go index e7f65931c..cfa45372f 100644 --- a/internal/dataservice/server.go +++ b/internal/dataservice/server.go @@ -246,7 +246,7 @@ func (s *Server) loadMetaFromMaster() error { log.Error("show partitions error", zap.String("collectionName", collectionName), zap.Int64("collectionID", collection.CollectionID), zap.Error(err)) continue } - err = s.meta.AddCollection(&collectionInfo{ + err = s.meta.AddCollection(&datapb.CollectionInfo{ ID: collection.CollectionID, Schema: collection.Schema, Partitions: partitions.PartitionIDs, @@ -615,7 +615,7 @@ func (s *Server) loadCollectionFromMaster(ctx context.Context, collectionID int6 if err = VerifyResponse(resp, err); err != nil { return err } - collInfo := &collectionInfo{ + collInfo := &datapb.CollectionInfo{ ID: resp.CollectionID, Schema: resp.Schema, } @@ -797,14 +797,14 @@ func (s *Server) GetSegmentInfo(ctx context.Context, req *datapb.GetSegmentInfoR resp.Status.Reason = "data service is not healthy" return resp, nil } - infos := make([]*datapb.SegmentInfo, len(req.SegmentIDs)) - for i, id := range req.SegmentIDs { - segmentInfo, err := s.meta.GetSegment(id) + infos := make([]*datapb.SegmentInfo, 0, len(req.SegmentIDs)) + for _, id := range req.SegmentIDs { + info, err := s.meta.GetSegment(id) if err != nil { resp.Status.Reason = err.Error() return resp, nil } - infos[i] = proto.Clone(segmentInfo).(*datapb.SegmentInfo) + infos = append(infos, info) } resp.Status.ErrorCode = commonpb.ErrorCode_Success resp.Infos = infos diff --git a/internal/dataservice/stats_handler.go b/internal/dataservice/stats_handler.go index c1a105110..8bc7dd3be 100644 --- a/internal/dataservice/stats_handler.go +++ b/internal/dataservice/stats_handler.go @@ -34,6 +34,6 @@ func (handler *statsHandler) HandleSegmentStat(segStats *internalpb.SegmentStati segMeta.SealedTime = segStats.EndTime segMeta.NumRows = segStats.NumRows segMeta.MemSize = segStats.MemorySize - log.Debug("stats_handler update segment", zap.Any("segmentID", segMeta.SegmentID), zap.Any("State", segMeta.State)) + log.Debug("stats_handler update segment", zap.Any("segmentID", segMeta.ID), zap.Any("State", segMeta.State)) return handler.meta.UpdateSegment(segMeta) } diff --git a/internal/dataservice/watcher.go b/internal/dataservice/watcher.go index 7fef27d84..9f0b408d3 100644 --- a/internal/dataservice/watcher.go +++ b/internal/dataservice/watcher.go @@ -102,7 +102,7 @@ func (watcher *dataNodeTimeTickWatcher) handleTimeTickMsg(msg *msgstream.TimeTic log.Error("set segment state error", zap.Int64("segmentID", id), zap.Error(err)) continue } - collID, segID := sInfo.CollectionID, sInfo.SegmentID + collID, segID := sInfo.CollectionID, sInfo.ID coll2Segs[collID] = append(coll2Segs[collID], segID) watcher.allocator.DropSegment(ctx, id) } diff --git a/internal/dataservice/watcher_test.go b/internal/dataservice/watcher_test.go index c16f2267f..ea19559ee 100644 --- a/internal/dataservice/watcher_test.go +++ b/internal/dataservice/watcher_test.go @@ -6,6 +6,8 @@ import ( "testing" "time" + "github.com/zilliztech/milvus-distributed/internal/proto/datapb" + "github.com/zilliztech/milvus-distributed/internal/msgstream" "github.com/zilliztech/milvus-distributed/internal/proto/commonpb" "github.com/zilliztech/milvus-distributed/internal/proto/internalpb" @@ -29,7 +31,7 @@ func TestDataNodeTTWatcher(t *testing.T) { id, err := allocator.allocID() assert.Nil(t, err) - err = meta.AddCollection(&collectionInfo{ + err = meta.AddCollection(&datapb.CollectionInfo{ Schema: schema, ID: id, }) diff --git a/internal/distributed/masterservice/masterservice_test.go b/internal/distributed/masterservice/masterservice_test.go index 5e1eede15..11e60cf2a 100644 --- a/internal/distributed/masterservice/masterservice_test.go +++ b/internal/distributed/masterservice/masterservice_test.go @@ -407,7 +407,7 @@ func TestGrpcService(t *testing.T) { assert.Nil(t, err) assert.Zero(t, len(part.SegmentIDs)) seg := &datapb.SegmentInfo{ - SegmentID: 1000, + ID: 1000, CollectionID: coll.ID, PartitionID: part.PartitionID, } @@ -521,7 +521,7 @@ func TestGrpcService(t *testing.T) { assert.Nil(t, err) assert.Equal(t, len(part.SegmentIDs), 1) seg := &datapb.SegmentInfo{ - SegmentID: 1001, + ID: 1001, CollectionID: coll.ID, PartitionID: part.PartitionID, } diff --git a/internal/kv/kv.go b/internal/kv/kv.go index a3b77cbd2..332cb5015 100644 --- a/internal/kv/kv.go +++ b/internal/kv/kv.go @@ -8,6 +8,7 @@ type Base interface { MultiSave(kvs map[string]string) error Remove(key string) error MultiRemove(keys []string) error + RemoveWithPrefix(key string) error Close() } diff --git a/internal/kv/mem/mem_kv.go b/internal/kv/mem/mem_kv.go index 858cb2329..41f297052 100644 --- a/internal/kv/mem/mem_kv.go +++ b/internal/kv/mem/mem_kv.go @@ -116,6 +116,7 @@ func (kv *MemoryKV) LoadWithPrefix(key string) ([]string, []string, error) { keys := make([]string, 0) values := make([]string, 0) + kv.tree.Ascend(func(i btree.Item) bool { if strings.HasPrefix(i.(memoryKVItem).key, key) { keys = append(keys, i.(memoryKVItem).key) @@ -135,3 +136,21 @@ func (kv *MemoryKV) MultiRemoveWithPrefix(keys []string) error { func (kv *MemoryKV) MultiSaveAndRemoveWithPrefix(saves map[string]string, removals []string) error { panic("not implement") } + +func (kv *MemoryKV) RemoveWithPrefix(key string) error { + kv.Lock() + defer kv.Unlock() + + keys := make([]btree.Item, 0) + + kv.tree.Ascend(func(i btree.Item) bool { + if strings.HasPrefix(i.(memoryKVItem).key, key) { + keys = append(keys, i.(memoryKVItem)) + } + return true + }) + for _, item := range keys { + kv.tree.Delete(item) + } + return nil +} diff --git a/internal/masterservice/master_service.go b/internal/masterservice/master_service.go index 9cb39106e..80d3d622a 100644 --- a/internal/masterservice/master_service.go +++ b/internal/masterservice/master_service.go @@ -289,7 +289,7 @@ func (c *Core) startDataServiceSegmentLoop() { //what if master add segment failed, but data service success? log.Warn("add segment info meta table failed ", zap.String("error", err.Error())) } else { - log.Debug("add segment", zap.Int64("collection id", seg.CollectionID), zap.Int64("partition id", seg.PartitionID), zap.Int64("segment id", seg.SegmentID)) + log.Debug("add segment", zap.Int64("collection id", seg.CollectionID), zap.Int64("partition id", seg.PartitionID), zap.Int64("segment id", seg.ID)) } } } diff --git a/internal/masterservice/master_service_test.go b/internal/masterservice/master_service_test.go index b40aa1a1d..b5c7e70d5 100644 --- a/internal/masterservice/master_service_test.go +++ b/internal/masterservice/master_service_test.go @@ -563,7 +563,7 @@ func TestMasterService(t *testing.T) { assert.Zero(t, len(part.SegmentIDs)) seg := &datapb.SegmentInfo{ - SegmentID: 1000, + ID: 1000, CollectionID: coll.ID, PartitionID: part.PartitionID, } @@ -722,7 +722,7 @@ func TestMasterService(t *testing.T) { assert.Equal(t, len(part.SegmentIDs), 1) seg := &datapb.SegmentInfo{ - SegmentID: 1001, + ID: 1001, CollectionID: coll.ID, PartitionID: part.PartitionID, } diff --git a/internal/masterservice/meta_table.go b/internal/masterservice/meta_table.go index 9fdf086bb..5ba11c140 100644 --- a/internal/masterservice/meta_table.go +++ b/internal/masterservice/meta_table.go @@ -543,17 +543,17 @@ func (mt *metaTable) AddSegment(seg *datapb.SegmentInfo) error { } exist = false for _, segID := range partMeta.SegmentIDs { - if segID == seg.SegmentID { + if segID == seg.ID { exist = true } } if exist { - return fmt.Errorf("segment id = %d exist", seg.SegmentID) + return fmt.Errorf("segment id = %d exist", seg.ID) } - partMeta.SegmentIDs = append(partMeta.SegmentIDs, seg.SegmentID) + partMeta.SegmentIDs = append(partMeta.SegmentIDs, seg.ID) mt.partitionID2Meta[seg.PartitionID] = partMeta - mt.segID2CollID[seg.SegmentID] = seg.CollectionID - mt.segID2PartitionID[seg.SegmentID] = seg.PartitionID + mt.segID2CollID[seg.ID] = seg.CollectionID + mt.segID2PartitionID[seg.ID] = seg.PartitionID k := fmt.Sprintf("%s/%d/%d", PartitionMetaPrefix, seg.CollectionID, seg.PartitionID) v := proto.MarshalTextString(&partMeta) diff --git a/internal/masterservice/meta_table_test.go b/internal/masterservice/meta_table_test.go index ea1be17a1..b50037af0 100644 --- a/internal/masterservice/meta_table_test.go +++ b/internal/masterservice/meta_table_test.go @@ -126,13 +126,13 @@ func TestMetaTable(t *testing.T) { t.Run("add segment", func(t *testing.T) { seg := &datapb.SegmentInfo{ - SegmentID: 100, + ID: 100, CollectionID: 1, PartitionID: 10, } assert.Nil(t, mt.AddSegment(seg)) assert.NotNil(t, mt.AddSegment(seg)) - seg.SegmentID = 101 + seg.ID = 101 seg.CollectionID = 2 assert.NotNil(t, mt.AddSegment(seg)) seg.CollectionID = 1 diff --git a/internal/proto/data_service.proto b/internal/proto/data_service.proto index c895d34bb..424465406 100644 --- a/internal/proto/data_service.proto +++ b/internal/proto/data_service.proto @@ -7,6 +7,7 @@ option go_package = "github.com/zilliztech/milvus-distributed/internal/proto/dat import "common.proto"; import "internal.proto"; import "milvus.proto"; +import "schema.proto"; service DataService { rpc GetComponentStates(internal.GetComponentStatesRequest) returns (internal.ComponentStates) {} @@ -120,21 +121,6 @@ message GetSegmentInfoRequest { repeated int64 segmentIDs = 2; } -message SegmentInfo { - int64 segmentID = 1; - int64 collectionID = 2; - int64 partitionID = 3; - string insert_channel = 4; - uint64 open_time = 5; - uint64 sealed_time = 6; - uint64 flushed_time = 7; - int64 num_rows = 8; - int64 mem_size = 9; - common.SegmentState state = 10; - internal.MsgPosition start_position = 11; - internal.MsgPosition end_position = 12; -} - message GetSegmentInfoResponse { common.Status status = 1; repeated SegmentInfo infos = 2; @@ -227,3 +213,23 @@ message DDLFlushMeta { int64 collectionID = 1; repeated string binlog_paths = 2; } + +message CollectionInfo { + int64 ID = 1; + schema.CollectionSchema schema = 2; + repeated int64 partitions = 3; +} +message SegmentInfo { + int64 ID = 1; + int64 collectionID = 2; + int64 partitionID = 3; + string insert_channel = 4; + uint64 open_time = 5; + uint64 sealed_time = 6; + uint64 flushed_time = 7; + int64 num_rows = 8; + int64 mem_size = 9; + common.SegmentState state = 10; + internal.MsgPosition start_position = 11; + internal.MsgPosition end_position = 12; +} diff --git a/internal/proto/datapb/data_service.pb.go b/internal/proto/datapb/data_service.pb.go index d6b28a62c..6bd165d3b 100644 --- a/internal/proto/datapb/data_service.pb.go +++ b/internal/proto/datapb/data_service.pb.go @@ -10,6 +10,7 @@ import ( commonpb "github.com/zilliztech/milvus-distributed/internal/proto/commonpb" internalpb "github.com/zilliztech/milvus-distributed/internal/proto/internalpb" milvuspb "github.com/zilliztech/milvus-distributed/internal/proto/milvuspb" + schemapb "github.com/zilliztech/milvus-distributed/internal/proto/schemapb" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -774,133 +775,6 @@ func (m *GetSegmentInfoRequest) GetSegmentIDs() []int64 { return nil } -type SegmentInfo struct { - SegmentID int64 `protobuf:"varint,1,opt,name=segmentID,proto3" json:"segmentID,omitempty"` - CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"` - PartitionID int64 `protobuf:"varint,3,opt,name=partitionID,proto3" json:"partitionID,omitempty"` - InsertChannel string `protobuf:"bytes,4,opt,name=insert_channel,json=insertChannel,proto3" json:"insert_channel,omitempty"` - OpenTime uint64 `protobuf:"varint,5,opt,name=open_time,json=openTime,proto3" json:"open_time,omitempty"` - SealedTime uint64 `protobuf:"varint,6,opt,name=sealed_time,json=sealedTime,proto3" json:"sealed_time,omitempty"` - FlushedTime uint64 `protobuf:"varint,7,opt,name=flushed_time,json=flushedTime,proto3" json:"flushed_time,omitempty"` - NumRows int64 `protobuf:"varint,8,opt,name=num_rows,json=numRows,proto3" json:"num_rows,omitempty"` - MemSize int64 `protobuf:"varint,9,opt,name=mem_size,json=memSize,proto3" json:"mem_size,omitempty"` - State commonpb.SegmentState `protobuf:"varint,10,opt,name=state,proto3,enum=milvus.proto.common.SegmentState" json:"state,omitempty"` - StartPosition *internalpb.MsgPosition `protobuf:"bytes,11,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"` - EndPosition *internalpb.MsgPosition `protobuf:"bytes,12,opt,name=end_position,json=endPosition,proto3" json:"end_position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SegmentInfo) Reset() { *m = SegmentInfo{} } -func (m *SegmentInfo) String() string { return proto.CompactTextString(m) } -func (*SegmentInfo) ProtoMessage() {} -func (*SegmentInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{13} -} - -func (m *SegmentInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SegmentInfo.Unmarshal(m, b) -} -func (m *SegmentInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SegmentInfo.Marshal(b, m, deterministic) -} -func (m *SegmentInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_SegmentInfo.Merge(m, src) -} -func (m *SegmentInfo) XXX_Size() int { - return xxx_messageInfo_SegmentInfo.Size(m) -} -func (m *SegmentInfo) XXX_DiscardUnknown() { - xxx_messageInfo_SegmentInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_SegmentInfo proto.InternalMessageInfo - -func (m *SegmentInfo) GetSegmentID() int64 { - if m != nil { - return m.SegmentID - } - return 0 -} - -func (m *SegmentInfo) GetCollectionID() int64 { - if m != nil { - return m.CollectionID - } - return 0 -} - -func (m *SegmentInfo) GetPartitionID() int64 { - if m != nil { - return m.PartitionID - } - return 0 -} - -func (m *SegmentInfo) GetInsertChannel() string { - if m != nil { - return m.InsertChannel - } - return "" -} - -func (m *SegmentInfo) GetOpenTime() uint64 { - if m != nil { - return m.OpenTime - } - return 0 -} - -func (m *SegmentInfo) GetSealedTime() uint64 { - if m != nil { - return m.SealedTime - } - return 0 -} - -func (m *SegmentInfo) GetFlushedTime() uint64 { - if m != nil { - return m.FlushedTime - } - return 0 -} - -func (m *SegmentInfo) GetNumRows() int64 { - if m != nil { - return m.NumRows - } - return 0 -} - -func (m *SegmentInfo) GetMemSize() int64 { - if m != nil { - return m.MemSize - } - return 0 -} - -func (m *SegmentInfo) GetState() commonpb.SegmentState { - if m != nil { - return m.State - } - return commonpb.SegmentState_SegmentStateNone -} - -func (m *SegmentInfo) GetStartPosition() *internalpb.MsgPosition { - if m != nil { - return m.StartPosition - } - return nil -} - -func (m *SegmentInfo) GetEndPosition() *internalpb.MsgPosition { - if m != nil { - return m.EndPosition - } - return nil -} - type GetSegmentInfoResponse struct { Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` Infos []*SegmentInfo `protobuf:"bytes,2,rep,name=infos,proto3" json:"infos,omitempty"` @@ -913,7 +787,7 @@ func (m *GetSegmentInfoResponse) Reset() { *m = GetSegmentInfoResponse{} func (m *GetSegmentInfoResponse) String() string { return proto.CompactTextString(m) } func (*GetSegmentInfoResponse) ProtoMessage() {} func (*GetSegmentInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{14} + return fileDescriptor_3385cd32ad6cfe64, []int{13} } func (m *GetSegmentInfoResponse) XXX_Unmarshal(b []byte) error { @@ -960,7 +834,7 @@ func (m *GetInsertBinlogPathsRequest) Reset() { *m = GetInsertBinlogPath func (m *GetInsertBinlogPathsRequest) String() string { return proto.CompactTextString(m) } func (*GetInsertBinlogPathsRequest) ProtoMessage() {} func (*GetInsertBinlogPathsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{15} + return fileDescriptor_3385cd32ad6cfe64, []int{14} } func (m *GetInsertBinlogPathsRequest) XXX_Unmarshal(b []byte) error { @@ -1008,7 +882,7 @@ func (m *GetInsertBinlogPathsResponse) Reset() { *m = GetInsertBinlogPat func (m *GetInsertBinlogPathsResponse) String() string { return proto.CompactTextString(m) } func (*GetInsertBinlogPathsResponse) ProtoMessage() {} func (*GetInsertBinlogPathsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{16} + return fileDescriptor_3385cd32ad6cfe64, []int{15} } func (m *GetInsertBinlogPathsResponse) XXX_Unmarshal(b []byte) error { @@ -1063,7 +937,7 @@ func (m *GetInsertChannelsRequest) Reset() { *m = GetInsertChannelsReque func (m *GetInsertChannelsRequest) String() string { return proto.CompactTextString(m) } func (*GetInsertChannelsRequest) ProtoMessage() {} func (*GetInsertChannelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{17} + return fileDescriptor_3385cd32ad6cfe64, []int{16} } func (m *GetInsertChannelsRequest) XXX_Unmarshal(b []byte) error { @@ -1118,7 +992,7 @@ func (m *GetCollectionStatisticsRequest) Reset() { *m = GetCollectionSta func (m *GetCollectionStatisticsRequest) String() string { return proto.CompactTextString(m) } func (*GetCollectionStatisticsRequest) ProtoMessage() {} func (*GetCollectionStatisticsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{18} + return fileDescriptor_3385cd32ad6cfe64, []int{17} } func (m *GetCollectionStatisticsRequest) XXX_Unmarshal(b []byte) error { @@ -1172,7 +1046,7 @@ func (m *GetCollectionStatisticsResponse) Reset() { *m = GetCollectionSt func (m *GetCollectionStatisticsResponse) String() string { return proto.CompactTextString(m) } func (*GetCollectionStatisticsResponse) ProtoMessage() {} func (*GetCollectionStatisticsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{19} + return fileDescriptor_3385cd32ad6cfe64, []int{18} } func (m *GetCollectionStatisticsResponse) XXX_Unmarshal(b []byte) error { @@ -1221,7 +1095,7 @@ func (m *GetPartitionStatisticsRequest) Reset() { *m = GetPartitionStati func (m *GetPartitionStatisticsRequest) String() string { return proto.CompactTextString(m) } func (*GetPartitionStatisticsRequest) ProtoMessage() {} func (*GetPartitionStatisticsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{20} + return fileDescriptor_3385cd32ad6cfe64, []int{19} } func (m *GetPartitionStatisticsRequest) XXX_Unmarshal(b []byte) error { @@ -1282,7 +1156,7 @@ func (m *GetPartitionStatisticsResponse) Reset() { *m = GetPartitionStat func (m *GetPartitionStatisticsResponse) String() string { return proto.CompactTextString(m) } func (*GetPartitionStatisticsResponse) ProtoMessage() {} func (*GetPartitionStatisticsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{21} + return fileDescriptor_3385cd32ad6cfe64, []int{20} } func (m *GetPartitionStatisticsResponse) XXX_Unmarshal(b []byte) error { @@ -1327,7 +1201,7 @@ func (m *GetSegmentInfoChannelRequest) Reset() { *m = GetSegmentInfoChan func (m *GetSegmentInfoChannelRequest) String() string { return proto.CompactTextString(m) } func (*GetSegmentInfoChannelRequest) ProtoMessage() {} func (*GetSegmentInfoChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{22} + return fileDescriptor_3385cd32ad6cfe64, []int{21} } func (m *GetSegmentInfoChannelRequest) XXX_Unmarshal(b []byte) error { @@ -1360,7 +1234,7 @@ func (m *WatchDmChannelsRequest) Reset() { *m = WatchDmChannelsRequest{} func (m *WatchDmChannelsRequest) String() string { return proto.CompactTextString(m) } func (*WatchDmChannelsRequest) ProtoMessage() {} func (*WatchDmChannelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{23} + return fileDescriptor_3385cd32ad6cfe64, []int{22} } func (m *WatchDmChannelsRequest) XXX_Unmarshal(b []byte) error { @@ -1409,7 +1283,7 @@ func (m *FlushSegmentsRequest) Reset() { *m = FlushSegmentsRequest{} } func (m *FlushSegmentsRequest) String() string { return proto.CompactTextString(m) } func (*FlushSegmentsRequest) ProtoMessage() {} func (*FlushSegmentsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{24} + return fileDescriptor_3385cd32ad6cfe64, []int{23} } func (m *FlushSegmentsRequest) XXX_Unmarshal(b []byte) error { @@ -1470,7 +1344,7 @@ func (m *SegmentMsg) Reset() { *m = SegmentMsg{} } func (m *SegmentMsg) String() string { return proto.CompactTextString(m) } func (*SegmentMsg) ProtoMessage() {} func (*SegmentMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{25} + return fileDescriptor_3385cd32ad6cfe64, []int{24} } func (m *SegmentMsg) XXX_Unmarshal(b []byte) error { @@ -1518,7 +1392,7 @@ func (m *SegmentFieldBinlogMeta) Reset() { *m = SegmentFieldBinlogMeta{} func (m *SegmentFieldBinlogMeta) String() string { return proto.CompactTextString(m) } func (*SegmentFieldBinlogMeta) ProtoMessage() {} func (*SegmentFieldBinlogMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{26} + return fileDescriptor_3385cd32ad6cfe64, []int{25} } func (m *SegmentFieldBinlogMeta) XXX_Unmarshal(b []byte) error { @@ -1566,7 +1440,7 @@ func (m *DDLBinlogMeta) Reset() { *m = DDLBinlogMeta{} } func (m *DDLBinlogMeta) String() string { return proto.CompactTextString(m) } func (*DDLBinlogMeta) ProtoMessage() {} func (*DDLBinlogMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{27} + return fileDescriptor_3385cd32ad6cfe64, []int{26} } func (m *DDLBinlogMeta) XXX_Unmarshal(b []byte) error { @@ -1613,7 +1487,7 @@ func (m *FieldFlushMeta) Reset() { *m = FieldFlushMeta{} } func (m *FieldFlushMeta) String() string { return proto.CompactTextString(m) } func (*FieldFlushMeta) ProtoMessage() {} func (*FieldFlushMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{28} + return fileDescriptor_3385cd32ad6cfe64, []int{27} } func (m *FieldFlushMeta) XXX_Unmarshal(b []byte) error { @@ -1661,7 +1535,7 @@ func (m *SegmentFlushMeta) Reset() { *m = SegmentFlushMeta{} } func (m *SegmentFlushMeta) String() string { return proto.CompactTextString(m) } func (*SegmentFlushMeta) ProtoMessage() {} func (*SegmentFlushMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{29} + return fileDescriptor_3385cd32ad6cfe64, []int{28} } func (m *SegmentFlushMeta) XXX_Unmarshal(b []byte) error { @@ -1715,7 +1589,7 @@ func (m *DDLFlushMeta) Reset() { *m = DDLFlushMeta{} } func (m *DDLFlushMeta) String() string { return proto.CompactTextString(m) } func (*DDLFlushMeta) ProtoMessage() {} func (*DDLFlushMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_3385cd32ad6cfe64, []int{30} + return fileDescriptor_3385cd32ad6cfe64, []int{29} } func (m *DDLFlushMeta) XXX_Unmarshal(b []byte) error { @@ -1750,6 +1624,188 @@ func (m *DDLFlushMeta) GetBinlogPaths() []string { return nil } +type CollectionInfo struct { + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + Schema *schemapb.CollectionSchema `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` + Partitions []int64 `protobuf:"varint,3,rep,packed,name=partitions,proto3" json:"partitions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CollectionInfo) Reset() { *m = CollectionInfo{} } +func (m *CollectionInfo) String() string { return proto.CompactTextString(m) } +func (*CollectionInfo) ProtoMessage() {} +func (*CollectionInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_3385cd32ad6cfe64, []int{30} +} + +func (m *CollectionInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CollectionInfo.Unmarshal(m, b) +} +func (m *CollectionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CollectionInfo.Marshal(b, m, deterministic) +} +func (m *CollectionInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionInfo.Merge(m, src) +} +func (m *CollectionInfo) XXX_Size() int { + return xxx_messageInfo_CollectionInfo.Size(m) +} +func (m *CollectionInfo) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionInfo proto.InternalMessageInfo + +func (m *CollectionInfo) GetID() int64 { + if m != nil { + return m.ID + } + return 0 +} + +func (m *CollectionInfo) GetSchema() *schemapb.CollectionSchema { + if m != nil { + return m.Schema + } + return nil +} + +func (m *CollectionInfo) GetPartitions() []int64 { + if m != nil { + return m.Partitions + } + return nil +} + +type SegmentInfo struct { + ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"` + PartitionID int64 `protobuf:"varint,3,opt,name=partitionID,proto3" json:"partitionID,omitempty"` + InsertChannel string `protobuf:"bytes,4,opt,name=insert_channel,json=insertChannel,proto3" json:"insert_channel,omitempty"` + OpenTime uint64 `protobuf:"varint,5,opt,name=open_time,json=openTime,proto3" json:"open_time,omitempty"` + SealedTime uint64 `protobuf:"varint,6,opt,name=sealed_time,json=sealedTime,proto3" json:"sealed_time,omitempty"` + FlushedTime uint64 `protobuf:"varint,7,opt,name=flushed_time,json=flushedTime,proto3" json:"flushed_time,omitempty"` + NumRows int64 `protobuf:"varint,8,opt,name=num_rows,json=numRows,proto3" json:"num_rows,omitempty"` + MemSize int64 `protobuf:"varint,9,opt,name=mem_size,json=memSize,proto3" json:"mem_size,omitempty"` + State commonpb.SegmentState `protobuf:"varint,10,opt,name=state,proto3,enum=milvus.proto.common.SegmentState" json:"state,omitempty"` + StartPosition *internalpb.MsgPosition `protobuf:"bytes,11,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"` + EndPosition *internalpb.MsgPosition `protobuf:"bytes,12,opt,name=end_position,json=endPosition,proto3" json:"end_position,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SegmentInfo) Reset() { *m = SegmentInfo{} } +func (m *SegmentInfo) String() string { return proto.CompactTextString(m) } +func (*SegmentInfo) ProtoMessage() {} +func (*SegmentInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_3385cd32ad6cfe64, []int{31} +} + +func (m *SegmentInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SegmentInfo.Unmarshal(m, b) +} +func (m *SegmentInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SegmentInfo.Marshal(b, m, deterministic) +} +func (m *SegmentInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_SegmentInfo.Merge(m, src) +} +func (m *SegmentInfo) XXX_Size() int { + return xxx_messageInfo_SegmentInfo.Size(m) +} +func (m *SegmentInfo) XXX_DiscardUnknown() { + xxx_messageInfo_SegmentInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_SegmentInfo proto.InternalMessageInfo + +func (m *SegmentInfo) GetID() int64 { + if m != nil { + return m.ID + } + return 0 +} + +func (m *SegmentInfo) GetCollectionID() int64 { + if m != nil { + return m.CollectionID + } + return 0 +} + +func (m *SegmentInfo) GetPartitionID() int64 { + if m != nil { + return m.PartitionID + } + return 0 +} + +func (m *SegmentInfo) GetInsertChannel() string { + if m != nil { + return m.InsertChannel + } + return "" +} + +func (m *SegmentInfo) GetOpenTime() uint64 { + if m != nil { + return m.OpenTime + } + return 0 +} + +func (m *SegmentInfo) GetSealedTime() uint64 { + if m != nil { + return m.SealedTime + } + return 0 +} + +func (m *SegmentInfo) GetFlushedTime() uint64 { + if m != nil { + return m.FlushedTime + } + return 0 +} + +func (m *SegmentInfo) GetNumRows() int64 { + if m != nil { + return m.NumRows + } + return 0 +} + +func (m *SegmentInfo) GetMemSize() int64 { + if m != nil { + return m.MemSize + } + return 0 +} + +func (m *SegmentInfo) GetState() commonpb.SegmentState { + if m != nil { + return m.State + } + return commonpb.SegmentState_SegmentStateNone +} + +func (m *SegmentInfo) GetStartPosition() *internalpb.MsgPosition { + if m != nil { + return m.StartPosition + } + return nil +} + +func (m *SegmentInfo) GetEndPosition() *internalpb.MsgPosition { + if m != nil { + return m.EndPosition + } + return nil +} + func init() { proto.RegisterType((*RegisterNodeRequest)(nil), "milvus.proto.data.RegisterNodeRequest") proto.RegisterType((*RegisterNodeResponse)(nil), "milvus.proto.data.RegisterNodeResponse") @@ -1764,7 +1820,6 @@ func init() { proto.RegisterType((*SegmentStateInfo)(nil), "milvus.proto.data.SegmentStateInfo") proto.RegisterType((*GetSegmentStatesResponse)(nil), "milvus.proto.data.GetSegmentStatesResponse") proto.RegisterType((*GetSegmentInfoRequest)(nil), "milvus.proto.data.GetSegmentInfoRequest") - proto.RegisterType((*SegmentInfo)(nil), "milvus.proto.data.SegmentInfo") proto.RegisterType((*GetSegmentInfoResponse)(nil), "milvus.proto.data.GetSegmentInfoResponse") proto.RegisterType((*GetInsertBinlogPathsRequest)(nil), "milvus.proto.data.GetInsertBinlogPathsRequest") proto.RegisterType((*GetInsertBinlogPathsResponse)(nil), "milvus.proto.data.GetInsertBinlogPathsResponse") @@ -1782,114 +1837,120 @@ func init() { proto.RegisterType((*FieldFlushMeta)(nil), "milvus.proto.data.FieldFlushMeta") proto.RegisterType((*SegmentFlushMeta)(nil), "milvus.proto.data.SegmentFlushMeta") proto.RegisterType((*DDLFlushMeta)(nil), "milvus.proto.data.DDLFlushMeta") + proto.RegisterType((*CollectionInfo)(nil), "milvus.proto.data.CollectionInfo") + proto.RegisterType((*SegmentInfo)(nil), "milvus.proto.data.SegmentInfo") } func init() { proto.RegisterFile("data_service.proto", fileDescriptor_3385cd32ad6cfe64) } var fileDescriptor_3385cd32ad6cfe64 = []byte{ - // 1622 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xd9, 0x6f, 0x1c, 0x45, - 0x13, 0xf7, 0x78, 0x7d, 0xd6, 0x8c, 0x9d, 0xa4, 0xe3, 0xcf, 0xd9, 0x6f, 0x93, 0xf8, 0x98, 0x40, - 0xe2, 0x24, 0xc2, 0x4e, 0x1c, 0xc4, 0x21, 0x24, 0x44, 0x9c, 0x25, 0xd6, 0x8a, 0x38, 0x32, 0xe3, - 0x40, 0x24, 0x10, 0x5a, 0xcd, 0xee, 0xb4, 0xd7, 0x4d, 0xe6, 0xd8, 0x4c, 0xf7, 0xe6, 0xf0, 0x4b, - 0x10, 0xf0, 0x84, 0x80, 0x88, 0x07, 0xde, 0x01, 0x09, 0x09, 0x89, 0xff, 0x90, 0x27, 0xd4, 0xc7, - 0x1c, 0x3b, 0x33, 0x7b, 0x78, 0x9d, 0xe0, 0xb7, 0xe9, 0x9a, 0x5f, 0x57, 0x55, 0x57, 0xff, 0xaa, - 0xba, 0xba, 0x01, 0x39, 0x36, 0xb3, 0xeb, 0x14, 0x87, 0x4f, 0x48, 0x13, 0xaf, 0xb7, 0xc3, 0x80, - 0x05, 0xe8, 0x8c, 0x47, 0xdc, 0x27, 0x1d, 0x2a, 0x47, 0xeb, 0x1c, 0x50, 0x31, 0x9a, 0x81, 0xe7, - 0x05, 0xbe, 0x14, 0x55, 0xe6, 0x89, 0xcf, 0x70, 0xe8, 0xdb, 0xae, 0x1a, 0x1b, 0xe9, 0x09, 0xe6, - 0x0b, 0x38, 0x6b, 0xe1, 0x16, 0xa1, 0x0c, 0x87, 0xf7, 0x03, 0x07, 0x5b, 0xf8, 0x71, 0x07, 0x53, - 0x86, 0x6e, 0xc0, 0x44, 0xc3, 0xa6, 0xb8, 0xac, 0xad, 0x68, 0x6b, 0xfa, 0xe6, 0x85, 0xf5, 0x2e, - 0x23, 0x4a, 0xfd, 0x0e, 0x6d, 0x6d, 0xd9, 0x14, 0x5b, 0x02, 0x89, 0xde, 0x81, 0x69, 0xdb, 0x71, - 0x42, 0x4c, 0x69, 0x79, 0xbc, 0xcf, 0xa4, 0xdb, 0x12, 0x63, 0x45, 0x60, 0xf3, 0xa5, 0x06, 0x0b, - 0xdd, 0x1e, 0xd0, 0x76, 0xe0, 0x53, 0x8c, 0xb6, 0x40, 0x27, 0x3e, 0x61, 0xf5, 0xb6, 0x1d, 0xda, - 0x1e, 0x55, 0x9e, 0xac, 0x76, 0x2b, 0x8d, 0x97, 0x56, 0xf3, 0x09, 0xdb, 0x15, 0x40, 0x0b, 0x48, - 0xfc, 0x8d, 0x6e, 0xc1, 0x14, 0x65, 0x36, 0xeb, 0x44, 0x3e, 0x9d, 0x2f, 0xf4, 0x69, 0x4f, 0x40, - 0x2c, 0x05, 0x35, 0x9f, 0x81, 0x71, 0xd7, 0xed, 0xd0, 0x83, 0xd1, 0x63, 0x81, 0x60, 0xc2, 0x69, - 0xd4, 0xaa, 0xc2, 0x68, 0xc9, 0x12, 0xdf, 0xc8, 0x04, 0xa3, 0x19, 0xb8, 0x2e, 0x6e, 0x32, 0x12, - 0xf8, 0xb5, 0x6a, 0x79, 0x42, 0xfc, 0xeb, 0x92, 0x99, 0xbf, 0x68, 0x70, 0x7a, 0x0f, 0xb7, 0x3c, - 0xec, 0xb3, 0x5a, 0x35, 0x32, 0xbf, 0x00, 0x93, 0xcd, 0xa0, 0xe3, 0x33, 0x61, 0x7f, 0xce, 0x92, - 0x03, 0xb4, 0x0a, 0x46, 0xf3, 0xc0, 0xf6, 0x7d, 0xec, 0xd6, 0x7d, 0xdb, 0xc3, 0xc2, 0xd4, 0xac, - 0xa5, 0x2b, 0xd9, 0x7d, 0xdb, 0xc3, 0x39, 0x8b, 0xa5, 0xbc, 0x45, 0xb4, 0x02, 0x7a, 0xdb, 0x0e, - 0x19, 0xe9, 0x72, 0x2a, 0x2d, 0x32, 0x7f, 0xd3, 0x60, 0xf1, 0x36, 0xa5, 0xa4, 0xe5, 0xe7, 0x3c, - 0x5b, 0x84, 0x29, 0x3f, 0x70, 0x70, 0xad, 0x2a, 0x5c, 0x2b, 0x59, 0x6a, 0x84, 0xce, 0xc3, 0x6c, - 0x1b, 0xe3, 0xb0, 0x1e, 0x06, 0x6e, 0xe4, 0xd8, 0x0c, 0x17, 0x58, 0x81, 0x8b, 0xd1, 0xa7, 0x70, - 0x86, 0x66, 0x14, 0xd1, 0x72, 0x69, 0xa5, 0xb4, 0xa6, 0x6f, 0x5e, 0x5a, 0xcf, 0x71, 0x79, 0x3d, - 0x6b, 0xd4, 0xca, 0xcf, 0x36, 0xbf, 0x19, 0x87, 0xb3, 0x31, 0x4e, 0xfa, 0xca, 0xbf, 0x79, 0xe4, - 0x28, 0x6e, 0xc5, 0xee, 0xc9, 0xc1, 0x30, 0x91, 0x8b, 0x43, 0x5e, 0x4a, 0x87, 0x7c, 0x88, 0x1d, - 0xcc, 0xc6, 0x73, 0x32, 0x17, 0x4f, 0xb4, 0x0c, 0x3a, 0x7e, 0xd6, 0x26, 0x21, 0xae, 0x33, 0xe2, - 0xe1, 0xf2, 0xd4, 0x8a, 0xb6, 0x36, 0x61, 0x81, 0x14, 0x3d, 0x20, 0x1e, 0x4e, 0x71, 0x76, 0x7a, - 0x78, 0xce, 0xfe, 0xa1, 0xc1, 0xb9, 0xdc, 0x2e, 0xa9, 0x44, 0xb2, 0xe0, 0xb4, 0x58, 0x79, 0x12, - 0x19, 0x9e, 0x4d, 0x3c, 0xe0, 0x97, 0xfb, 0x05, 0x3c, 0x81, 0x5b, 0xb9, 0xf9, 0xa3, 0x25, 0xd6, - 0xef, 0x1a, 0x9c, 0xdd, 0x3b, 0x08, 0x9e, 0x2a, 0x13, 0x74, 0xf4, 0x04, 0xcb, 0x6e, 0xc5, 0xf8, - 0xe0, 0xad, 0x28, 0xe5, 0xb7, 0x22, 0x4a, 0xd3, 0x89, 0x24, 0x4d, 0xcd, 0x47, 0xb0, 0xd0, 0xed, - 0xa2, 0x0a, 0xe2, 0x12, 0x40, 0x4c, 0x3c, 0x19, 0xbe, 0x92, 0x95, 0x92, 0x8c, 0x16, 0x90, 0x47, - 0x70, 0x6e, 0x1b, 0x33, 0x65, 0x8b, 0xff, 0xc3, 0xc7, 0x88, 0x49, 0xb7, 0x87, 0xe3, 0x59, 0x0f, - 0xcd, 0x5f, 0x4b, 0x71, 0x71, 0x11, 0xa6, 0x6a, 0xfe, 0x7e, 0x80, 0x2e, 0xc0, 0x6c, 0x0c, 0x51, - 0x69, 0x92, 0x08, 0xd0, 0xbb, 0x30, 0xc9, 0x3d, 0x95, 0x39, 0x32, 0x9f, 0x2d, 0xbe, 0xd1, 0x9a, - 0x52, 0x3a, 0x2d, 0x89, 0xe7, 0x24, 0x6f, 0x86, 0xd8, 0x66, 0x8a, 0xe4, 0x25, 0x49, 0x72, 0x29, - 0x12, 0x24, 0x5f, 0x06, 0x9d, 0x62, 0xdb, 0xc5, 0x8e, 0x04, 0x4c, 0x48, 0x80, 0x14, 0x09, 0xc0, - 0x2a, 0x18, 0xfb, 0xbc, 0x08, 0x47, 0x88, 0x49, 0x81, 0xd0, 0x95, 0x4c, 0x40, 0x6a, 0x30, 0x4f, - 0x99, 0x1d, 0xb2, 0x7a, 0x3b, 0xa0, 0x62, 0x4b, 0x45, 0x32, 0xe9, 0x9b, 0x66, 0x8f, 0x33, 0x62, - 0x87, 0xb6, 0x76, 0x15, 0xd2, 0x9a, 0x13, 0x33, 0xa3, 0x21, 0xfa, 0x18, 0x0c, 0xec, 0x3b, 0x89, - 0xa2, 0xe9, 0xa1, 0x15, 0xe9, 0xd8, 0x77, 0x62, 0x35, 0x09, 0x09, 0x66, 0x86, 0x27, 0xc1, 0x8f, - 0x1a, 0x94, 0xf3, 0x2c, 0x50, 0xb4, 0x4b, 0x34, 0x6a, 0x43, 0x6b, 0x44, 0x1f, 0xc8, 0x49, 0x58, - 0xb2, 0xa0, 0x6f, 0x5d, 0x8d, 0x99, 0x60, 0xa9, 0x29, 0x26, 0x81, 0xff, 0x25, 0xde, 0x88, 0x3f, - 0xaf, 0x8d, 0x91, 0xff, 0x94, 0x40, 0x4f, 0x19, 0x1a, 0x40, 0xc6, 0x57, 0x93, 0xf3, 0x6f, 0xc2, - 0x3c, 0xf1, 0x29, 0x0e, 0x59, 0x5d, 0x15, 0x7c, 0xc1, 0xbd, 0x59, 0x6b, 0x4e, 0x4a, 0xef, 0x48, - 0x21, 0x3f, 0xc2, 0x82, 0x36, 0xf6, 0xd3, 0xdc, 0x9b, 0xe1, 0x82, 0x22, 0xf2, 0x4e, 0x0d, 0x24, - 0xef, 0x74, 0x9e, 0xbc, 0xff, 0x87, 0x19, 0xbf, 0xe3, 0xd5, 0xc3, 0xe0, 0xa9, 0x24, 0x4b, 0xc9, - 0x9a, 0xf6, 0x3b, 0x9e, 0x15, 0x3c, 0xa5, 0xfc, 0x97, 0x87, 0xbd, 0x3a, 0x25, 0x87, 0xb8, 0x3c, - 0x2b, 0x7f, 0x79, 0xd8, 0xdb, 0x23, 0x87, 0x38, 0x49, 0x48, 0x38, 0x62, 0x42, 0xe6, 0x73, 0x45, - 0x7f, 0x55, 0xb9, 0x62, 0x8c, 0x94, 0x2b, 0xe6, 0x77, 0x1a, 0x2c, 0x66, 0x89, 0x76, 0x1c, 0xd2, - 0xbf, 0x0d, 0x93, 0xc4, 0xdf, 0x0f, 0x22, 0xce, 0x2f, 0xf5, 0x39, 0xda, 0xb8, 0x2d, 0x09, 0x36, - 0x3d, 0x38, 0xbf, 0x8d, 0x59, 0x4d, 0xec, 0xfd, 0x16, 0xf1, 0xdd, 0xa0, 0xb5, 0x6b, 0xb3, 0x83, - 0x63, 0x54, 0xe1, 0x2e, 0x0e, 0x8f, 0x67, 0x38, 0x6c, 0xfe, 0xa5, 0xc1, 0x85, 0x62, 0x7b, 0x6a, - 0xe9, 0x15, 0x98, 0xd9, 0x27, 0xd8, 0x75, 0x92, 0x43, 0x26, 0x1e, 0xf3, 0xcd, 0x6f, 0x73, 0xb0, - 0x5a, 0x61, 0xaf, 0x56, 0x78, 0x8f, 0x85, 0xc4, 0x6f, 0xdd, 0x23, 0x94, 0x59, 0x12, 0x9f, 0x8a, - 0x67, 0x69, 0xf8, 0xb2, 0xf4, 0xbd, 0x2c, 0x4b, 0xb5, 0x74, 0x5a, 0xd0, 0xd7, 0xdb, 0x12, 0x17, - 0x34, 0xa8, 0xe6, 0x0f, 0x1a, 0x2c, 0x6d, 0x63, 0x76, 0x27, 0x96, 0x71, 0x37, 0x09, 0x65, 0xa4, - 0x79, 0x02, 0xce, 0xbc, 0xd4, 0x60, 0xb9, 0xa7, 0x33, 0x6a, 0x07, 0x55, 0x8a, 0x46, 0x2d, 0x56, - 0x71, 0x8a, 0x7e, 0x82, 0x9f, 0x7f, 0x6e, 0xbb, 0x1d, 0xbc, 0x6b, 0x93, 0x50, 0xa6, 0xe8, 0x88, - 0x1d, 0xc4, 0xdf, 0x1a, 0x5c, 0xdc, 0xc6, 0xfc, 0xba, 0x23, 0x2b, 0xdc, 0x09, 0x46, 0x67, 0x88, - 0xbb, 0xc4, 0xcf, 0x72, 0x33, 0x0b, 0xbd, 0x3d, 0x91, 0xf0, 0x2d, 0x89, 0x74, 0x4c, 0xd5, 0x05, - 0x45, 0x74, 0x15, 0x3c, 0x33, 0x80, 0xc5, 0x87, 0x36, 0x6b, 0x1e, 0x54, 0xbd, 0xe3, 0x67, 0xc0, - 0x25, 0x98, 0x4b, 0xdf, 0x3b, 0x64, 0x1a, 0xcf, 0x5a, 0x46, 0xea, 0xe2, 0x41, 0xf9, 0x6d, 0x6b, - 0x41, 0x5c, 0x3e, 0x8f, 0xdf, 0x23, 0x8f, 0xba, 0x8d, 0xdd, 0xa7, 0xf6, 0x44, 0xee, 0xd4, 0x7e, - 0x06, 0xa0, 0x9c, 0xdb, 0xa1, 0xad, 0x11, 0xfc, 0x7a, 0x0f, 0xa6, 0x95, 0x36, 0xb5, 0x53, 0x83, - 0x4a, 0x75, 0x04, 0x37, 0xf7, 0x60, 0x51, 0xc9, 0xef, 0xf2, 0x9a, 0x28, 0xeb, 0xe7, 0x0e, 0x66, - 0x36, 0x2a, 0xc3, 0xb4, 0x2a, 0x93, 0xaa, 0x6f, 0x88, 0x86, 0xfc, 0xac, 0x6e, 0x08, 0x5c, 0x9d, - 0xd7, 0x42, 0x75, 0xd9, 0x83, 0x46, 0x5c, 0x7a, 0xcd, 0xaf, 0x60, 0xae, 0x5a, 0xbd, 0x97, 0xd2, - 0x75, 0x19, 0x4e, 0x39, 0x8e, 0x5b, 0x4f, 0xcf, 0xd2, 0x64, 0x8b, 0xe0, 0x38, 0x6e, 0x52, 0xb3, - 0xd1, 0x1b, 0x30, 0xcf, 0x68, 0x3d, 0xaf, 0xdc, 0x60, 0x34, 0x41, 0x99, 0x3b, 0x30, 0x2f, 0x9c, - 0x15, 0x9b, 0x3a, 0xc0, 0xd7, 0x55, 0x30, 0x52, 0xea, 0x22, 0x82, 0xe8, 0x89, 0xb3, 0x94, 0x97, - 0xc3, 0xa8, 0x89, 0x4f, 0x34, 0xf6, 0xef, 0x9b, 0x2e, 0x02, 0x10, 0x5a, 0x57, 0xbd, 0x87, 0xf0, - 0x71, 0xc6, 0x9a, 0x25, 0xf4, 0xae, 0x14, 0xa0, 0xf7, 0x61, 0x4a, 0xd8, 0xa7, 0xe5, 0xc9, 0xa2, - 0x8c, 0x13, 0xbb, 0xd1, 0xbd, 0x02, 0x4b, 0x4d, 0x30, 0x3f, 0x03, 0xa3, 0x5a, 0xbd, 0x97, 0xf8, - 0x91, 0x65, 0x97, 0x56, 0xc0, 0xae, 0xc1, 0x6b, 0xdc, 0xfc, 0xc9, 0x00, 0xbd, 0x6a, 0x33, 0x7b, - 0x4f, 0xbe, 0x73, 0xa1, 0x36, 0x20, 0x51, 0x74, 0xbd, 0x76, 0xe0, 0xc7, 0x1d, 0x32, 0xba, 0xd1, - 0xe3, 0xf8, 0xcb, 0x43, 0x55, 0x0a, 0x55, 0x2e, 0xf7, 0x98, 0x91, 0x81, 0x9b, 0x63, 0xc8, 0x13, - 0x16, 0x79, 0x9f, 0xf6, 0x80, 0x34, 0x1f, 0x45, 0x3d, 0x61, 0x1f, 0x8b, 0x19, 0x68, 0x64, 0x31, - 0xd3, 0x78, 0xab, 0x81, 0x3c, 0xa0, 0xa3, 0x8a, 0x67, 0x8e, 0xa1, 0xc7, 0xb0, 0xc0, 0xab, 0x50, - 0x5c, 0x0c, 0x23, 0x83, 0x9b, 0xbd, 0x0d, 0xe6, 0xc0, 0x47, 0x34, 0x69, 0x83, 0x91, 0x7e, 0x74, - 0x43, 0x45, 0x2f, 0x01, 0x05, 0xef, 0x82, 0x95, 0x2b, 0x03, 0x71, 0xb1, 0x89, 0x6d, 0x98, 0x14, - 0xd4, 0x40, 0xcb, 0x45, 0x8c, 0x4a, 0x3d, 0xb0, 0x55, 0xfa, 0x95, 0x6a, 0x73, 0x0c, 0x7d, 0x0d, - 0xa7, 0x32, 0x4f, 0x1b, 0xe8, 0x6a, 0x81, 0xca, 0xe2, 0x47, 0xaa, 0xca, 0xb5, 0x61, 0xa0, 0xe9, - 0xb8, 0xa4, 0xaf, 0xff, 0x85, 0x71, 0x29, 0x78, 0xc2, 0x28, 0x8c, 0x4b, 0xd1, 0x3b, 0x82, 0x39, - 0x86, 0x5a, 0x30, 0xdf, 0x7d, 0xe6, 0xa0, 0xb5, 0x82, 0xc9, 0x85, 0x77, 0xb0, 0xca, 0xd5, 0x21, - 0x90, 0xb1, 0x21, 0x0f, 0x4e, 0x67, 0xef, 0x95, 0xe8, 0x5a, 0x5f, 0x05, 0xdd, 0xf9, 0x72, 0x7d, - 0x28, 0x6c, 0x6c, 0xee, 0xb9, 0x60, 0x71, 0xae, 0xb5, 0x45, 0xeb, 0xc5, 0x6a, 0x7a, 0xf5, 0xdc, - 0x95, 0x8d, 0xa1, 0xf1, 0xb1, 0x69, 0x0c, 0x67, 0x72, 0xad, 0x2a, 0xba, 0xde, 0x4f, 0x4f, 0xe6, - 0x38, 0xaf, 0x0c, 0x6e, 0xa6, 0xcd, 0x31, 0xf4, 0xad, 0x26, 0xde, 0x6b, 0x8a, 0xda, 0x3f, 0x74, - 0xb3, 0xd8, 0x5a, 0x9f, 0xbe, 0xb5, 0xb2, 0x79, 0x94, 0x29, 0xf1, 0x5a, 0x5f, 0x88, 0x6b, 0x53, - 0x41, 0x0b, 0x95, 0xad, 0x4f, 0x91, 0xbe, 0xde, 0xbd, 0x61, 0xe5, 0xe6, 0x11, 0x66, 0xc4, 0x0e, - 0x04, 0xd9, 0x07, 0x82, 0xa8, 0x5c, 0x6d, 0x0c, 0x24, 0xe7, 0x48, 0xb5, 0x6a, 0xf3, 0xcf, 0x12, - 0xcc, 0xf0, 0xf3, 0x40, 0x14, 0xaa, 0xff, 0xfe, 0x30, 0x38, 0x81, 0xea, 0xfc, 0x25, 0x9c, 0xca, - 0xb4, 0x9d, 0x85, 0x15, 0xaf, 0xb8, 0x35, 0x1d, 0x54, 0x4e, 0x1f, 0xc2, 0x5c, 0x57, 0x87, 0x89, - 0xae, 0xf4, 0xaa, 0xcf, 0xd9, 0x22, 0xd7, 0x5f, 0xf1, 0xd6, 0x47, 0x5f, 0x7c, 0xd8, 0x22, 0xec, - 0xa0, 0xd3, 0xe0, 0x7f, 0x36, 0x0e, 0x89, 0xeb, 0x92, 0x43, 0x86, 0x9b, 0x07, 0x1b, 0x72, 0xd6, - 0x5b, 0x0e, 0xa1, 0x2c, 0x24, 0x8d, 0x0e, 0xc3, 0xce, 0x46, 0x14, 0xad, 0x0d, 0xa1, 0x6a, 0x83, - 0xdb, 0x6c, 0x37, 0x1a, 0x53, 0x62, 0x74, 0xeb, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x04, - 0x7f, 0x16, 0xe8, 0x1a, 0x00, 0x00, + // 1682 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0x5b, 0x6f, 0x1c, 0xc5, + 0x12, 0xf6, 0x78, 0x7d, 0xad, 0x1d, 0x6f, 0x92, 0x8e, 0x8f, 0xb3, 0x67, 0x93, 0xf8, 0x32, 0x39, + 0x49, 0x9c, 0x44, 0xc7, 0x4e, 0x9c, 0xa3, 0x03, 0x08, 0x81, 0x88, 0xb3, 0xc4, 0x5a, 0x11, 0x47, + 0x66, 0x1c, 0x88, 0x04, 0x42, 0xab, 0xd9, 0x9d, 0xf6, 0x6e, 0x93, 0xb9, 0x6c, 0xa6, 0x7b, 0x73, + 0xf1, 0x4b, 0x10, 0xf0, 0x84, 0x80, 0x88, 0x07, 0xde, 0x01, 0x09, 0x09, 0x89, 0xbf, 0xc6, 0x8f, + 0x40, 0x7d, 0x99, 0xcb, 0xce, 0xcc, 0x5e, 0xbc, 0x4e, 0xf0, 0xdb, 0x74, 0xcf, 0xd7, 0x55, 0xd5, + 0xd5, 0x55, 0x5f, 0x57, 0x35, 0x20, 0xdb, 0x62, 0x56, 0x9d, 0xe2, 0xe0, 0x29, 0x69, 0xe2, 0x8d, + 0x4e, 0xe0, 0x33, 0x1f, 0x9d, 0x71, 0x89, 0xf3, 0xb4, 0x4b, 0xe5, 0x68, 0x83, 0x03, 0x2a, 0x7a, + 0xd3, 0x77, 0x5d, 0xdf, 0x93, 0x53, 0x95, 0x12, 0xf1, 0x18, 0x0e, 0x3c, 0xcb, 0x51, 0x63, 0x3d, + 0xb9, 0xa0, 0xa2, 0xd3, 0x66, 0x1b, 0xbb, 0x96, 0x1c, 0x19, 0x2f, 0xe1, 0xac, 0x89, 0x5b, 0x84, + 0x32, 0x1c, 0x3c, 0xf0, 0x6d, 0x6c, 0xe2, 0x27, 0x5d, 0x4c, 0x19, 0xba, 0x09, 0x53, 0x0d, 0x8b, + 0xe2, 0xb2, 0xb6, 0xaa, 0xad, 0x17, 0xb7, 0x2e, 0x6c, 0xf4, 0xa8, 0x54, 0xca, 0x76, 0x69, 0x6b, + 0xdb, 0xa2, 0xd8, 0x14, 0x48, 0xf4, 0x7f, 0x98, 0xb5, 0x6c, 0x3b, 0xc0, 0x94, 0x96, 0x27, 0x07, + 0x2c, 0xba, 0x23, 0x31, 0x66, 0x08, 0x36, 0x5e, 0x69, 0xb0, 0xd8, 0x6b, 0x01, 0xed, 0xf8, 0x1e, + 0xc5, 0x68, 0x1b, 0x8a, 0xc4, 0x23, 0xac, 0xde, 0xb1, 0x02, 0xcb, 0xa5, 0xca, 0x92, 0xb5, 0x5e, + 0xa1, 0xd1, 0x46, 0x6b, 0x1e, 0x61, 0x7b, 0x02, 0x68, 0x02, 0x89, 0xbe, 0xd1, 0x6d, 0x98, 0xa1, + 0xcc, 0x62, 0xdd, 0xd0, 0xa6, 0xf3, 0xb9, 0x36, 0xed, 0x0b, 0x88, 0xa9, 0xa0, 0xc6, 0x73, 0xd0, + 0xef, 0x39, 0x5d, 0xda, 0x1e, 0xdf, 0x17, 0x08, 0xa6, 0xec, 0x46, 0xad, 0x2a, 0x94, 0x16, 0x4c, + 0xf1, 0x8d, 0x0c, 0xd0, 0x9b, 0xbe, 0xe3, 0xe0, 0x26, 0x23, 0xbe, 0x57, 0xab, 0x96, 0xa7, 0xc4, + 0xbf, 0x9e, 0x39, 0xe3, 0x27, 0x0d, 0x4e, 0xef, 0xe3, 0x96, 0x8b, 0x3d, 0x56, 0xab, 0x86, 0xea, + 0x17, 0x61, 0xba, 0xe9, 0x77, 0x3d, 0x26, 0xf4, 0x2f, 0x98, 0x72, 0x80, 0xd6, 0x40, 0x6f, 0xb6, + 0x2d, 0xcf, 0xc3, 0x4e, 0xdd, 0xb3, 0x5c, 0x2c, 0x54, 0xcd, 0x9b, 0x45, 0x35, 0xf7, 0xc0, 0x72, + 0x71, 0x46, 0x63, 0x21, 0xab, 0x11, 0xad, 0x42, 0xb1, 0x63, 0x05, 0x8c, 0xf4, 0x18, 0x95, 0x9c, + 0x32, 0x7e, 0xd1, 0x60, 0xe9, 0x0e, 0xa5, 0xa4, 0xe5, 0x65, 0x2c, 0x5b, 0x82, 0x19, 0xcf, 0xb7, + 0x71, 0xad, 0x2a, 0x4c, 0x2b, 0x98, 0x6a, 0x84, 0xce, 0xc3, 0x7c, 0x07, 0xe3, 0xa0, 0x1e, 0xf8, + 0x4e, 0x68, 0xd8, 0x1c, 0x9f, 0x30, 0x7d, 0x07, 0xa3, 0x8f, 0xe1, 0x0c, 0x4d, 0x09, 0xa2, 0xe5, + 0xc2, 0x6a, 0x61, 0xbd, 0xb8, 0x75, 0x69, 0x23, 0x13, 0xd9, 0x1b, 0x69, 0xa5, 0x66, 0x76, 0xb5, + 0xf1, 0xd5, 0x24, 0x9c, 0x8d, 0x70, 0xd2, 0x56, 0xfe, 0xcd, 0x3d, 0x47, 0x71, 0x2b, 0x32, 0x4f, + 0x0e, 0x46, 0xf1, 0x5c, 0xe4, 0xf2, 0x42, 0xd2, 0xe5, 0x23, 0x9c, 0x60, 0xda, 0x9f, 0xd3, 0x19, + 0x7f, 0xa2, 0x15, 0x28, 0xe2, 0xe7, 0x1d, 0x12, 0xe0, 0x3a, 0x23, 0x2e, 0x2e, 0xcf, 0xac, 0x6a, + 0xeb, 0x53, 0x26, 0xc8, 0xa9, 0x87, 0xc4, 0xc5, 0x89, 0x98, 0x9d, 0x1d, 0x3d, 0x66, 0x7f, 0xd3, + 0xe0, 0x5c, 0xe6, 0x94, 0x54, 0x22, 0x99, 0x70, 0x5a, 0xec, 0x3c, 0xf6, 0x0c, 0xcf, 0x26, 0xee, + 0xf0, 0x2b, 0x83, 0x1c, 0x1e, 0xc3, 0xcd, 0xcc, 0xfa, 0xf1, 0x12, 0xeb, 0x57, 0x0d, 0xce, 0xee, + 0xb7, 0xfd, 0x67, 0x4a, 0x05, 0x1d, 0x3f, 0xc1, 0xd2, 0x47, 0x31, 0x39, 0xfc, 0x28, 0x0a, 0xd9, + 0xa3, 0x08, 0xd3, 0x74, 0x2a, 0x4e, 0x53, 0xe3, 0x31, 0x2c, 0xf6, 0x9a, 0xa8, 0x9c, 0xb8, 0x0c, + 0x10, 0x05, 0x9e, 0x74, 0x5f, 0xc1, 0x4c, 0xcc, 0x8c, 0xe7, 0x90, 0xc7, 0x70, 0x6e, 0x07, 0x33, + 0xa5, 0x8b, 0xff, 0xc3, 0xc7, 0xf0, 0x49, 0xaf, 0x85, 0x93, 0x69, 0x0b, 0x8d, 0x9f, 0x0b, 0x11, + 0xb9, 0x08, 0x55, 0x35, 0xef, 0xc0, 0x47, 0x17, 0x60, 0x3e, 0x82, 0xa8, 0x34, 0x89, 0x27, 0xd0, + 0x5b, 0x30, 0xcd, 0x2d, 0x95, 0x39, 0x52, 0x4a, 0x93, 0x6f, 0xb8, 0xa7, 0x84, 0x4c, 0x53, 0xe2, + 0x79, 0x90, 0x37, 0x03, 0x6c, 0x31, 0x15, 0xe4, 0x05, 0x19, 0xe4, 0x72, 0x4a, 0x04, 0xf9, 0x0a, + 0x14, 0x29, 0xb6, 0x1c, 0x6c, 0x4b, 0xc0, 0x94, 0x04, 0xc8, 0x29, 0x01, 0x58, 0x03, 0xfd, 0x80, + 0x93, 0x70, 0x88, 0x98, 0x16, 0x88, 0xa2, 0x9a, 0x13, 0x90, 0x1a, 0x94, 0x28, 0xb3, 0x02, 0x56, + 0xef, 0xf8, 0x54, 0x1c, 0xa9, 0x48, 0xa6, 0xe2, 0x96, 0xd1, 0xe7, 0x8e, 0xd8, 0xa5, 0xad, 0x3d, + 0x85, 0x34, 0x17, 0xc4, 0xca, 0x70, 0x88, 0x3e, 0x04, 0x1d, 0x7b, 0x76, 0x2c, 0x68, 0x76, 0x64, + 0x41, 0x45, 0xec, 0xd9, 0x91, 0x98, 0x38, 0x08, 0xe6, 0x46, 0x0f, 0x82, 0xef, 0x35, 0x28, 0x67, + 0xa3, 0x40, 0x85, 0x5d, 0x2c, 0x51, 0x1b, 0x59, 0x22, 0x7a, 0x57, 0x2e, 0xc2, 0x32, 0x0a, 0x06, + 0xf2, 0x6a, 0x14, 0x09, 0xa6, 0x5a, 0x62, 0x10, 0xf8, 0x57, 0x6c, 0x8d, 0xf8, 0xf3, 0xc6, 0x22, + 0xf2, 0x1b, 0x0d, 0x96, 0xd2, 0xba, 0x8e, 0xb3, 0xef, 0xff, 0xc1, 0x34, 0xf1, 0x0e, 0xfc, 0x70, + 0xdb, 0xcb, 0x03, 0xd8, 0x8d, 0xeb, 0x92, 0x60, 0xc3, 0x85, 0xf3, 0x3b, 0x98, 0xd5, 0x3c, 0x8a, + 0x03, 0xb6, 0x4d, 0x3c, 0xc7, 0x6f, 0xed, 0x59, 0xac, 0x7d, 0x8c, 0x44, 0xec, 0xc9, 0xa9, 0xc9, + 0x54, 0x4e, 0x19, 0x7f, 0x68, 0x70, 0x21, 0x5f, 0x9f, 0xda, 0x7a, 0x05, 0xe6, 0x0e, 0x08, 0x76, + 0xec, 0x98, 0x67, 0xa2, 0x31, 0x4f, 0xc8, 0x0e, 0x07, 0xab, 0x1d, 0xf6, 0xab, 0x86, 0xf6, 0x59, + 0x40, 0xbc, 0xd6, 0x7d, 0x42, 0x99, 0x29, 0xf1, 0x09, 0x7f, 0x16, 0x46, 0x8f, 0xcc, 0x6f, 0x65, + 0x64, 0x4a, 0x53, 0xef, 0xca, 0xfb, 0x91, 0xbe, 0xd9, 0xaa, 0x28, 0xa7, 0x46, 0x31, 0xbe, 0xd3, + 0x60, 0x79, 0x07, 0xb3, 0xbb, 0xd1, 0x1c, 0x37, 0x93, 0x50, 0x46, 0x9a, 0x27, 0x60, 0xcc, 0x2b, + 0x0d, 0x56, 0xfa, 0x1a, 0xa3, 0x4e, 0x50, 0xd1, 0x66, 0x78, 0xcb, 0xe6, 0xd3, 0xe6, 0x47, 0xf8, + 0xc5, 0xa7, 0x96, 0xd3, 0xc5, 0x7b, 0x16, 0x09, 0x24, 0x6d, 0x8e, 0x79, 0x89, 0xfc, 0xa9, 0xc1, + 0xc5, 0x1d, 0xcc, 0x2b, 0x5e, 0x79, 0xb1, 0x9d, 0xa0, 0x77, 0x46, 0x28, 0x27, 0x7f, 0x94, 0x87, + 0x99, 0x6b, 0xed, 0x89, 0xb8, 0x6f, 0x59, 0xa4, 0x63, 0x82, 0x17, 0x54, 0xa0, 0x2b, 0xe7, 0x19, + 0x3e, 0x2c, 0x3d, 0xb2, 0x58, 0xb3, 0x5d, 0x75, 0x8f, 0x9f, 0x01, 0x97, 0x60, 0x21, 0x59, 0x7a, + 0xca, 0x34, 0x9e, 0x37, 0xf5, 0x44, 0xed, 0x49, 0x79, 0xc1, 0xbd, 0x28, 0xfa, 0x8f, 0xe3, 0x97, + 0x49, 0xe3, 0x1e, 0x63, 0x2f, 0x71, 0x4f, 0x65, 0x88, 0xfb, 0x39, 0x80, 0x32, 0x6e, 0x97, 0xb6, + 0xc6, 0xb0, 0xeb, 0x6d, 0x98, 0x55, 0xd2, 0xd4, 0x49, 0x0d, 0xa3, 0xea, 0x10, 0x6e, 0xec, 0xc3, + 0x92, 0x9a, 0xbf, 0xc7, 0x39, 0x51, 0xf2, 0xe7, 0x2e, 0x66, 0x16, 0x2a, 0xc3, 0xac, 0xa2, 0x49, + 0x55, 0xc7, 0x84, 0x43, 0x5e, 0x6b, 0x34, 0x04, 0xae, 0xce, 0xb9, 0x50, 0xd5, 0xfb, 0xd0, 0x88, + 0xa8, 0xd7, 0xf8, 0x02, 0x16, 0xaa, 0xd5, 0xfb, 0x09, 0x59, 0x57, 0xe0, 0x94, 0x6d, 0x3b, 0xf5, + 0xe4, 0x2a, 0x4d, 0xac, 0x5a, 0xb0, 0x6d, 0x27, 0xe6, 0x6c, 0xf4, 0x1f, 0x28, 0x31, 0x5a, 0xcf, + 0x0a, 0xd7, 0x19, 0x8d, 0x51, 0xc6, 0x2e, 0x94, 0x84, 0xb1, 0xe2, 0x50, 0x87, 0xd8, 0xba, 0x06, + 0x7a, 0x42, 0x5c, 0x18, 0x20, 0xc5, 0xd8, 0x58, 0xca, 0xe9, 0x30, 0xac, 0xe3, 0x62, 0x89, 0x83, + 0xeb, 0xb8, 0x8b, 0x00, 0x84, 0xd6, 0x55, 0xed, 0x24, 0x6c, 0x9c, 0x33, 0xe7, 0x09, 0xbd, 0x27, + 0x27, 0xd0, 0x3b, 0x30, 0x23, 0xf4, 0xd3, 0xf2, 0x74, 0x5e, 0xc6, 0x89, 0xd3, 0xe8, 0xdd, 0x81, + 0xa9, 0x16, 0x18, 0x9f, 0x80, 0x5e, 0xad, 0xde, 0x8f, 0xed, 0x48, 0x47, 0x97, 0x96, 0x13, 0x5d, + 0x23, 0xec, 0xf1, 0x25, 0x94, 0x62, 0x86, 0x15, 0x85, 0x6a, 0x09, 0x26, 0x23, 0x71, 0x93, 0xb5, + 0x2a, 0x7a, 0x0f, 0x66, 0xe4, 0x3b, 0x86, 0x8a, 0xa0, 0xcb, 0xbd, 0x36, 0xab, 0x37, 0x8e, 0x04, + 0x4d, 0x8b, 0x09, 0x53, 0x2d, 0xe2, 0x11, 0x1e, 0xb1, 0x92, 0x6c, 0x3f, 0x0b, 0x66, 0x62, 0xc6, + 0xf8, 0xab, 0x00, 0xc5, 0x44, 0x00, 0x66, 0xd4, 0xbf, 0x9e, 0x06, 0xe4, 0x32, 0x94, 0x88, 0xb8, + 0x5c, 0xeb, 0x8a, 0x01, 0x04, 0x63, 0xce, 0x9b, 0x0b, 0x24, 0x79, 0xe5, 0xf2, 0x7e, 0xda, 0xef, + 0x60, 0x2f, 0x59, 0x08, 0xcf, 0xf1, 0x89, 0xbc, 0x4a, 0x7a, 0x66, 0x68, 0x25, 0x3d, 0x9b, 0xad, + 0xa4, 0xff, 0x0d, 0x73, 0x5e, 0xd7, 0xad, 0x07, 0xfe, 0x33, 0x59, 0xb9, 0x16, 0xcc, 0x59, 0xaf, + 0xeb, 0x9a, 0xfe, 0x33, 0xca, 0x7f, 0xb9, 0xd8, 0xad, 0x53, 0x72, 0x88, 0xcb, 0xf3, 0xf2, 0x97, + 0x8b, 0xdd, 0x7d, 0x72, 0x88, 0xe3, 0xee, 0x00, 0x8e, 0xd8, 0x1d, 0x64, 0x0b, 0xf7, 0xe2, 0xeb, + 0x2a, 0xdc, 0xf5, 0xb1, 0x0a, 0xf7, 0xad, 0x1f, 0x74, 0x28, 0x56, 0x2d, 0x66, 0xed, 0xcb, 0x87, + 0x36, 0xd4, 0x01, 0x24, 0x2e, 0x79, 0xb7, 0xe3, 0x7b, 0x51, 0x51, 0x8e, 0x6e, 0xf6, 0x11, 0x9b, + 0x85, 0x2a, 0xca, 0xae, 0x5c, 0xe9, 0xb3, 0x22, 0x05, 0x37, 0x26, 0x90, 0x2b, 0x34, 0xf2, 0xd3, + 0x78, 0x48, 0x9a, 0x8f, 0xc3, 0x93, 0x1f, 0xa0, 0x31, 0x05, 0x0d, 0x35, 0xa6, 0x6a, 0x7d, 0x35, + 0x90, 0x05, 0x61, 0x78, 0xc3, 0x1a, 0x13, 0xe8, 0x09, 0x2c, 0xf2, 0x5b, 0x2f, 0xba, 0x7c, 0x43, + 0x85, 0x5b, 0xfd, 0x15, 0x66, 0xc0, 0x47, 0x54, 0x69, 0x81, 0x9e, 0x7c, 0xe7, 0x43, 0x79, 0x8f, + 0x0f, 0x39, 0x4f, 0x91, 0x95, 0xab, 0x43, 0x71, 0x91, 0x8a, 0x1d, 0x98, 0x16, 0x54, 0x84, 0x56, + 0xf2, 0x18, 0x2c, 0xf1, 0xa6, 0x57, 0x19, 0x54, 0x1a, 0x18, 0x13, 0xe8, 0x4b, 0x38, 0x95, 0x7a, + 0x4d, 0x41, 0xd7, 0x72, 0x44, 0xe6, 0xbf, 0x8b, 0x55, 0xae, 0x8f, 0x02, 0x4d, 0xfa, 0x25, 0xf9, + 0xe2, 0x90, 0xeb, 0x97, 0x9c, 0x57, 0x93, 0x5c, 0xbf, 0xe4, 0x3d, 0x5d, 0x18, 0x13, 0xa8, 0x05, + 0xa5, 0xde, 0x1a, 0x07, 0xad, 0xe7, 0x2c, 0xce, 0x6d, 0xfb, 0x2a, 0xd7, 0x46, 0x40, 0x46, 0x8a, + 0x5c, 0x38, 0x9d, 0x6e, 0x65, 0xd1, 0xf5, 0x81, 0x02, 0x7a, 0xf3, 0xe5, 0xc6, 0x48, 0xd8, 0x48, + 0xdd, 0x0b, 0x11, 0xc5, 0x99, 0x56, 0x0a, 0x6d, 0xe4, 0x8b, 0xe9, 0xd7, 0xe3, 0x55, 0x36, 0x47, + 0xc6, 0x47, 0xaa, 0x31, 0x9c, 0xc9, 0xb4, 0x46, 0xe8, 0xc6, 0x20, 0x39, 0xa9, 0xf2, 0xb1, 0x32, + 0xbc, 0x79, 0x33, 0x26, 0xd0, 0xd7, 0x9a, 0x78, 0x22, 0xca, 0x6b, 0x37, 0xd0, 0xad, 0x7c, 0x6d, + 0x03, 0xfa, 0xa4, 0xca, 0xd6, 0x51, 0x96, 0x44, 0x7b, 0x7d, 0x29, 0xda, 0xf4, 0x9c, 0x92, 0x3d, + 0xcd, 0x4f, 0xa1, 0xbc, 0xfe, 0xbd, 0x48, 0xe5, 0xd6, 0x11, 0x56, 0x44, 0x06, 0xf8, 0xe9, 0x37, + 0x89, 0x90, 0xae, 0x36, 0x87, 0x06, 0xe7, 0x58, 0x5c, 0xb5, 0xf5, 0x7b, 0x01, 0xe6, 0xf8, 0x7d, + 0x20, 0x88, 0xea, 0x9f, 0xbf, 0x0c, 0x4e, 0x80, 0x9d, 0x3f, 0x87, 0x53, 0xa9, 0x36, 0x27, 0x97, + 0xf1, 0xf2, 0x5b, 0xa1, 0x61, 0x74, 0xfa, 0x08, 0x16, 0x7a, 0x3a, 0x1a, 0x74, 0xb5, 0x1f, 0x3f, + 0xa7, 0x49, 0x6e, 0xb0, 0xe0, 0xed, 0x0f, 0x3e, 0x7b, 0xbf, 0x45, 0x58, 0xbb, 0xdb, 0xe0, 0x7f, + 0x36, 0x0f, 0x89, 0xe3, 0x90, 0x43, 0x86, 0x9b, 0xed, 0x4d, 0xb9, 0xea, 0xbf, 0x36, 0xa1, 0x2c, + 0x20, 0x8d, 0x2e, 0xc3, 0xf6, 0x66, 0xe8, 0xad, 0x4d, 0x21, 0x6a, 0x93, 0xeb, 0xec, 0x34, 0x1a, + 0x33, 0x62, 0x74, 0xfb, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x87, 0xfd, 0x14, 0xba, 0x69, 0x1b, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/internal/proxynode/impl.go b/internal/proxynode/impl.go index da5bdd7e9..5f0b554a2 100644 --- a/internal/proxynode/impl.go +++ b/internal/proxynode/impl.go @@ -1140,7 +1140,7 @@ func (node *ProxyNode) GetPersistentSegmentInfo(ctx context.Context, req *milvus persistentInfos := make([]*milvuspb.PersistentSegmentInfo, len(infoResp.Infos)) for i, info := range infoResp.Infos { persistentInfos[i] = &milvuspb.PersistentSegmentInfo{ - SegmentID: info.SegmentID, + SegmentID: info.ID, CollectionID: info.CollectionID, PartitionID: info.PartitionID, OpenTime: info.OpenTime, diff --git a/internal/querynode/meta_service.go b/internal/querynode/meta_service.go index ca830ffe9..069ca2afb 100644 --- a/internal/querynode/meta_service.go +++ b/internal/querynode/meta_service.go @@ -152,7 +152,7 @@ func (mService *metaService) processSegmentCreate(id string, value string) { // TODO: what if seg == nil? We need to notify master and return rpc request failed if seg != nil { // TODO: get partition id from segment meta - err := mService.replica.addSegment(seg.SegmentID, seg.PartitionID, seg.CollectionID, segmentTypeGrowing) + err := mService.replica.addSegment(seg.ID, seg.PartitionID, seg.CollectionID, segmentTypeGrowing) if err != nil { log.Error(err.Error()) return diff --git a/internal/querynode/meta_service_test.go b/internal/querynode/meta_service_test.go index 2163b0812..ac41d9f62 100644 --- a/internal/querynode/meta_service_test.go +++ b/internal/querynode/meta_service_test.go @@ -72,7 +72,7 @@ func TestMetaService_printCollectionStruct(t *testing.T) { func TestMetaService_printSegmentStruct(t *testing.T) { var s = datapb.SegmentInfo{ - SegmentID: UniqueID(0), + ID: UniqueID(0), CollectionID: UniqueID(0), PartitionID: defaultPartitionID, OpenTime: Timestamp(0), -- GitLab