Fix collection not exist when tried to do recovery (#21471)

Signed-off-by: longjiquan <jiquan.long@zilliz.com>
This commit is contained in:
Jiquan Long 2023-01-04 16:37:35 +08:00 committed by GitHub
parent 3f6d139ad2
commit ff2a68e65a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 556 additions and 172 deletions

View File

@ -291,6 +291,9 @@ rpm: install
mock-datanode: mock-datanode:
mockery --name=DataNode --dir=$(PWD)/internal/types --output=$(PWD)/internal/mocks --filename=mock_datanode.go --with-expecter mockery --name=DataNode --dir=$(PWD)/internal/types --output=$(PWD)/internal/mocks --filename=mock_datanode.go --with-expecter
mock-rootcoord:
mockery --name=RootCoord --dir=$(PWD)/internal/types --output=$(PWD)/internal/mocks --filename=mock_rootcoord.go --with-expecter
mock-tnx-kv: mock-tnx-kv:
mockery --name=TxnKV --dir=$(PWD)/internal/kv --output=$(PWD)/internal/kv/mocks --filename=TxnKV.go --with-expecter mockery --name=TxnKV --dir=$(PWD)/internal/kv --output=$(PWD)/internal/kv/mocks --filename=TxnKV.go --with-expecter

View File

@ -119,3 +119,22 @@ func IsCollectionNotExistError(e error) bool {
} }
return false return false
} }
func IsCollectionNotExistErrorV2(e error) bool {
statusError, ok := e.(*statusError)
if !ok {
return false
}
return statusError.GetErrorCode() == commonpb.ErrorCode_CollectionNotExists
}
func StatusFromError(e error) *commonpb.Status {
if e == nil {
return &commonpb.Status{ErrorCode: commonpb.ErrorCode_Success}
}
statusError, ok := e.(*statusError)
if !ok {
return &commonpb.Status{ErrorCode: commonpb.ErrorCode_UnexpectedError, Reason: e.Error()}
}
return &commonpb.Status{ErrorCode: statusError.GetErrorCode(), Reason: statusError.GetReason()}
}

View File

@ -61,3 +61,21 @@ func Test_IsCollectionNotExistError(t *testing.T) {
assert.True(t, IsCollectionNotExistError(NewCollectionNotExistError("collection not exist"))) assert.True(t, IsCollectionNotExistError(NewCollectionNotExistError("collection not exist")))
assert.False(t, IsCollectionNotExistError(NewStatusError(commonpb.ErrorCode_BuildIndexError, ""))) assert.False(t, IsCollectionNotExistError(NewStatusError(commonpb.ErrorCode_BuildIndexError, "")))
} }
func TestIsCollectionNotExistErrorV2(t *testing.T) {
assert.False(t, IsCollectionNotExistErrorV2(nil))
assert.False(t, IsCollectionNotExistErrorV2(errors.New("not status error")))
assert.True(t, IsCollectionNotExistErrorV2(NewCollectionNotExistError("collection not exist")))
assert.False(t, IsCollectionNotExistErrorV2(NewStatusError(commonpb.ErrorCode_BuildIndexError, "")))
}
func TestStatusFromError(t *testing.T) {
var status *commonpb.Status
status = StatusFromError(nil)
assert.Equal(t, commonpb.ErrorCode_Success, status.GetErrorCode())
status = StatusFromError(errors.New("not status error"))
assert.Equal(t, commonpb.ErrorCode_UnexpectedError, status.GetErrorCode())
assert.Equal(t, "not status error", status.GetReason())
status = StatusFromError(NewCollectionNotExistError("collection not exist"))
assert.Equal(t, commonpb.ErrorCode_CollectionNotExists, status.GetErrorCode())
}

View File

@ -453,6 +453,7 @@ func (t *compactionTrigger) handleSignal(signal *compactionSignal) {
isDiskIndex, err := t.updateSegmentMaxSize(segments) isDiskIndex, err := t.updateSegmentMaxSize(segments)
if err != nil { if err != nil {
log.Warn("failed to update segment max size", zap.Error(err)) log.Warn("failed to update segment max size", zap.Error(err))
return
} }
ts, err := t.allocTs() ts, err := t.allocTs()

View File

@ -365,6 +365,10 @@ func (m *mockRootCoordService) DescribeCollection(ctx context.Context, req *milv
}, nil }, nil
} }
func (m *mockRootCoordService) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return m.DescribeCollection(ctx, req)
}
func (m *mockRootCoordService) ShowCollections(ctx context.Context, req *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) { func (m *mockRootCoordService) ShowCollections(ctx context.Context, req *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) {
return &milvuspb.ShowCollectionsResponse{ return &milvuspb.ShowCollectionsResponse{
Status: &commonpb.Status{ Status: &commonpb.Status{
@ -402,6 +406,10 @@ func (m *mockRootCoordService) ShowPartitions(ctx context.Context, req *milvuspb
}, nil }, nil
} }
func (m *mockRootCoordService) ShowPartitionsInternal(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return m.ShowPartitions(ctx, req)
}
//global timestamp allocator //global timestamp allocator
func (m *mockRootCoordService) AllocTimestamp(ctx context.Context, req *rootcoordpb.AllocTimestampRequest) (*rootcoordpb.AllocTimestampResponse, error) { func (m *mockRootCoordService) AllocTimestamp(ctx context.Context, req *rootcoordpb.AllocTimestampRequest) (*rootcoordpb.AllocTimestampResponse, error) {
if m.state != commonpb.StateCode_Healthy { if m.state != commonpb.StateCode_Healthy {

View File

@ -860,7 +860,7 @@ func (s *Server) stopServerLoop() {
// loadCollectionFromRootCoord communicates with RootCoord and asks for collection information. // loadCollectionFromRootCoord communicates with RootCoord and asks for collection information.
// collection information will be added to server meta info. // collection information will be added to server meta info.
func (s *Server) loadCollectionFromRootCoord(ctx context.Context, collectionID int64) error { func (s *Server) loadCollectionFromRootCoord(ctx context.Context, collectionID int64) error {
resp, err := s.rootCoordClient.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{ resp, err := s.rootCoordClient.DescribeCollectionInternal(ctx, &milvuspb.DescribeCollectionRequest{
Base: commonpbutil.NewMsgBase( Base: commonpbutil.NewMsgBase(
commonpbutil.WithMsgType(commonpb.MsgType_DescribeCollection), commonpbutil.WithMsgType(commonpb.MsgType_DescribeCollection),
commonpbutil.WithSourceID(paramtable.GetNodeID()), commonpbutil.WithSourceID(paramtable.GetNodeID()),
@ -871,7 +871,7 @@ func (s *Server) loadCollectionFromRootCoord(ctx context.Context, collectionID i
if err = VerifyResponse(resp, err); err != nil { if err = VerifyResponse(resp, err); err != nil {
return err return err
} }
presp, err := s.rootCoordClient.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{ presp, err := s.rootCoordClient.ShowPartitionsInternal(ctx, &milvuspb.ShowPartitionsRequest{
Base: commonpbutil.NewMsgBase( Base: commonpbutil.NewMsgBase(
commonpbutil.WithMsgType(commonpb.MsgType_ShowPartitions), commonpbutil.WithMsgType(commonpb.MsgType_ShowPartitions),
commonpbutil.WithMsgID(0), commonpbutil.WithMsgID(0),

View File

@ -202,7 +202,7 @@ type mockRootCoord struct {
collID UniqueID collID UniqueID
} }
func (r *mockRootCoord) DescribeCollection(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) { func (r *mockRootCoord) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
if req.CollectionID != r.collID { if req.CollectionID != r.collID {
return &milvuspb.DescribeCollectionResponse{ return &milvuspb.DescribeCollectionResponse{
Status: &commonpb.Status{ Status: &commonpb.Status{

View File

@ -157,6 +157,7 @@ func (s *Server) AssignSegmentID(ctx context.Context, req *datapb.AssignSegmentI
zap.Int64("import task ID", r.GetImportTaskID())) zap.Int64("import task ID", r.GetImportTaskID()))
// Load the collection info from Root Coordinator, if it is not found in server meta. // Load the collection info from Root Coordinator, if it is not found in server meta.
// Note: this request wouldn't be received if collection didn't exist.
_, err := s.handler.GetCollection(ctx, r.GetCollectionID()) _, err := s.handler.GetCollection(ctx, r.GetCollectionID())
if err != nil { if err != nil {
log.Warn("cannot get collection schema", zap.Error(err)) log.Warn("cannot get collection schema", zap.Error(err))
@ -614,7 +615,7 @@ func (s *Server) GetRecoveryInfo(ctx context.Context, req *datapb.GetRecoveryInf
return resp, nil return resp, nil
} }
dresp, err := s.rootCoordClient.DescribeCollection(s.ctx, &milvuspb.DescribeCollectionRequest{ dresp, err := s.rootCoordClient.DescribeCollectionInternal(s.ctx, &milvuspb.DescribeCollectionRequest{
Base: commonpbutil.NewMsgBase( Base: commonpbutil.NewMsgBase(
commonpbutil.WithMsgType(commonpb.MsgType_DescribeCollection), commonpbutil.WithMsgType(commonpb.MsgType_DescribeCollection),
commonpbutil.WithSourceID(paramtable.GetNodeID()), commonpbutil.WithSourceID(paramtable.GetNodeID()),

View File

@ -70,7 +70,7 @@ func (mService *metaService) getCollectionInfo(ctx context.Context, collID Uniqu
TimeStamp: timestamp, TimeStamp: timestamp,
} }
response, err := mService.rootCoord.DescribeCollection(ctx, req) response, err := mService.rootCoord.DescribeCollectionInternal(ctx, req)
if err != nil { if err != nil {
return nil, fmt.Errorf("grpc error when describe collection %v from rootcoord: %s", collID, err.Error()) return nil, fmt.Errorf("grpc error when describe collection %v from rootcoord: %s", collID, err.Error())
} }

View File

@ -65,8 +65,8 @@ type RootCoordFails1 struct {
RootCoordFactory RootCoordFactory
} }
// DescribeCollection override method that will fails // DescribeCollectionInternal override method that will fails
func (rc *RootCoordFails1) DescribeCollection(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) { func (rc *RootCoordFails1) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return nil, errors.New("always fail") return nil, errors.New("always fail")
} }
@ -75,8 +75,8 @@ type RootCoordFails2 struct {
RootCoordFactory RootCoordFactory
} }
// DescribeCollection override method that will fails // DescribeCollectionInternal override method that will fails
func (rc *RootCoordFails2) DescribeCollection(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) { func (rc *RootCoordFails2) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return &milvuspb.DescribeCollectionResponse{ return &milvuspb.DescribeCollectionResponse{
Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_UnexpectedError}, Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_UnexpectedError},
}, nil }, nil

View File

@ -1001,7 +1001,7 @@ func (m *RootCoordFactory) ShowCollections(ctx context.Context, in *milvuspb.Sho
} }
func (m *RootCoordFactory) DescribeCollection(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) { func (m *RootCoordFactory) DescribeCollectionInternal(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
f := MetaFactory{} f := MetaFactory{}
meta := f.GetCollectionMeta(m.collectionID, m.collectionName, m.pkType) meta := f.GetCollectionMeta(m.collectionID, m.collectionName, m.pkType)
resp := &milvuspb.DescribeCollectionResponse{ resp := &milvuspb.DescribeCollectionResponse{

View File

@ -143,6 +143,10 @@ func (m *MockRootCoord) DescribeCollection(ctx context.Context, req *milvuspb.De
return nil, nil return nil, nil
} }
func (m *MockRootCoord) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return nil, nil
}
func (m *MockRootCoord) ShowCollections(ctx context.Context, req *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) { func (m *MockRootCoord) ShowCollections(ctx context.Context, req *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) {
return nil, nil return nil, nil
} }
@ -167,6 +171,10 @@ func (m *MockRootCoord) ShowPartitions(ctx context.Context, req *milvuspb.ShowPa
return nil, nil return nil, nil
} }
func (m *MockRootCoord) ShowPartitionsInternal(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return nil, nil
}
func (m *MockRootCoord) CreateAlias(ctx context.Context, req *milvuspb.CreateAliasRequest) (*commonpb.Status, error) { func (m *MockRootCoord) CreateAlias(ctx context.Context, req *milvuspb.CreateAliasRequest) (*commonpb.Status, error) {
return nil, nil return nil, nil
} }

View File

@ -239,6 +239,25 @@ func (c *Client) DescribeCollection(ctx context.Context, in *milvuspb.DescribeCo
return ret.(*milvuspb.DescribeCollectionResponse), err return ret.(*milvuspb.DescribeCollectionResponse), err
} }
// DescribeCollectionInternal return collection info
func (c *Client) DescribeCollectionInternal(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
in = typeutil.Clone(in)
commonpbutil.UpdateMsgBase(
in.GetBase(),
commonpbutil.FillMsgBaseFromClient(paramtable.GetNodeID(), commonpbutil.WithTargetID(c.sess.ServerID)),
)
ret, err := c.grpcClient.ReCall(ctx, func(client rootcoordpb.RootCoordClient) (any, error) {
if !funcutil.CheckCtxValid(ctx) {
return nil, ctx.Err()
}
return client.DescribeCollectionInternal(ctx, in)
})
if err != nil || ret == nil {
return nil, err
}
return ret.(*milvuspb.DescribeCollectionResponse), err
}
// ShowCollections list all collection names // ShowCollections list all collection names
func (c *Client) ShowCollections(ctx context.Context, in *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) { func (c *Client) ShowCollections(ctx context.Context, in *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) {
in = typeutil.Clone(in) in = typeutil.Clone(in)
@ -352,6 +371,25 @@ func (c *Client) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitions
return ret.(*milvuspb.ShowPartitionsResponse), err return ret.(*milvuspb.ShowPartitionsResponse), err
} }
// ShowPartitionsInternal list all partitions in collection
func (c *Client) ShowPartitionsInternal(ctx context.Context, in *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
in = typeutil.Clone(in)
commonpbutil.UpdateMsgBase(
in.GetBase(),
commonpbutil.FillMsgBaseFromClient(paramtable.GetNodeID(), commonpbutil.WithTargetID(c.sess.ServerID)),
)
ret, err := c.grpcClient.ReCall(ctx, func(client rootcoordpb.RootCoordClient) (any, error) {
if !funcutil.CheckCtxValid(ctx) {
return nil, ctx.Err()
}
return client.ShowPartitionsInternal(ctx, in)
})
if err != nil || ret == nil {
return nil, err
}
return ret.(*milvuspb.ShowPartitionsResponse), err
}
// AllocTimestamp global timestamp allocator // AllocTimestamp global timestamp allocator
func (c *Client) AllocTimestamp(ctx context.Context, in *rootcoordpb.AllocTimestampRequest) (*rootcoordpb.AllocTimestampResponse, error) { func (c *Client) AllocTimestamp(ctx context.Context, in *rootcoordpb.AllocTimestampRequest) (*rootcoordpb.AllocTimestampResponse, error) {
in = typeutil.Clone(in) in = typeutil.Clone(in)

View File

@ -351,6 +351,11 @@ func (s *Server) DescribeCollection(ctx context.Context, in *milvuspb.DescribeCo
return s.rootCoord.DescribeCollection(ctx, in) return s.rootCoord.DescribeCollection(ctx, in)
} }
// DescribeCollectionInternal gets meta info of a collection
func (s *Server) DescribeCollectionInternal(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return s.rootCoord.DescribeCollectionInternal(ctx, in)
}
// ShowCollections gets all collections // ShowCollections gets all collections
func (s *Server) ShowCollections(ctx context.Context, in *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) { func (s *Server) ShowCollections(ctx context.Context, in *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) {
return s.rootCoord.ShowCollections(ctx, in) return s.rootCoord.ShowCollections(ctx, in)
@ -376,6 +381,11 @@ func (s *Server) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitions
return s.rootCoord.ShowPartitions(ctx, in) return s.rootCoord.ShowPartitions(ctx, in)
} }
// ShowPartitionsInternal gets all partitions for the specified collection.
func (s *Server) ShowPartitionsInternal(ctx context.Context, in *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return s.rootCoord.ShowPartitionsInternal(ctx, in)
}
// AllocTimestamp global timestamp allocator // AllocTimestamp global timestamp allocator
func (s *Server) AllocTimestamp(ctx context.Context, in *rootcoordpb.AllocTimestampRequest) (*rootcoordpb.AllocTimestampResponse, error) { func (s *Server) AllocTimestamp(ctx context.Context, in *rootcoordpb.AllocTimestampRequest) (*rootcoordpb.AllocTimestampResponse, error) {
return s.rootCoord.AllocTimestamp(ctx, in) return s.rootCoord.AllocTimestamp(ctx, in)

View File

@ -595,6 +595,53 @@ func (_c *RootCoord_DescribeCollection_Call) Return(_a0 *milvuspb.DescribeCollec
return _c return _c
} }
// DescribeCollectionInternal provides a mock function with given fields: ctx, req
func (_m *RootCoord) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.DescribeCollectionResponse
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.DescribeCollectionRequest) *milvuspb.DescribeCollectionResponse); ok {
r0 = rf(ctx, req)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*milvuspb.DescribeCollectionResponse)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.DescribeCollectionRequest) error); ok {
r1 = rf(ctx, req)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// RootCoord_DescribeCollectionInternal_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DescribeCollectionInternal'
type RootCoord_DescribeCollectionInternal_Call struct {
*mock.Call
}
// DescribeCollectionInternal is a helper method to define mock.On call
// - ctx context.Context
// - req *milvuspb.DescribeCollectionRequest
func (_e *RootCoord_Expecter) DescribeCollectionInternal(ctx interface{}, req interface{}) *RootCoord_DescribeCollectionInternal_Call {
return &RootCoord_DescribeCollectionInternal_Call{Call: _e.mock.On("DescribeCollectionInternal", ctx, req)}
}
func (_c *RootCoord_DescribeCollectionInternal_Call) Run(run func(ctx context.Context, req *milvuspb.DescribeCollectionRequest)) *RootCoord_DescribeCollectionInternal_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*milvuspb.DescribeCollectionRequest))
})
return _c
}
func (_c *RootCoord_DescribeCollectionInternal_Call) Return(_a0 *milvuspb.DescribeCollectionResponse, _a1 error) *RootCoord_DescribeCollectionInternal_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// DropAlias provides a mock function with given fields: ctx, req // DropAlias provides a mock function with given fields: ctx, req
func (_m *RootCoord) DropAlias(ctx context.Context, req *milvuspb.DropAliasRequest) (*commonpb.Status, error) { func (_m *RootCoord) DropAlias(ctx context.Context, req *milvuspb.DropAliasRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req) ret := _m.Called(ctx, req)
@ -1886,6 +1933,53 @@ func (_c *RootCoord_ShowPartitions_Call) Return(_a0 *milvuspb.ShowPartitionsResp
return _c return _c
} }
// ShowPartitionsInternal provides a mock function with given fields: ctx, req
func (_m *RootCoord) ShowPartitionsInternal(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.ShowPartitionsResponse
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.ShowPartitionsRequest) *milvuspb.ShowPartitionsResponse); ok {
r0 = rf(ctx, req)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*milvuspb.ShowPartitionsResponse)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.ShowPartitionsRequest) error); ok {
r1 = rf(ctx, req)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// RootCoord_ShowPartitionsInternal_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ShowPartitionsInternal'
type RootCoord_ShowPartitionsInternal_Call struct {
*mock.Call
}
// ShowPartitionsInternal is a helper method to define mock.On call
// - ctx context.Context
// - req *milvuspb.ShowPartitionsRequest
func (_e *RootCoord_Expecter) ShowPartitionsInternal(ctx interface{}, req interface{}) *RootCoord_ShowPartitionsInternal_Call {
return &RootCoord_ShowPartitionsInternal_Call{Call: _e.mock.On("ShowPartitionsInternal", ctx, req)}
}
func (_c *RootCoord_ShowPartitionsInternal_Call) Run(run func(ctx context.Context, req *milvuspb.ShowPartitionsRequest)) *RootCoord_ShowPartitionsInternal_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*milvuspb.ShowPartitionsRequest))
})
return _c
}
func (_c *RootCoord_ShowPartitionsInternal_Call) Return(_a0 *milvuspb.ShowPartitionsResponse, _a1 error) *RootCoord_ShowPartitionsInternal_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// ShowSegments provides a mock function with given fields: ctx, req // ShowSegments provides a mock function with given fields: ctx, req
func (_m *RootCoord) ShowSegments(ctx context.Context, req *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) { func (_m *RootCoord) ShowSegments(ctx context.Context, req *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) {
ret := _m.Called(ctx, req) ret := _m.Called(ctx, req)

View File

@ -49,6 +49,7 @@ service RootCoord {
* @return CollectionSchema * @return CollectionSchema
*/ */
rpc DescribeCollection(milvus.DescribeCollectionRequest) returns (milvus.DescribeCollectionResponse) {} rpc DescribeCollection(milvus.DescribeCollectionRequest) returns (milvus.DescribeCollectionResponse) {}
rpc DescribeCollectionInternal(milvus.DescribeCollectionRequest) returns (milvus.DescribeCollectionResponse) {}
rpc CreateAlias(milvus.CreateAliasRequest) returns (common.Status) {} rpc CreateAlias(milvus.CreateAliasRequest) returns (common.Status) {}
rpc DropAlias(milvus.DropAliasRequest) returns (common.Status) {} rpc DropAlias(milvus.DropAliasRequest) returns (common.Status) {}
@ -92,6 +93,7 @@ service RootCoord {
* @return StringListResponse * @return StringListResponse
*/ */
rpc ShowPartitions(milvus.ShowPartitionsRequest) returns (milvus.ShowPartitionsResponse) {} rpc ShowPartitions(milvus.ShowPartitionsRequest) returns (milvus.ShowPartitionsResponse) {}
rpc ShowPartitionsInternal(milvus.ShowPartitionsRequest) returns (milvus.ShowPartitionsResponse) {}
// rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {} // rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {}
rpc ShowSegments(milvus.ShowSegmentsRequest) returns (milvus.ShowSegmentsResponse) {} rpc ShowSegments(milvus.ShowSegmentsRequest) returns (milvus.ShowSegmentsResponse) {}

View File

@ -674,103 +674,105 @@ func init() {
func init() { proto.RegisterFile("root_coord.proto", fileDescriptor_4513485a144f6b06) } func init() { proto.RegisterFile("root_coord.proto", fileDescriptor_4513485a144f6b06) }
var fileDescriptor_4513485a144f6b06 = []byte{ var fileDescriptor_4513485a144f6b06 = []byte{
// 1535 bytes of a gzipped FileDescriptorProto // 1557 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x6b, 0x93, 0xda, 0x36, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5b, 0x93, 0xda, 0x36,
0x17, 0x0e, 0x90, 0xbd, 0x70, 0x60, 0x61, 0xa3, 0xc9, 0x85, 0x97, 0xe4, 0x7d, 0x43, 0x48, 0xde, 0x14, 0x0e, 0x90, 0xbd, 0x1d, 0x58, 0xd8, 0x68, 0x72, 0xa1, 0x24, 0x6d, 0x09, 0x49, 0x1b, 0x72,
0x86, 0xdc, 0xd8, 0x74, 0x33, 0x93, 0xa6, 0xf9, 0x96, 0x85, 0xcc, 0x86, 0x69, 0x77, 0xb2, 0x35, 0x63, 0xd3, 0xcd, 0x4c, 0x9a, 0xe6, 0x2d, 0x0b, 0x99, 0x0d, 0xd3, 0xee, 0x64, 0x6b, 0x92, 0x4e,
0x49, 0x27, 0xbd, 0xec, 0x50, 0x61, 0x2b, 0xe0, 0x59, 0x63, 0x11, 0x49, 0xec, 0x65, 0xfa, 0xa9, 0x7a, 0xd9, 0xa1, 0xc2, 0x56, 0xc0, 0xb3, 0xc6, 0x22, 0x92, 0xd8, 0xcb, 0xf4, 0xa1, 0xd3, 0x99,
0x33, 0xfd, 0xde, 0xff, 0xd4, 0xfe, 0x94, 0xfe, 0x90, 0x76, 0x64, 0xd9, 0xc2, 0x36, 0x36, 0xeb, 0xbe, 0xf7, 0x3f, 0xb5, 0x3f, 0xa5, 0xbf, 0xa1, 0xef, 0x1d, 0x59, 0xb6, 0xb0, 0x8d, 0xcd, 0x7a,
0x4d, 0xf2, 0x0d, 0x49, 0x8f, 0x9f, 0xe7, 0xe8, 0x1c, 0x9d, 0x73, 0x24, 0x60, 0x93, 0x51, 0x2a, 0x93, 0xb4, 0x6f, 0x48, 0xfa, 0xfc, 0x7d, 0x47, 0xe7, 0x22, 0x1d, 0x01, 0x1b, 0x8c, 0x52, 0xd1,
0x06, 0x26, 0xa5, 0xcc, 0x6a, 0x4f, 0x19, 0x15, 0x14, 0x5d, 0x9d, 0xd8, 0xce, 0xd1, 0x8c, 0xab, 0x37, 0x29, 0x65, 0x56, 0x6b, 0xc2, 0xa8, 0xa0, 0xe8, 0xf2, 0xd8, 0x76, 0x0e, 0xa7, 0x5c, 0x8d,
0x51, 0x5b, 0x2e, 0x7b, 0xab, 0xf5, 0xb2, 0x49, 0x27, 0x13, 0xea, 0xaa, 0xf9, 0x7a, 0x39, 0x8c, 0x5a, 0x72, 0xd9, 0x5b, 0xad, 0x95, 0x4c, 0x3a, 0x1e, 0x53, 0x57, 0xcd, 0xd7, 0x4a, 0x61, 0x54,
0xaa, 0x57, 0x6c, 0x57, 0x10, 0xe6, 0x62, 0xc7, 0x1f, 0x97, 0xa6, 0x8c, 0x9e, 0x9c, 0xfa, 0x83, 0xad, 0x6c, 0xbb, 0x82, 0x30, 0x17, 0x3b, 0xfe, 0xb8, 0x38, 0x61, 0xf4, 0xf8, 0xc4, 0x1f, 0x54,
0x2a, 0x11, 0xa6, 0x35, 0x98, 0x10, 0x81, 0xd5, 0x44, 0x73, 0x00, 0x57, 0x5e, 0x38, 0x0e, 0x35, 0x88, 0x30, 0xad, 0xfe, 0x98, 0x08, 0xac, 0x26, 0x1a, 0x7d, 0xb8, 0xf4, 0xd4, 0x71, 0xa8, 0xf9,
0xdf, 0xd8, 0x13, 0xc2, 0x05, 0x9e, 0x4c, 0x0d, 0xf2, 0x61, 0x46, 0xb8, 0x40, 0x8f, 0xe1, 0xe2, 0xd2, 0x1e, 0x13, 0x2e, 0xf0, 0x78, 0x62, 0x90, 0xb7, 0x53, 0xc2, 0x05, 0x7a, 0x00, 0xe7, 0x07,
0x10, 0x73, 0x52, 0xcb, 0x35, 0x72, 0xad, 0xd2, 0xf6, 0x8d, 0x76, 0xc4, 0x12, 0x5f, 0x7e, 0x8f, 0x98, 0x93, 0x6a, 0xae, 0x9e, 0x6b, 0x16, 0xb7, 0xae, 0xb5, 0x22, 0x96, 0xf8, 0xf2, 0xbb, 0x7c,
0x8f, 0x76, 0x30, 0x27, 0x86, 0x87, 0x44, 0x97, 0x61, 0xc5, 0xa4, 0x33, 0x57, 0xd4, 0x0a, 0x8d, 0xb8, 0x8d, 0x39, 0x31, 0x3c, 0x24, 0xba, 0x08, 0x4b, 0x26, 0x9d, 0xba, 0xa2, 0x5a, 0xa8, 0xe7,
0x5c, 0x6b, 0xc3, 0x50, 0x83, 0xe6, 0x6f, 0x39, 0xb8, 0x1a, 0x57, 0xe0, 0x53, 0xea, 0x72, 0x82, 0x9a, 0xeb, 0x86, 0x1a, 0x34, 0x7e, 0xcb, 0xc1, 0xe5, 0xb8, 0x02, 0x9f, 0x50, 0x97, 0x13, 0xf4,
0x9e, 0xc0, 0x2a, 0x17, 0x58, 0xcc, 0xb8, 0x2f, 0x72, 0x3d, 0x51, 0xa4, 0xef, 0x41, 0x0c, 0x1f, 0x10, 0x96, 0xb9, 0xc0, 0x62, 0xca, 0x7d, 0x91, 0xab, 0x89, 0x22, 0x3d, 0x0f, 0x62, 0xf8, 0x50,
0x8a, 0x6e, 0x40, 0x51, 0x04, 0x4c, 0xb5, 0x7c, 0x23, 0xd7, 0xba, 0x68, 0xcc, 0x27, 0x52, 0x6c, 0x74, 0x0d, 0xd6, 0x44, 0xc0, 0x54, 0xcd, 0xd7, 0x73, 0xcd, 0xf3, 0xc6, 0x6c, 0x22, 0xc5, 0x86,
0x78, 0x07, 0x15, 0xcf, 0x84, 0x5e, 0xf7, 0x33, 0xec, 0x2e, 0x1f, 0x66, 0x76, 0xa0, 0xaa, 0x99, 0xd7, 0x50, 0xf6, 0x4c, 0xe8, 0x76, 0x3e, 0xc0, 0xee, 0xf2, 0x61, 0x66, 0x07, 0x2a, 0x9a, 0xf9,
0x3f, 0x65, 0x57, 0x15, 0xc8, 0xf7, 0xba, 0x1e, 0x75, 0xc1, 0xc8, 0xf7, 0xba, 0x29, 0xfb, 0xf8, 0x7d, 0x76, 0x55, 0x86, 0x7c, 0xb7, 0xe3, 0x51, 0x17, 0x8c, 0x7c, 0xb7, 0x93, 0xb2, 0x8f, 0x3f,
0x33, 0x0f, 0xe5, 0xde, 0x64, 0x4a, 0x99, 0x30, 0x08, 0x9f, 0x39, 0xe2, 0xe3, 0xb4, 0xae, 0xc1, 0xf3, 0x50, 0xea, 0x8e, 0x27, 0x94, 0x09, 0x83, 0xf0, 0xa9, 0x23, 0xde, 0x4d, 0xeb, 0x0a, 0xac,
0x9a, 0xc0, 0xfc, 0x70, 0x60, 0x5b, 0xbe, 0xe0, 0xaa, 0x1c, 0xf6, 0x2c, 0x74, 0x13, 0x4a, 0x16, 0x08, 0xcc, 0x0f, 0xfa, 0xb6, 0xe5, 0x0b, 0x2e, 0xcb, 0x61, 0xd7, 0x42, 0x9f, 0x42, 0xd1, 0xc2,
0x16, 0xd8, 0xa5, 0x16, 0x91, 0x8b, 0x05, 0x6f, 0x11, 0x82, 0xa9, 0x9e, 0x85, 0x9e, 0xc2, 0x8a, 0x02, 0xbb, 0xd4, 0x22, 0x72, 0xb1, 0xe0, 0x2d, 0x42, 0x30, 0xd5, 0xb5, 0xd0, 0x23, 0x58, 0x92,
0xe4, 0x20, 0xb5, 0x8b, 0x8d, 0x5c, 0xab, 0xb2, 0xdd, 0x48, 0x54, 0x53, 0x06, 0x4a, 0x4d, 0x62, 0x1c, 0xa4, 0x7a, 0xbe, 0x9e, 0x6b, 0x96, 0xb7, 0xea, 0x89, 0x6a, 0xca, 0x40, 0xa9, 0x49, 0x0c,
0x28, 0x38, 0xaa, 0xc3, 0x3a, 0x27, 0xa3, 0x09, 0x71, 0x05, 0xaf, 0xad, 0x34, 0x0a, 0xad, 0x82, 0x05, 0x47, 0x35, 0x58, 0xe5, 0x64, 0x38, 0x26, 0xae, 0xe0, 0xd5, 0xa5, 0x7a, 0xa1, 0x59, 0x30,
0xa1, 0xc7, 0xe8, 0x3f, 0xb0, 0x8e, 0x67, 0x82, 0x0e, 0x6c, 0x8b, 0xd7, 0x56, 0xbd, 0xb5, 0x35, 0xf4, 0x18, 0x7d, 0x04, 0xab, 0x78, 0x2a, 0x68, 0xdf, 0xb6, 0x78, 0x75, 0xd9, 0x5b, 0x5b, 0x91,
0x39, 0xee, 0x59, 0x1c, 0x5d, 0x87, 0x22, 0xa3, 0xc7, 0x03, 0xe5, 0x88, 0x35, 0xcf, 0x9a, 0x75, 0xe3, 0xae, 0xc5, 0xd1, 0x55, 0x58, 0x63, 0xf4, 0xa8, 0xaf, 0x1c, 0xb1, 0xe2, 0x59, 0xb3, 0xca,
0x46, 0x8f, 0x3b, 0x72, 0x8c, 0xbe, 0x82, 0x15, 0xdb, 0x7d, 0x4f, 0x79, 0x6d, 0xbd, 0x51, 0x68, 0xe8, 0x51, 0x5b, 0x8e, 0xd1, 0x97, 0xb0, 0x64, 0xbb, 0x6f, 0x28, 0xaf, 0xae, 0xd6, 0x0b, 0xcd,
0x95, 0xb6, 0x6f, 0x25, 0xda, 0xf2, 0x0d, 0x39, 0xfd, 0x1e, 0x3b, 0x33, 0xb2, 0x8f, 0x6d, 0x66, 0xe2, 0xd6, 0xf5, 0x44, 0x5b, 0xbe, 0x26, 0x27, 0xdf, 0x61, 0x67, 0x4a, 0xf6, 0xb0, 0xcd, 0x0c,
0x28, 0x7c, 0xf3, 0x8f, 0x1c, 0x5c, 0xeb, 0x12, 0x6e, 0x32, 0x7b, 0x48, 0xfa, 0xbe, 0x15, 0x1f, 0x85, 0x6f, 0xfc, 0x91, 0x83, 0x2b, 0x1d, 0xc2, 0x4d, 0x66, 0x0f, 0x48, 0xcf, 0xb7, 0xe2, 0xdd,
0x7f, 0x2c, 0x9a, 0x50, 0x36, 0xa9, 0xe3, 0x10, 0x53, 0xd8, 0xd4, 0xd5, 0x21, 0x8c, 0xcc, 0xa1, 0xd3, 0xa2, 0x01, 0x25, 0x93, 0x3a, 0x0e, 0x31, 0x85, 0x4d, 0x5d, 0x1d, 0xc2, 0xc8, 0x1c, 0xfa,
0xff, 0x01, 0xf8, 0xdb, 0xed, 0x75, 0x79, 0xad, 0xe0, 0x6d, 0x32, 0x34, 0xd3, 0x9c, 0x41, 0xd5, 0x04, 0xc0, 0xdf, 0x6e, 0xb7, 0xc3, 0xab, 0x05, 0x6f, 0x93, 0xa1, 0x99, 0xc6, 0x14, 0x2a, 0xbe,
0x37, 0x44, 0x12, 0xf7, 0xdc, 0xf7, 0x74, 0x81, 0x36, 0x97, 0x40, 0xdb, 0x80, 0xd2, 0x14, 0x33, 0x21, 0x92, 0xb8, 0xeb, 0xbe, 0xa1, 0x73, 0xb4, 0xb9, 0x04, 0xda, 0x3a, 0x14, 0x27, 0x98, 0x09,
0x61, 0x47, 0x94, 0xc3, 0x53, 0x32, 0x57, 0xb4, 0x8c, 0x1f, 0xce, 0xf9, 0x44, 0xf3, 0xef, 0x3c, 0x3b, 0xa2, 0x1c, 0x9e, 0x92, 0xb5, 0xa2, 0x65, 0xfc, 0x70, 0xce, 0x26, 0x1a, 0x7f, 0xe7, 0xa1,
0x94, 0x7d, 0x5d, 0xa9, 0xc9, 0x51, 0x17, 0x8a, 0x72, 0x4f, 0x03, 0xe9, 0x27, 0xdf, 0x05, 0x77, 0xe4, 0xeb, 0x4a, 0x4d, 0x8e, 0x3a, 0xb0, 0x26, 0xf7, 0xd4, 0x97, 0x7e, 0xf2, 0x5d, 0x70, 0xab,
0xdb, 0xc9, 0x15, 0xa8, 0x1d, 0x33, 0xd8, 0x58, 0x1f, 0x06, 0xa6, 0x77, 0xa1, 0x64, 0xbb, 0x16, 0x95, 0x7c, 0x02, 0xb5, 0x62, 0x06, 0x1b, 0xab, 0x83, 0xc0, 0xf4, 0x0e, 0x14, 0x6d, 0xd7, 0x22,
0x39, 0x19, 0xa8, 0xf0, 0xe4, 0xbd, 0xf0, 0xdc, 0x8e, 0xf2, 0xc8, 0x2a, 0xd4, 0xd6, 0xda, 0x16, 0xc7, 0x7d, 0x15, 0x9e, 0xbc, 0x17, 0x9e, 0x1b, 0x51, 0x1e, 0x79, 0x0a, 0xb5, 0xb4, 0xb6, 0x45,
0x39, 0xf1, 0x38, 0xc0, 0x0e, 0x7e, 0x72, 0x44, 0xe0, 0x12, 0x39, 0x11, 0x0c, 0x0f, 0xc2, 0x5c, 0x8e, 0x3d, 0x0e, 0xb0, 0x83, 0x9f, 0x1c, 0x11, 0xb8, 0x40, 0x8e, 0x05, 0xc3, 0xfd, 0x30, 0x57,
0x05, 0x8f, 0xeb, 0xeb, 0x33, 0x6c, 0xf2, 0x08, 0xda, 0x2f, 0xe5, 0xd7, 0x9a, 0x9b, 0xbf, 0x74, 0xc1, 0xe3, 0xfa, 0xea, 0x14, 0x9b, 0x3c, 0x82, 0xd6, 0x33, 0xf9, 0xb5, 0xe6, 0xe6, 0xcf, 0x5c,
0x05, 0x3b, 0x35, 0xaa, 0x24, 0x3a, 0x5b, 0xff, 0x05, 0x2e, 0x27, 0x01, 0xd1, 0x26, 0x14, 0x0e, 0xc1, 0x4e, 0x8c, 0x0a, 0x89, 0xce, 0xd6, 0x7e, 0x86, 0x8b, 0x49, 0x40, 0xb4, 0x01, 0x85, 0x03,
0xc9, 0xa9, 0xef, 0x76, 0xf9, 0x13, 0x6d, 0xc3, 0xca, 0x91, 0x3c, 0x4a, 0x9e, 0x9f, 0x17, 0xce, 0x72, 0xe2, 0xbb, 0x5d, 0xfe, 0x44, 0x5b, 0xb0, 0x74, 0x28, 0x53, 0xc9, 0xf3, 0xf3, 0x5c, 0x6e,
0x86, 0xb7, 0xa1, 0xf9, 0x4e, 0x14, 0xf4, 0x79, 0xfe, 0x59, 0xae, 0xf9, 0x57, 0x1e, 0x6a, 0x8b, 0x78, 0x1b, 0x9a, 0xed, 0x44, 0x41, 0x9f, 0xe4, 0x1f, 0xe7, 0x1a, 0x7f, 0xe5, 0xa1, 0x3a, 0x9f,
0xc7, 0xed, 0x53, 0x6a, 0x45, 0x96, 0x23, 0x37, 0x82, 0x0d, 0x3f, 0xd0, 0x11, 0xd7, 0xed, 0xa4, 0x6e, 0xef, 0x73, 0x56, 0x64, 0x49, 0xb9, 0x21, 0xac, 0xfb, 0x81, 0x8e, 0xb8, 0x6e, 0x3b, 0xcd,
0xb9, 0x2e, 0xcd, 0xc2, 0x88, 0x4f, 0x95, 0x0f, 0xcb, 0x3c, 0x34, 0x55, 0x27, 0x70, 0x69, 0x01, 0x75, 0x69, 0x16, 0x46, 0x7c, 0xaa, 0x7c, 0x58, 0xe2, 0xa1, 0xa9, 0x1a, 0x81, 0x0b, 0x73, 0x90,
0x92, 0xe0, 0xbd, 0xe7, 0x51, 0xef, 0xdd, 0xc9, 0x12, 0xc2, 0xb0, 0x17, 0x2d, 0xb8, 0xbc, 0x4b, 0x04, 0xef, 0x3d, 0x89, 0x7a, 0xef, 0x66, 0x96, 0x10, 0x86, 0xbd, 0x68, 0xc1, 0xc5, 0x1d, 0x22,
0x44, 0x87, 0x11, 0x8b, 0xb8, 0xc2, 0xc6, 0xce, 0xc7, 0x27, 0x6c, 0x1d, 0xd6, 0x67, 0x5c, 0xf6, 0xda, 0x8c, 0x58, 0xc4, 0x15, 0x36, 0x76, 0xde, 0xbd, 0x60, 0x6b, 0xb0, 0x3a, 0xe5, 0xf2, 0x7e,
0xc7, 0x89, 0x32, 0xa6, 0x68, 0xe8, 0x71, 0xf3, 0xf7, 0x1c, 0x5c, 0x89, 0xc9, 0x7c, 0x4a, 0xa0, 0x1c, 0x2b, 0x63, 0xd6, 0x0c, 0x3d, 0x6e, 0xfc, 0x9e, 0x83, 0x4b, 0x31, 0x99, 0xf7, 0x09, 0xd4,
0x96, 0x48, 0xc9, 0xb5, 0x29, 0xe6, 0xfc, 0x98, 0x32, 0x55, 0x68, 0x8b, 0x86, 0x1e, 0x6f, 0xff, 0x02, 0x29, 0xb9, 0x36, 0xc1, 0x9c, 0x1f, 0x51, 0xa6, 0x0e, 0xda, 0x35, 0x43, 0x8f, 0xb7, 0xfe,
0x73, 0x13, 0x8a, 0x06, 0xa5, 0xa2, 0x23, 0x5d, 0x82, 0x1c, 0x40, 0xd2, 0x26, 0x3a, 0x99, 0x52, 0xb9, 0x0e, 0x6b, 0x06, 0xa5, 0xa2, 0x2d, 0x5d, 0x82, 0x1c, 0x40, 0xd2, 0x26, 0x3a, 0x9e, 0x50,
0x97, 0xb8, 0xaa, 0xb0, 0x72, 0xd4, 0x8e, 0x1a, 0xe0, 0x0f, 0x16, 0x81, 0xbe, 0xa3, 0xea, 0x77, 0x97, 0xb8, 0xea, 0x60, 0xe5, 0xa8, 0x15, 0x35, 0xc0, 0x1f, 0xcc, 0x03, 0x7d, 0x47, 0xd5, 0x6e,
0x12, 0xf1, 0x31, 0x70, 0xf3, 0x02, 0x9a, 0x78, 0x6a, 0xb2, 0x57, 0xbf, 0xb1, 0xcd, 0xc3, 0xce, 0x26, 0xe2, 0x63, 0xe0, 0xc6, 0x39, 0x34, 0xf6, 0xd4, 0xe4, 0x5d, 0xfd, 0xd2, 0x36, 0x0f, 0xda,
0x18, 0xbb, 0x2e, 0x71, 0xd0, 0xe3, 0xe8, 0xd7, 0xfa, 0x86, 0xb1, 0x08, 0x0d, 0xf4, 0x6e, 0x27, 0x23, 0xec, 0xba, 0xc4, 0x41, 0x0f, 0xa2, 0x5f, 0xeb, 0x0e, 0x63, 0x1e, 0x1a, 0xe8, 0xdd, 0x48,
0xea, 0xf5, 0x05, 0xb3, 0xdd, 0x51, 0xe0, 0xd5, 0xe6, 0x05, 0xf4, 0xc1, 0x8b, 0xab, 0x54, 0xb7, 0xd4, 0xeb, 0x09, 0x66, 0xbb, 0xc3, 0xc0, 0xab, 0x8d, 0x73, 0xe8, 0xad, 0x17, 0x57, 0xa9, 0x6e,
0xb9, 0xb0, 0x4d, 0x1e, 0x08, 0x6e, 0xa7, 0x0b, 0x2e, 0x80, 0xcf, 0x29, 0x39, 0x80, 0xcd, 0x0e, 0x73, 0x61, 0x9b, 0x3c, 0x10, 0xdc, 0x4a, 0x17, 0x9c, 0x03, 0x9f, 0x51, 0xb2, 0x0f, 0x1b, 0x6d,
0x23, 0x58, 0x90, 0x8e, 0x4e, 0x18, 0xf4, 0x30, 0xd9, 0x3b, 0x31, 0x58, 0x20, 0xb4, 0x2c, 0xf8, 0x46, 0xb0, 0x20, 0x6d, 0x5d, 0x30, 0xe8, 0x5e, 0xb2, 0x77, 0x62, 0xb0, 0x40, 0x68, 0x51, 0xf0,
0xcd, 0x0b, 0xe8, 0x27, 0xa8, 0x74, 0x19, 0x9d, 0x86, 0xe8, 0xef, 0x27, 0xd2, 0x47, 0x41, 0x19, 0x1b, 0xe7, 0xd0, 0x8f, 0x50, 0xee, 0x30, 0x3a, 0x09, 0xd1, 0xdf, 0x49, 0xa4, 0x8f, 0x82, 0x32,
0xc9, 0x07, 0xb0, 0xf1, 0x0a, 0xf3, 0x10, 0xf7, 0xbd, 0x44, 0xee, 0x08, 0x26, 0xa0, 0xbe, 0x95, 0x92, 0xf7, 0x61, 0xfd, 0x39, 0xe6, 0x21, 0xee, 0xdb, 0x89, 0xdc, 0x11, 0x4c, 0x40, 0x7d, 0x3d,
0x08, 0xdd, 0xa1, 0xd4, 0x09, 0xb9, 0xe7, 0x18, 0x50, 0x50, 0x0c, 0x42, 0x2a, 0xc9, 0xc7, 0x6d, 0x11, 0xba, 0x4d, 0xa9, 0x13, 0x72, 0xcf, 0x11, 0xa0, 0xe0, 0x30, 0x08, 0xa9, 0x24, 0xa7, 0xdb,
0x11, 0x18, 0x48, 0x6d, 0x65, 0xc6, 0x6b, 0xe1, 0xb7, 0x50, 0x52, 0x0e, 0x7f, 0xe1, 0xd8, 0x98, 0x3c, 0x30, 0x90, 0xda, 0xcc, 0x8c, 0xd7, 0xc2, 0xbf, 0x42, 0x6d, 0x7e, 0xbd, 0xeb, 0x07, 0xfe,
0xa3, 0xbb, 0x4b, 0x42, 0xe2, 0x21, 0x32, 0x3a, 0xec, 0x3b, 0x28, 0x4a, 0x47, 0x2b, 0xd2, 0xff, 0xff, 0x30, 0xe0, 0x15, 0x14, 0x55, 0xc4, 0x9f, 0x3a, 0x36, 0xe6, 0xe8, 0xd6, 0x82, 0x9c, 0xf0,
0xa7, 0x06, 0xe2, 0x3c, 0x94, 0x7d, 0x80, 0x17, 0x8e, 0x20, 0x4c, 0x71, 0x7e, 0x91, 0xc8, 0x39, 0x10, 0x19, 0x23, 0xf6, 0x2d, 0xac, 0xc9, 0x48, 0x2b, 0xd2, 0xcf, 0x52, 0x33, 0xe1, 0x2c, 0x94,
0x07, 0x64, 0x24, 0x75, 0xa1, 0xda, 0x1f, 0xcb, 0xcb, 0x4d, 0xe0, 0x1a, 0x8e, 0x1e, 0x24, 0x1f, 0x3d, 0x80, 0xa7, 0x8e, 0x20, 0x4c, 0x71, 0x7e, 0x9e, 0xc8, 0x39, 0x03, 0x64, 0x24, 0x75, 0xa1,
0xe8, 0x28, 0x2a, 0xa0, 0x7f, 0x98, 0x0d, 0xac, 0xdd, 0x7d, 0x20, 0x6f, 0xae, 0x82, 0xb0, 0x50, 0xd2, 0x1b, 0xc9, 0xee, 0x2a, 0x70, 0x0d, 0x47, 0x77, 0x93, 0x2b, 0x2a, 0x8a, 0x0a, 0xe8, 0xef,
0x90, 0x1f, 0xa4, 0xef, 0xe4, 0xdc, 0xe7, 0xf4, 0x00, 0xaa, 0x2a, 0x56, 0xfb, 0xc1, 0x7d, 0x24, 0x65, 0x03, 0x6b, 0x77, 0xef, 0xcb, 0xd6, 0x59, 0x10, 0x16, 0xca, 0xb2, 0xbb, 0xe9, 0x3b, 0x39,
0x85, 0x3e, 0x86, 0xca, 0x48, 0xff, 0x03, 0x6c, 0xc8, 0xa8, 0xcd, 0xc9, 0xef, 0xa5, 0x46, 0xf6, 0x73, 0xa1, 0xec, 0x43, 0x45, 0xc5, 0x6a, 0x2f, 0x68, 0x88, 0x52, 0xe8, 0x63, 0xa8, 0x8c, 0xf4,
0xbc, 0xd4, 0x07, 0x50, 0x7e, 0x85, 0xf9, 0x9c, 0xb9, 0x95, 0x96, 0x60, 0x0b, 0xc4, 0x99, 0xf2, 0xdf, 0xc3, 0xba, 0x8c, 0xda, 0x8c, 0xfc, 0x76, 0x6a, 0x64, 0xcf, 0x4a, 0xbd, 0x0f, 0xa5, 0xe7,
0xeb, 0x10, 0x2a, 0x32, 0x28, 0xfa, 0x63, 0x9e, 0x52, 0x1d, 0xa2, 0xa0, 0x40, 0xe2, 0x41, 0x26, 0x98, 0xcf, 0x98, 0x9b, 0x69, 0x15, 0x3e, 0x47, 0x9c, 0xa9, 0xc0, 0x0f, 0xa0, 0x2c, 0x83, 0xa2,
0xac, 0x16, 0x23, 0x50, 0x96, 0x6b, 0x41, 0x57, 0x4f, 0xd9, 0x4b, 0x18, 0x12, 0x08, 0xdd, 0xcb, 0x3f, 0xe6, 0x29, 0xc7, 0x53, 0x14, 0x14, 0x48, 0xdc, 0xcd, 0x84, 0xd5, 0x62, 0x1c, 0x2e, 0x47,
0x80, 0x0c, 0x55, 0xf1, 0x4a, 0xf4, 0x89, 0x87, 0x1e, 0xa5, 0x35, 0xf8, 0xc4, 0xc7, 0x66, 0xbd, 0xd7, 0x74, 0x41, 0xff, 0x87, 0xa2, 0x04, 0x4a, 0x72, 0x2d, 0xe8, 0x65, 0x52, 0x1c, 0x18, 0x86,
0x9d, 0x15, 0xae, 0x25, 0x7f, 0x86, 0x35, 0xff, 0xe1, 0x15, 0x4f, 0xc0, 0xd8, 0xc7, 0xfa, 0xcd, 0x04, 0x42, 0xb7, 0x33, 0x20, 0x43, 0x77, 0x57, 0x39, 0xfa, 0xb0, 0x45, 0xf7, 0xd3, 0xda, 0x9a,
0x57, 0xbf, 0x7b, 0x26, 0x4e, 0xb3, 0x63, 0xb8, 0xf2, 0x76, 0x6a, 0xc9, 0xe2, 0xaf, 0x5a, 0x4c, 0xc4, 0x27, 0x76, 0xad, 0x95, 0x15, 0xae, 0x25, 0x7f, 0x82, 0x15, 0xff, 0xb9, 0x19, 0xaf, 0xfa,
0xd0, 0xe4, 0xe2, 0xc7, 0x4c, 0xf7, 0xa5, 0x18, 0x6e, 0x8f, 0x8f, 0xce, 0x3a, 0x66, 0x0c, 0xfe, 0xd8, 0xc7, 0xfa, 0xa5, 0x5b, 0xbb, 0x75, 0x2a, 0x4e, 0xb3, 0x63, 0xb8, 0xf4, 0x6a, 0x62, 0xc9,
0xdb, 0x73, 0x8f, 0xb0, 0x63, 0x5b, 0x91, 0x1e, 0xb3, 0x47, 0x04, 0xee, 0x60, 0x73, 0x4c, 0xe2, 0x2b, 0x4f, 0x5d, 0xac, 0xc1, 0xd5, 0x1e, 0xcf, 0x6d, 0x7d, 0x1b, 0xc7, 0x70, 0xbb, 0x7c, 0x78,
0x2d, 0x50, 0xbd, 0xe2, 0xa3, 0x9f, 0x68, 0x70, 0xc6, 0xa3, 0xfd, 0x2b, 0x20, 0x55, 0x10, 0xdc, 0x5a, 0x6e, 0x33, 0xf8, 0xb8, 0xeb, 0x1e, 0x62, 0xc7, 0xb6, 0x22, 0x37, 0xeb, 0x2e, 0x11, 0xb8,
0xf7, 0xf6, 0x68, 0xc6, 0xb0, 0x3a, 0x7f, 0x69, 0xcd, 0x7d, 0x11, 0x1a, 0xc8, 0x7c, 0x79, 0x8e, 0x8d, 0xcd, 0x11, 0x89, 0x5f, 0xfc, 0xea, 0xbf, 0x8b, 0xe8, 0x27, 0x1a, 0x9c, 0xb1, 0x9e, 0x7e,
0x2f, 0x42, 0x7d, 0x17, 0x76, 0x89, 0xd8, 0x23, 0x82, 0xd9, 0x66, 0x5a, 0xd5, 0x9c, 0x03, 0x52, 0x01, 0xa4, 0x4e, 0x21, 0xf7, 0x8d, 0x3d, 0x9c, 0x32, 0xac, 0x92, 0x3e, 0xad, 0xa5, 0x99, 0x87,
0x82, 0x96, 0x80, 0xd3, 0x02, 0x7d, 0x58, 0x55, 0x6f, 0x4f, 0xd4, 0x4c, 0xfc, 0x28, 0x78, 0x39, 0x06, 0x32, 0x5f, 0x9c, 0xe1, 0x8b, 0x50, 0xb7, 0x01, 0x3b, 0x44, 0xec, 0x12, 0xc1, 0x6c, 0x33,
0x2f, 0xbb, 0x2d, 0xe8, 0xd7, 0x75, 0x28, 0x5d, 0x77, 0x89, 0x08, 0xbd, 0x69, 0x53, 0xd2, 0x35, 0xed, 0xa8, 0x9e, 0x01, 0x52, 0x82, 0x96, 0x80, 0xd3, 0x02, 0x3d, 0x58, 0x56, 0x2f, 0x6e, 0xd4,
0x0a, 0x5a, 0x9e, 0xae, 0x71, 0xac, 0x16, 0x73, 0xa1, 0xfa, 0xad, 0xcd, 0xfd, 0xc5, 0x37, 0x98, 0x48, 0xfc, 0x28, 0xf8, 0xbf, 0x60, 0x51, 0x8f, 0xa4, 0xff, 0x53, 0x08, 0x9d, 0x11, 0x3b, 0x44,
0x1f, 0xa6, 0xf5, 0x80, 0x18, 0x6a, 0x79, 0x0f, 0x58, 0x00, 0x87, 0x3c, 0x56, 0x36, 0x88, 0x5c, 0x84, 0x5e, 0xf2, 0x29, 0xe5, 0x1a, 0x05, 0x2d, 0x2e, 0xd7, 0x38, 0x56, 0x8b, 0xb9, 0x50, 0xf9,
0xf0, 0xfd, 0x96, 0x7a, 0x2d, 0x0f, 0xff, 0xe9, 0x70, 0xd6, 0x21, 0x7b, 0xa7, 0xef, 0x57, 0xfa, 0xc6, 0xe6, 0xfe, 0xe2, 0x4b, 0xcc, 0x0f, 0xd2, 0x2e, 0x9e, 0x18, 0x6a, 0xf1, 0xc5, 0x33, 0x07,
0x1a, 0x1d, 0xef, 0xbb, 0xf3, 0xb4, 0xd1, 0x10, 0x79, 0xe3, 0xcf, 0xc0, 0xec, 0x67, 0xe5, 0xe7, 0x0e, 0x79, 0xac, 0x64, 0x10, 0xb9, 0xe0, 0xfb, 0x2d, 0xf5, 0x31, 0x12, 0xfe, 0xab, 0xe5, 0xb4,
0x66, 0x1e, 0xc0, 0x66, 0x97, 0x38, 0x24, 0xc2, 0xfc, 0x30, 0xe5, 0x0a, 0x13, 0x85, 0x65, 0xcc, 0x24, 0x7b, 0xad, 0xbb, 0x4a, 0xfd, 0x78, 0x88, 0x5f, 0xf6, 0xb3, 0xb2, 0xd1, 0x10, 0xf9, 0xce,
0xbc, 0x31, 0x6c, 0xc8, 0x30, 0xc8, 0xef, 0xde, 0x72, 0xc2, 0x78, 0x4a, 0xbf, 0x8a, 0x60, 0x02, 0xc9, 0xc0, 0xec, 0x57, 0xe5, 0x87, 0x66, 0xee, 0xc3, 0x46, 0x87, 0x38, 0x24, 0xc2, 0x7c, 0x2f,
0xea, 0xfb, 0x59, 0xa0, 0xa1, 0x33, 0xb4, 0x11, 0x79, 0xc2, 0xc4, 0xf7, 0x31, 0x0f, 0x6a, 0xd2, 0xa5, 0x6f, 0x8a, 0xc2, 0x32, 0x56, 0xde, 0x08, 0xd6, 0x65, 0x18, 0xe4, 0x77, 0xaf, 0x38, 0x61,
0x83, 0xaa, 0xfe, 0x28, 0x23, 0x3a, 0x74, 0x86, 0x40, 0x85, 0xdb, 0xa0, 0x0e, 0x49, 0x49, 0xeb, 0x3c, 0xe5, 0x92, 0x8c, 0x60, 0x02, 0xea, 0x3b, 0x59, 0xa0, 0xa1, 0x1c, 0x5a, 0x8f, 0x3c, 0xdc,
0x39, 0x20, 0xa3, 0xbb, 0x5e, 0xc3, 0xba, 0x6c, 0xdd, 0x1e, 0xe5, 0x9d, 0xd4, 0xce, 0x7e, 0x0e, 0xe2, 0xfb, 0x98, 0x05, 0x35, 0xe9, 0x19, 0x59, 0xbb, 0x9f, 0x11, 0x1d, 0xca, 0x21, 0x50, 0xe1,
0xc2, 0x03, 0xa8, 0xbe, 0x9e, 0x12, 0x86, 0x05, 0x91, 0xfe, 0xf2, 0x78, 0x93, 0x33, 0x2b, 0x86, 0x36, 0xa8, 0x43, 0x52, 0xca, 0x7a, 0x06, 0xc8, 0xe8, 0xae, 0x17, 0xb0, 0x2a, 0xfb, 0x05, 0x8f,
0xca, 0x7c, 0x2b, 0x87, 0x3e, 0x91, 0x15, 0x7c, 0x89, 0x13, 0xe6, 0x80, 0xe5, 0xb5, 0x2d, 0x8c, 0xf2, 0x66, 0x6a, 0x3b, 0x71, 0x06, 0xc2, 0x7d, 0xa8, 0xbc, 0x98, 0x10, 0x86, 0x05, 0x91, 0xfe,
0x0b, 0x17, 0x4f, 0x35, 0x2f, 0x0d, 0x5b, 0x2a, 0xe0, 0x59, 0x9e, 0x41, 0x40, 0xe1, 0xc2, 0xaf, 0xf2, 0x78, 0x93, 0x2b, 0x2b, 0x86, 0xca, 0xfc, 0x16, 0x81, 0x1e, 0x91, 0x27, 0xf8, 0x02, 0x27,
0x22, 0x7f, 0xeb, 0xfb, 0xcc, 0x3e, 0xb2, 0x1d, 0x32, 0x22, 0x29, 0x19, 0x10, 0x87, 0x65, 0x74, 0xcc, 0x00, 0x8b, 0xcf, 0xb6, 0x30, 0x2e, 0x7c, 0x78, 0xaa, 0x79, 0x69, 0xd8, 0x42, 0x01, 0xcf,
0xd1, 0x10, 0x4a, 0x4a, 0x78, 0x97, 0x61, 0x57, 0xa0, 0x65, 0xa6, 0x79, 0x88, 0x80, 0xb6, 0x75, 0xf2, 0x0c, 0x02, 0x0a, 0x17, 0x7e, 0x0b, 0xfa, 0x5b, 0xdf, 0x63, 0xf6, 0xa1, 0xed, 0x90, 0x21,
0x36, 0x50, 0x6f, 0xc2, 0x04, 0x90, 0x69, 0xb1, 0x4f, 0x1d, 0xdb, 0x3c, 0x8d, 0x5f, 0x76, 0x74, 0x49, 0xa9, 0x80, 0x38, 0x2c, 0xa3, 0x8b, 0x06, 0x50, 0x54, 0xc2, 0x3b, 0x0c, 0xbb, 0x02, 0x2d,
0x69, 0x98, 0x43, 0x52, 0x2e, 0x3b, 0x89, 0x48, 0x2d, 0x32, 0x84, 0x52, 0x67, 0x4c, 0xcc, 0xc3, 0x32, 0xcd, 0x43, 0x04, 0xb4, 0xcd, 0xd3, 0x81, 0x7a, 0x13, 0x26, 0x80, 0x2c, 0x8b, 0x3d, 0xea,
0x57, 0x04, 0x3b, 0x62, 0x9c, 0xf6, 0x4e, 0x99, 0x23, 0x96, 0x6f, 0x24, 0x02, 0x0c, 0x34, 0x76, 0xd8, 0xe6, 0x49, 0xbc, 0xd9, 0xd1, 0x47, 0xc3, 0x0c, 0x92, 0xd2, 0xec, 0x24, 0x22, 0xb5, 0xc8,
0x9e, 0xfd, 0xf8, 0x74, 0x64, 0x8b, 0xf1, 0x6c, 0x28, 0xdd, 0xb8, 0xa5, 0xa0, 0x8f, 0x6c, 0xea, 0x00, 0x8a, 0xed, 0x11, 0x31, 0x0f, 0x9e, 0x13, 0xec, 0x88, 0x51, 0xda, 0xe3, 0x68, 0x86, 0x58,
0xff, 0xda, 0x0a, 0x0c, 0xdc, 0xf2, 0xa8, 0xb6, 0x74, 0x92, 0x4e, 0x87, 0xc3, 0x55, 0x6f, 0xea, 0xbc, 0x91, 0x08, 0x30, 0xd0, 0xd8, 0x7e, 0xfc, 0xc3, 0xa3, 0xa1, 0x2d, 0x46, 0xd3, 0x81, 0x74,
0xc9, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x94, 0x82, 0xd4, 0x6e, 0x4c, 0x18, 0x00, 0x00, 0xe3, 0xa6, 0x82, 0xde, 0xb7, 0xa9, 0xff, 0x6b, 0x33, 0x30, 0x70, 0xd3, 0xa3, 0xda, 0xd4, 0x45,
0x3a, 0x19, 0x0c, 0x96, 0xbd, 0xa9, 0x87, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x68, 0x68, 0x82,
0xf8, 0x42, 0x19, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -816,6 +818,7 @@ type RootCoordClient interface {
// //
// @return CollectionSchema // @return CollectionSchema
DescribeCollection(ctx context.Context, in *milvuspb.DescribeCollectionRequest, opts ...grpc.CallOption) (*milvuspb.DescribeCollectionResponse, error) DescribeCollection(ctx context.Context, in *milvuspb.DescribeCollectionRequest, opts ...grpc.CallOption) (*milvuspb.DescribeCollectionResponse, error)
DescribeCollectionInternal(ctx context.Context, in *milvuspb.DescribeCollectionRequest, opts ...grpc.CallOption) (*milvuspb.DescribeCollectionResponse, error)
CreateAlias(ctx context.Context, in *milvuspb.CreateAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) CreateAlias(ctx context.Context, in *milvuspb.CreateAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
DropAlias(ctx context.Context, in *milvuspb.DropAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) DropAlias(ctx context.Context, in *milvuspb.DropAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
AlterAlias(ctx context.Context, in *milvuspb.AlterAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) AlterAlias(ctx context.Context, in *milvuspb.AlterAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
@ -847,6 +850,7 @@ type RootCoordClient interface {
// //
// @return StringListResponse // @return StringListResponse
ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowPartitionsResponse, error) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowPartitionsResponse, error)
ShowPartitionsInternal(ctx context.Context, in *milvuspb.ShowPartitionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowPartitionsResponse, error)
// rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {} // rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {}
ShowSegments(ctx context.Context, in *milvuspb.ShowSegmentsRequest, opts ...grpc.CallOption) (*milvuspb.ShowSegmentsResponse, error) ShowSegments(ctx context.Context, in *milvuspb.ShowSegmentsRequest, opts ...grpc.CallOption) (*milvuspb.ShowSegmentsResponse, error)
AllocTimestamp(ctx context.Context, in *AllocTimestampRequest, opts ...grpc.CallOption) (*AllocTimestampResponse, error) AllocTimestamp(ctx context.Context, in *AllocTimestampRequest, opts ...grpc.CallOption) (*AllocTimestampResponse, error)
@ -951,6 +955,15 @@ func (c *rootCoordClient) DescribeCollection(ctx context.Context, in *milvuspb.D
return out, nil return out, nil
} }
func (c *rootCoordClient) DescribeCollectionInternal(ctx context.Context, in *milvuspb.DescribeCollectionRequest, opts ...grpc.CallOption) (*milvuspb.DescribeCollectionResponse, error) {
out := new(milvuspb.DescribeCollectionResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/DescribeCollectionInternal", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *rootCoordClient) CreateAlias(ctx context.Context, in *milvuspb.CreateAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { func (c *rootCoordClient) CreateAlias(ctx context.Context, in *milvuspb.CreateAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) {
out := new(commonpb.Status) out := new(commonpb.Status)
err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/CreateAlias", in, out, opts...) err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/CreateAlias", in, out, opts...)
@ -1032,6 +1045,15 @@ func (c *rootCoordClient) ShowPartitions(ctx context.Context, in *milvuspb.ShowP
return out, nil return out, nil
} }
func (c *rootCoordClient) ShowPartitionsInternal(ctx context.Context, in *milvuspb.ShowPartitionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowPartitionsResponse, error) {
out := new(milvuspb.ShowPartitionsResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/ShowPartitionsInternal", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *rootCoordClient) ShowSegments(ctx context.Context, in *milvuspb.ShowSegmentsRequest, opts ...grpc.CallOption) (*milvuspb.ShowSegmentsResponse, error) { func (c *rootCoordClient) ShowSegments(ctx context.Context, in *milvuspb.ShowSegmentsRequest, opts ...grpc.CallOption) (*milvuspb.ShowSegmentsResponse, error) {
out := new(milvuspb.ShowSegmentsResponse) out := new(milvuspb.ShowSegmentsResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/ShowSegments", in, out, opts...) err := c.cc.Invoke(ctx, "/milvus.proto.rootcoord.RootCoord/ShowSegments", in, out, opts...)
@ -1290,6 +1312,7 @@ type RootCoordServer interface {
// //
// @return CollectionSchema // @return CollectionSchema
DescribeCollection(context.Context, *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) DescribeCollection(context.Context, *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error)
DescribeCollectionInternal(context.Context, *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error)
CreateAlias(context.Context, *milvuspb.CreateAliasRequest) (*commonpb.Status, error) CreateAlias(context.Context, *milvuspb.CreateAliasRequest) (*commonpb.Status, error)
DropAlias(context.Context, *milvuspb.DropAliasRequest) (*commonpb.Status, error) DropAlias(context.Context, *milvuspb.DropAliasRequest) (*commonpb.Status, error)
AlterAlias(context.Context, *milvuspb.AlterAliasRequest) (*commonpb.Status, error) AlterAlias(context.Context, *milvuspb.AlterAliasRequest) (*commonpb.Status, error)
@ -1321,6 +1344,7 @@ type RootCoordServer interface {
// //
// @return StringListResponse // @return StringListResponse
ShowPartitions(context.Context, *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) ShowPartitions(context.Context, *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error)
ShowPartitionsInternal(context.Context, *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error)
// rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {} // rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {}
ShowSegments(context.Context, *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) ShowSegments(context.Context, *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error)
AllocTimestamp(context.Context, *AllocTimestampRequest) (*AllocTimestampResponse, error) AllocTimestamp(context.Context, *AllocTimestampRequest) (*AllocTimestampResponse, error)
@ -1379,6 +1403,9 @@ func (*UnimplementedRootCoordServer) HasCollection(ctx context.Context, req *mil
func (*UnimplementedRootCoordServer) DescribeCollection(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) { func (*UnimplementedRootCoordServer) DescribeCollection(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DescribeCollection not implemented") return nil, status.Errorf(codes.Unimplemented, "method DescribeCollection not implemented")
} }
func (*UnimplementedRootCoordServer) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DescribeCollectionInternal not implemented")
}
func (*UnimplementedRootCoordServer) CreateAlias(ctx context.Context, req *milvuspb.CreateAliasRequest) (*commonpb.Status, error) { func (*UnimplementedRootCoordServer) CreateAlias(ctx context.Context, req *milvuspb.CreateAliasRequest) (*commonpb.Status, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateAlias not implemented") return nil, status.Errorf(codes.Unimplemented, "method CreateAlias not implemented")
} }
@ -1406,6 +1433,9 @@ func (*UnimplementedRootCoordServer) HasPartition(ctx context.Context, req *milv
func (*UnimplementedRootCoordServer) ShowPartitions(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) { func (*UnimplementedRootCoordServer) ShowPartitions(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ShowPartitions not implemented") return nil, status.Errorf(codes.Unimplemented, "method ShowPartitions not implemented")
} }
func (*UnimplementedRootCoordServer) ShowPartitionsInternal(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ShowPartitionsInternal not implemented")
}
func (*UnimplementedRootCoordServer) ShowSegments(ctx context.Context, req *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) { func (*UnimplementedRootCoordServer) ShowSegments(ctx context.Context, req *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ShowSegments not implemented") return nil, status.Errorf(codes.Unimplemented, "method ShowSegments not implemented")
} }
@ -1612,6 +1642,24 @@ func _RootCoord_DescribeCollection_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _RootCoord_DescribeCollectionInternal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(milvuspb.DescribeCollectionRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RootCoordServer).DescribeCollectionInternal(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.rootcoord.RootCoord/DescribeCollectionInternal",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RootCoordServer).DescribeCollectionInternal(ctx, req.(*milvuspb.DescribeCollectionRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RootCoord_CreateAlias_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _RootCoord_CreateAlias_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(milvuspb.CreateAliasRequest) in := new(milvuspb.CreateAliasRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -1774,6 +1822,24 @@ func _RootCoord_ShowPartitions_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _RootCoord_ShowPartitionsInternal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(milvuspb.ShowPartitionsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RootCoordServer).ShowPartitionsInternal(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.rootcoord.RootCoord/ShowPartitionsInternal",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RootCoordServer).ShowPartitionsInternal(ctx, req.(*milvuspb.ShowPartitionsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RootCoord_ShowSegments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _RootCoord_ShowSegments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(milvuspb.ShowSegmentsRequest) in := new(milvuspb.ShowSegmentsRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -2256,6 +2322,10 @@ var _RootCoord_serviceDesc = grpc.ServiceDesc{
MethodName: "DescribeCollection", MethodName: "DescribeCollection",
Handler: _RootCoord_DescribeCollection_Handler, Handler: _RootCoord_DescribeCollection_Handler,
}, },
{
MethodName: "DescribeCollectionInternal",
Handler: _RootCoord_DescribeCollectionInternal_Handler,
},
{ {
MethodName: "CreateAlias", MethodName: "CreateAlias",
Handler: _RootCoord_CreateAlias_Handler, Handler: _RootCoord_CreateAlias_Handler,
@ -2292,6 +2362,10 @@ var _RootCoord_serviceDesc = grpc.ServiceDesc{
MethodName: "ShowPartitions", MethodName: "ShowPartitions",
Handler: _RootCoord_ShowPartitions_Handler, Handler: _RootCoord_ShowPartitions_Handler,
}, },
{
MethodName: "ShowPartitionsInternal",
Handler: _RootCoord_ShowPartitionsInternal_Handler,
},
{ {
MethodName: "ShowSegments", MethodName: "ShowSegments",
Handler: _RootCoord_ShowSegments_Handler, Handler: _RootCoord_ShowSegments_Handler,

View File

@ -495,6 +495,10 @@ func (coord *RootCoordMock) DescribeCollection(ctx context.Context, req *milvusp
}, nil }, nil
} }
func (coord *RootCoordMock) DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return coord.DescribeCollection(ctx, req)
}
func (coord *RootCoordMock) ShowCollections(ctx context.Context, req *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) { func (coord *RootCoordMock) ShowCollections(ctx context.Context, req *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) {
code := coord.state.Load().(commonpb.StateCode) code := coord.state.Load().(commonpb.StateCode)
if code != commonpb.StateCode_Healthy { if code != commonpb.StateCode_Healthy {
@ -720,6 +724,10 @@ func (coord *RootCoordMock) ShowPartitions(ctx context.Context, req *milvuspb.Sh
}, nil }, nil
} }
func (coord *RootCoordMock) ShowPartitionsInternal(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return coord.ShowPartitions(ctx, req)
}
//func (coord *RootCoordMock) CreateIndex(ctx context.Context, req *milvuspb.CreateIndexRequest) (*commonpb.Status, error) { //func (coord *RootCoordMock) CreateIndex(ctx context.Context, req *milvuspb.CreateIndexRequest) (*commonpb.Status, error) {
// code := coord.state.Load().(commonpb.StateCode) // code := coord.state.Load().(commonpb.StateCode)
// if code != commonpb.StateCode_Healthy { // if code != commonpb.StateCode_Healthy {
@ -1167,6 +1175,10 @@ func (m *mockRootCoord) DescribeCollection(ctx context.Context, request *milvusp
return nil, errors.New("mock") return nil, errors.New("mock")
} }
func (m *mockRootCoord) DescribeCollectionInternal(ctx context.Context, request *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return m.DescribeCollection(ctx, request)
}
func (m *mockRootCoord) ShowPartitions(ctx context.Context, request *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) { func (m *mockRootCoord) ShowPartitions(ctx context.Context, request *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
if m.ShowPartitionsFunc != nil { if m.ShowPartitionsFunc != nil {
return m.ShowPartitionsFunc(ctx, request) return m.ShowPartitionsFunc(ctx, request)
@ -1174,6 +1186,10 @@ func (m *mockRootCoord) ShowPartitions(ctx context.Context, request *milvuspb.Sh
return nil, errors.New("mock") return nil, errors.New("mock")
} }
func (m *mockRootCoord) ShowPartitionsInternal(ctx context.Context, request *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return m.ShowPartitions(ctx, request)
}
func (m *mockRootCoord) ShowSegments(ctx context.Context, request *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) { func (m *mockRootCoord) ShowSegments(ctx context.Context, request *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) {
if m.ShowSegmentsFunc != nil { if m.ShowSegmentsFunc != nil {
return m.ShowSegmentsFunc(ctx, request) return m.ShowSegmentsFunc(ctx, request)

View File

@ -76,7 +76,7 @@ func (broker *CoordinatorBroker) GetCollectionSchema(ctx context.Context, collec
), ),
CollectionID: collectionID, CollectionID: collectionID,
} }
resp, err := broker.rootCoord.DescribeCollection(ctx, req) resp, err := broker.rootCoord.DescribeCollectionInternal(ctx, req)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -97,7 +97,7 @@ func (broker *CoordinatorBroker) GetPartitions(ctx context.Context, collectionID
), ),
CollectionID: collectionID, CollectionID: collectionID,
} }
resp, err := broker.rootCoord.ShowPartitions(ctx, req) resp, err := broker.rootCoord.ShowPartitionsInternal(ctx, req)
if err != nil { if err != nil {
log.Warn("showPartition failed", zap.Int64("collectionID", collectionID), zap.Error(err)) log.Warn("showPartition failed", zap.Int64("collectionID", collectionID), zap.Error(err))
return nil, err return nil, err

View File

@ -34,12 +34,12 @@ import (
) )
func TestCoordinatorBroker_GetCollectionSchema(t *testing.T) { func TestCoordinatorBroker_GetCollectionSchema(t *testing.T) {
t.Run("got error on DescribeCollection", func(t *testing.T) { t.Run("got error on DescribeCollectionInternal", func(t *testing.T) {
rootCoord := mocks.NewRootCoord(t) rootCoord := mocks.NewRootCoord(t)
rootCoord.On("DescribeCollection", rootCoord.On("DescribeCollectionInternal",
mock.Anything, mock.Anything,
mock.Anything, mock.Anything,
).Return(nil, errors.New("error mock DescribeCollection")) ).Return(nil, errors.New("error mock DescribeCollectionInternal"))
ctx := context.Background() ctx := context.Background()
broker := &CoordinatorBroker{rootCoord: rootCoord} broker := &CoordinatorBroker{rootCoord: rootCoord}
_, err := broker.GetCollectionSchema(ctx, 100) _, err := broker.GetCollectionSchema(ctx, 100)
@ -48,7 +48,7 @@ func TestCoordinatorBroker_GetCollectionSchema(t *testing.T) {
t.Run("non-success code", func(t *testing.T) { t.Run("non-success code", func(t *testing.T) {
rootCoord := mocks.NewRootCoord(t) rootCoord := mocks.NewRootCoord(t)
rootCoord.On("DescribeCollection", rootCoord.On("DescribeCollectionInternal",
mock.Anything, mock.Anything,
mock.Anything, mock.Anything,
).Return(&milvuspb.DescribeCollectionResponse{ ).Return(&milvuspb.DescribeCollectionResponse{
@ -62,7 +62,7 @@ func TestCoordinatorBroker_GetCollectionSchema(t *testing.T) {
t.Run("normal case", func(t *testing.T) { t.Run("normal case", func(t *testing.T) {
rootCoord := mocks.NewRootCoord(t) rootCoord := mocks.NewRootCoord(t)
rootCoord.On("DescribeCollection", rootCoord.On("DescribeCollectionInternal",
mock.Anything, mock.Anything,
mock.Anything, mock.Anything,
).Return(&milvuspb.DescribeCollectionResponse{ ).Return(&milvuspb.DescribeCollectionResponse{

View File

@ -243,7 +243,7 @@ func (b *ServerBroker) GetSegmentIndexState(ctx context.Context, collID UniqueID
func (b *ServerBroker) BroadcastAlteredCollection(ctx context.Context, req *milvuspb.AlterCollectionRequest) error { func (b *ServerBroker) BroadcastAlteredCollection(ctx context.Context, req *milvuspb.AlterCollectionRequest) error {
log.Info("broadcasting request to alter collection", zap.String("collection name", req.GetCollectionName()), zap.Int64("collection id", req.GetCollectionID())) log.Info("broadcasting request to alter collection", zap.String("collection name", req.GetCollectionName()), zap.Int64("collection id", req.GetCollectionID()))
colMeta, err := b.s.meta.GetCollectionByID(ctx, req.GetCollectionID(), typeutil.MaxTimestamp) colMeta, err := b.s.meta.GetCollectionByID(ctx, req.GetCollectionID(), typeutil.MaxTimestamp, false)
if err != nil { if err != nil {
return err return err
} }

View File

@ -303,7 +303,7 @@ func TestServerBroker_BroadcastAlteredCollection(t *testing.T) {
t.Run("get meta fail", func(t *testing.T) { t.Run("get meta fail", func(t *testing.T) {
c := newTestCore(withInvalidDataCoord()) c := newTestCore(withInvalidDataCoord())
c.meta = &mockMetaTable{ c.meta = &mockMetaTable{
GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return nil, errors.New("err") return nil, errors.New("err")
}, },
} }
@ -316,7 +316,7 @@ func TestServerBroker_BroadcastAlteredCollection(t *testing.T) {
t.Run("failed to execute", func(t *testing.T) { t.Run("failed to execute", func(t *testing.T) {
c := newTestCore(withInvalidDataCoord()) c := newTestCore(withInvalidDataCoord())
c.meta = &mockMetaTable{ c.meta = &mockMetaTable{
GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return collMeta, nil return collMeta, nil
}, },
} }
@ -329,7 +329,7 @@ func TestServerBroker_BroadcastAlteredCollection(t *testing.T) {
t.Run("non success error code on execute", func(t *testing.T) { t.Run("non success error code on execute", func(t *testing.T) {
c := newTestCore(withFailedDataCoord()) c := newTestCore(withFailedDataCoord())
c.meta = &mockMetaTable{ c.meta = &mockMetaTable{
GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return collMeta, nil return collMeta, nil
}, },
} }
@ -342,7 +342,7 @@ func TestServerBroker_BroadcastAlteredCollection(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
c := newTestCore(withValidDataCoord()) c := newTestCore(withValidDataCoord())
c.meta = &mockMetaTable{ c.meta = &mockMetaTable{
GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { GetCollectionByIDFunc: func(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return collMeta, nil return collMeta, nil
}, },
} }

View File

@ -10,8 +10,9 @@ import (
// describeCollectionTask describe collection request task // describeCollectionTask describe collection request task
type describeCollectionTask struct { type describeCollectionTask struct {
baseTask baseTask
Req *milvuspb.DescribeCollectionRequest Req *milvuspb.DescribeCollectionRequest
Rsp *milvuspb.DescribeCollectionResponse Rsp *milvuspb.DescribeCollectionResponse
allowUnavailable bool
} }
func (t *describeCollectionTask) Prepare(ctx context.Context) error { func (t *describeCollectionTask) Prepare(ctx context.Context) error {
@ -23,7 +24,7 @@ func (t *describeCollectionTask) Prepare(ctx context.Context) error {
// Execute task execution // Execute task execution
func (t *describeCollectionTask) Execute(ctx context.Context) (err error) { func (t *describeCollectionTask) Execute(ctx context.Context) (err error) {
coll, err := t.core.describeCollection(ctx, t.Req) coll, err := t.core.describeCollection(ctx, t.Req, t.allowUnavailable)
if err != nil { if err != nil {
return err return err
} }

View File

@ -78,7 +78,7 @@ func Test_describeCollectionTask_Execute(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
meta := newMockMetaTable() meta := newMockMetaTable()
meta.GetCollectionByIDFunc = func(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { meta.GetCollectionByIDFunc = func(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return &model.Collection{ return &model.Collection{
CollectionID: 1, CollectionID: 1,
Name: "test coll", Name: "test coll",

View File

@ -73,7 +73,7 @@ func NewImportFactory(c *Core) ImportFactory {
func GetCollectionNameWithCore(c *Core) GetCollectionNameFunc { func GetCollectionNameWithCore(c *Core) GetCollectionNameFunc {
return func(collID, partitionID UniqueID) (string, string, error) { return func(collID, partitionID UniqueID) (string, string, error) {
colInfo, err := c.meta.GetCollectionByID(c.ctx, collID, typeutil.MaxTimestamp) colInfo, err := c.meta.GetCollectionByID(c.ctx, collID, typeutil.MaxTimestamp, false)
if err != nil { if err != nil {
log.Error("Core failed to get collection name by id", zap.Int64("ID", collID), zap.Error(err)) log.Error("Core failed to get collection name by id", zap.Int64("ID", collID), zap.Error(err))
return "", "", err return "", "", err

View File

@ -72,7 +72,7 @@ type IMetaTable interface {
ChangeCollectionState(ctx context.Context, collectionID UniqueID, state pb.CollectionState, ts Timestamp) error ChangeCollectionState(ctx context.Context, collectionID UniqueID, state pb.CollectionState, ts Timestamp) error
RemoveCollection(ctx context.Context, collectionID UniqueID, ts Timestamp) error RemoveCollection(ctx context.Context, collectionID UniqueID, ts Timestamp) error
GetCollectionByName(ctx context.Context, collectionName string, ts Timestamp) (*model.Collection, error) GetCollectionByName(ctx context.Context, collectionName string, ts Timestamp) (*model.Collection, error)
GetCollectionByID(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) GetCollectionByID(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error)
ListCollections(ctx context.Context, ts Timestamp) ([]*model.Collection, error) ListCollections(ctx context.Context, ts Timestamp) ([]*model.Collection, error)
ListAbnormalCollections(ctx context.Context, ts Timestamp) ([]*model.Collection, error) ListAbnormalCollections(ctx context.Context, ts Timestamp) ([]*model.Collection, error)
ListCollectionPhysicalChannels() map[typeutil.UniqueID][]string ListCollectionPhysicalChannels() map[typeutil.UniqueID][]string
@ -304,18 +304,24 @@ func filterUnavailable(coll *model.Collection) *model.Collection {
} }
// getLatestCollectionByIDInternal should be called with ts = typeutil.MaxTimestamp // getLatestCollectionByIDInternal should be called with ts = typeutil.MaxTimestamp
func (mt *MetaTable) getLatestCollectionByIDInternal(ctx context.Context, collectionID UniqueID) (*model.Collection, error) { func (mt *MetaTable) getLatestCollectionByIDInternal(ctx context.Context, collectionID UniqueID, allowAvailable bool) (*model.Collection, error) {
coll, ok := mt.collID2Meta[collectionID] coll, ok := mt.collID2Meta[collectionID]
if !ok || coll == nil || !coll.Available() { if !ok || coll == nil {
return nil, common.NewCollectionNotExistError(fmt.Sprintf("can't find collection: %d", collectionID))
}
if allowAvailable {
return coll.Clone(), nil
}
if !coll.Available() {
return nil, common.NewCollectionNotExistError(fmt.Sprintf("can't find collection: %d", collectionID)) return nil, common.NewCollectionNotExistError(fmt.Sprintf("can't find collection: %d", collectionID))
} }
return filterUnavailable(coll), nil return filterUnavailable(coll), nil
} }
// getCollectionByIDInternal get collection by collection id without lock. // getCollectionByIDInternal get collection by collection id without lock.
func (mt *MetaTable) getCollectionByIDInternal(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { func (mt *MetaTable) getCollectionByIDInternal(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
if isMaxTs(ts) { if isMaxTs(ts) {
return mt.getLatestCollectionByIDInternal(ctx, collectionID) return mt.getLatestCollectionByIDInternal(ctx, collectionID, allowUnavailable)
} }
var coll *model.Collection var coll *model.Collection
@ -331,7 +337,16 @@ func (mt *MetaTable) getCollectionByIDInternal(ctx context.Context, collectionID
} }
} }
if coll == nil || !coll.Available() { if coll == nil {
// use coll.Name to match error message of regression. TODO: remove this after error code is ready.
return nil, common.NewCollectionNotExistError(fmt.Sprintf("can't find collection: %s", coll.Name))
}
if allowUnavailable {
return coll.Clone(), nil
}
if !coll.Available() {
// use coll.Name to match error message of regression. TODO: remove this after error code is ready. // use coll.Name to match error message of regression. TODO: remove this after error code is ready.
return nil, common.NewCollectionNotExistError(fmt.Sprintf("can't find collection: %s", coll.Name)) return nil, common.NewCollectionNotExistError(fmt.Sprintf("can't find collection: %s", coll.Name))
} }
@ -347,12 +362,12 @@ func (mt *MetaTable) GetCollectionByName(ctx context.Context, collectionName str
collectionID, ok := mt.collAlias2ID[collectionName] collectionID, ok := mt.collAlias2ID[collectionName]
if ok { if ok {
return mt.getCollectionByIDInternal(ctx, collectionID, ts) return mt.getCollectionByIDInternal(ctx, collectionID, ts, false)
} }
collectionID, ok = mt.collName2ID[collectionName] collectionID, ok = mt.collName2ID[collectionName]
if ok { if ok {
return mt.getCollectionByIDInternal(ctx, collectionID, ts) return mt.getCollectionByIDInternal(ctx, collectionID, ts, false)
} }
if isMaxTs(ts) { if isMaxTs(ts) {
@ -371,11 +386,11 @@ func (mt *MetaTable) GetCollectionByName(ctx context.Context, collectionName str
return filterUnavailable(coll), nil return filterUnavailable(coll), nil
} }
func (mt *MetaTable) GetCollectionByID(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { func (mt *MetaTable) GetCollectionByID(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
mt.ddLock.RLock() mt.ddLock.RLock()
defer mt.ddLock.RUnlock() defer mt.ddLock.RUnlock()
return mt.getCollectionByIDInternal(ctx, collectionID, ts) return mt.getCollectionByIDInternal(ctx, collectionID, ts, allowUnavailable)
} }
func (mt *MetaTable) ListCollections(ctx context.Context, ts Timestamp) ([]*model.Collection, error) { func (mt *MetaTable) ListCollections(ctx context.Context, ts Timestamp) ([]*model.Collection, error) {

View File

@ -423,7 +423,7 @@ func TestMetaTable_getCollectionByIDInternal(t *testing.T) {
collID2Meta: map[typeutil.UniqueID]*model.Collection{}, collID2Meta: map[typeutil.UniqueID]*model.Collection{},
} }
ctx := context.Background() ctx := context.Background()
_, err := meta.getCollectionByIDInternal(ctx, 100, 101) _, err := meta.getCollectionByIDInternal(ctx, 100, 101, false)
assert.Error(t, err) assert.Error(t, err)
}) })
@ -439,9 +439,12 @@ func TestMetaTable_getCollectionByIDInternal(t *testing.T) {
collID2Meta: map[typeutil.UniqueID]*model.Collection{}, collID2Meta: map[typeutil.UniqueID]*model.Collection{},
} }
ctx := context.Background() ctx := context.Background()
_, err := meta.getCollectionByIDInternal(ctx, 100, 101) _, err := meta.getCollectionByIDInternal(ctx, 100, 101, false)
assert.Error(t, err) assert.Error(t, err)
assert.True(t, common.IsCollectionNotExistError(err)) assert.True(t, common.IsCollectionNotExistError(err))
coll, err := meta.getCollectionByIDInternal(ctx, 100, 101, true)
assert.NoError(t, err)
assert.False(t, coll.Available())
}) })
t.Run("normal case, filter unavailable partitions", func(t *testing.T) { t.Run("normal case, filter unavailable partitions", func(t *testing.T) {
@ -459,7 +462,7 @@ func TestMetaTable_getCollectionByIDInternal(t *testing.T) {
}, },
} }
ctx := context.Background() ctx := context.Background()
coll, err := meta.getCollectionByIDInternal(ctx, 100, 101) coll, err := meta.getCollectionByIDInternal(ctx, 100, 101, false)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, 1, len(coll.Partitions)) assert.Equal(t, 1, len(coll.Partitions))
assert.Equal(t, UniqueID(11), coll.Partitions[0].PartitionID) assert.Equal(t, UniqueID(11), coll.Partitions[0].PartitionID)
@ -481,7 +484,7 @@ func TestMetaTable_getCollectionByIDInternal(t *testing.T) {
}, },
} }
ctx := context.Background() ctx := context.Background()
coll, err := meta.getCollectionByIDInternal(ctx, 100, typeutil.MaxTimestamp) coll, err := meta.getCollectionByIDInternal(ctx, 100, typeutil.MaxTimestamp, false)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, 1, len(coll.Partitions)) assert.Equal(t, 1, len(coll.Partitions))
assert.Equal(t, UniqueID(11), coll.Partitions[0].PartitionID) assert.Equal(t, UniqueID(11), coll.Partitions[0].PartitionID)
@ -664,7 +667,7 @@ func TestMetaTable_getLatestCollectionByIDInternal(t *testing.T) {
t.Run("not exist", func(t *testing.T) { t.Run("not exist", func(t *testing.T) {
ctx := context.Background() ctx := context.Background()
mt := &MetaTable{collID2Meta: nil} mt := &MetaTable{collID2Meta: nil}
_, err := mt.getLatestCollectionByIDInternal(ctx, 100) _, err := mt.getLatestCollectionByIDInternal(ctx, 100, false)
assert.Error(t, err) assert.Error(t, err)
assert.True(t, common.IsCollectionNotExistError(err)) assert.True(t, common.IsCollectionNotExistError(err))
}) })
@ -674,7 +677,7 @@ func TestMetaTable_getLatestCollectionByIDInternal(t *testing.T) {
mt := &MetaTable{collID2Meta: map[typeutil.UniqueID]*model.Collection{ mt := &MetaTable{collID2Meta: map[typeutil.UniqueID]*model.Collection{
100: nil, 100: nil,
}} }}
_, err := mt.getLatestCollectionByIDInternal(ctx, 100) _, err := mt.getLatestCollectionByIDInternal(ctx, 100, false)
assert.Error(t, err) assert.Error(t, err)
assert.True(t, common.IsCollectionNotExistError(err)) assert.True(t, common.IsCollectionNotExistError(err))
}) })
@ -684,9 +687,12 @@ func TestMetaTable_getLatestCollectionByIDInternal(t *testing.T) {
mt := &MetaTable{collID2Meta: map[typeutil.UniqueID]*model.Collection{ mt := &MetaTable{collID2Meta: map[typeutil.UniqueID]*model.Collection{
100: {State: pb.CollectionState_CollectionDropping}, 100: {State: pb.CollectionState_CollectionDropping},
}} }}
_, err := mt.getLatestCollectionByIDInternal(ctx, 100) _, err := mt.getLatestCollectionByIDInternal(ctx, 100, false)
assert.Error(t, err) assert.Error(t, err)
assert.True(t, common.IsCollectionNotExistError(err)) assert.True(t, common.IsCollectionNotExistError(err))
coll, err := mt.getLatestCollectionByIDInternal(ctx, 100, true)
assert.NoError(t, err)
assert.False(t, coll.Available())
}) })
t.Run("normal case", func(t *testing.T) { t.Run("normal case", func(t *testing.T) {
@ -700,7 +706,7 @@ func TestMetaTable_getLatestCollectionByIDInternal(t *testing.T) {
}, },
}, },
}} }}
coll, err := mt.getLatestCollectionByIDInternal(ctx, 100) coll, err := mt.getLatestCollectionByIDInternal(ctx, 100, false)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, 1, len(coll.Partitions)) assert.Equal(t, 1, len(coll.Partitions))
}) })

View File

@ -38,7 +38,7 @@ type mockMetaTable struct {
ListCollectionsFunc func(ctx context.Context, ts Timestamp) ([]*model.Collection, error) ListCollectionsFunc func(ctx context.Context, ts Timestamp) ([]*model.Collection, error)
AddCollectionFunc func(ctx context.Context, coll *model.Collection) error AddCollectionFunc func(ctx context.Context, coll *model.Collection) error
GetCollectionByNameFunc func(ctx context.Context, collectionName string, ts Timestamp) (*model.Collection, error) GetCollectionByNameFunc func(ctx context.Context, collectionName string, ts Timestamp) (*model.Collection, error)
GetCollectionByIDFunc func(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) GetCollectionByIDFunc func(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error)
ChangeCollectionStateFunc func(ctx context.Context, collectionID UniqueID, state pb.CollectionState, ts Timestamp) error ChangeCollectionStateFunc func(ctx context.Context, collectionID UniqueID, state pb.CollectionState, ts Timestamp) error
RemoveCollectionFunc func(ctx context.Context, collectionID UniqueID, ts Timestamp) error RemoveCollectionFunc func(ctx context.Context, collectionID UniqueID, ts Timestamp) error
AddPartitionFunc func(ctx context.Context, partition *model.Partition) error AddPartitionFunc func(ctx context.Context, partition *model.Partition) error
@ -67,8 +67,8 @@ func (m mockMetaTable) GetCollectionByName(ctx context.Context, collectionName s
return m.GetCollectionByNameFunc(ctx, collectionName, ts) return m.GetCollectionByNameFunc(ctx, collectionName, ts)
} }
func (m mockMetaTable) GetCollectionByID(ctx context.Context, collectionID UniqueID, ts Timestamp) (*model.Collection, error) { func (m mockMetaTable) GetCollectionByID(ctx context.Context, collectionID UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return m.GetCollectionByIDFunc(ctx, collectionID, ts) return m.GetCollectionByIDFunc(ctx, collectionID, ts, allowUnavailable)
} }
func (m mockMetaTable) ChangeCollectionState(ctx context.Context, collectionID UniqueID, state pb.CollectionState, ts Timestamp) error { func (m mockMetaTable) ChangeCollectionState(ctx context.Context, collectionID UniqueID, state pb.CollectionState, ts Timestamp) error {
@ -361,7 +361,7 @@ func withInvalidMeta() Opt {
meta.GetCollectionByNameFunc = func(ctx context.Context, collectionName string, ts Timestamp) (*model.Collection, error) { meta.GetCollectionByNameFunc = func(ctx context.Context, collectionName string, ts Timestamp) (*model.Collection, error) {
return nil, errors.New("error mock GetCollectionByName") return nil, errors.New("error mock GetCollectionByName")
} }
meta.GetCollectionByIDFunc = func(ctx context.Context, collectionID typeutil.UniqueID, ts Timestamp) (*model.Collection, error) { meta.GetCollectionByIDFunc = func(ctx context.Context, collectionID typeutil.UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return nil, errors.New("error mock GetCollectionByID") return nil, errors.New("error mock GetCollectionByID")
} }
meta.AddPartitionFunc = func(ctx context.Context, partition *model.Partition) error { meta.AddPartitionFunc = func(ctx context.Context, partition *model.Partition) error {

View File

@ -216,13 +216,13 @@ func (_m *IMetaTable) DropRole(tenant string, roleName string) error {
return r0 return r0
} }
// GetCollectionByID provides a mock function with given fields: ctx, collectionID, ts // GetCollectionByID provides a mock function with given fields: ctx, collectionID, ts, allowUnavailable
func (_m *IMetaTable) GetCollectionByID(ctx context.Context, collectionID int64, ts uint64) (*model.Collection, error) { func (_m *IMetaTable) GetCollectionByID(ctx context.Context, collectionID int64, ts uint64, allowUnavailable bool) (*model.Collection, error) {
ret := _m.Called(ctx, collectionID, ts) ret := _m.Called(ctx, collectionID, ts, allowUnavailable)
var r0 *model.Collection var r0 *model.Collection
if rf, ok := ret.Get(0).(func(context.Context, int64, uint64) *model.Collection); ok { if rf, ok := ret.Get(0).(func(context.Context, int64, uint64, bool) *model.Collection); ok {
r0 = rf(ctx, collectionID, ts) r0 = rf(ctx, collectionID, ts, allowUnavailable)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.Collection) r0 = ret.Get(0).(*model.Collection)
@ -230,8 +230,8 @@ func (_m *IMetaTable) GetCollectionByID(ctx context.Context, collectionID int64,
} }
var r1 error var r1 error
if rf, ok := ret.Get(1).(func(context.Context, int64, uint64) error); ok { if rf, ok := ret.Get(1).(func(context.Context, int64, uint64, bool) error); ok {
r1 = rf(ctx, collectionID, ts) r1 = rf(ctx, collectionID, ts, allowUnavailable)
} else { } else {
r1 = ret.Error(1) r1 = ret.Error(1)
} }

View File

@ -916,12 +916,12 @@ func (c *Core) HasCollection(ctx context.Context, in *milvuspb.HasCollectionRequ
return t.Rsp, nil return t.Rsp, nil
} }
func (c *Core) describeCollection(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*model.Collection, error) { func (c *Core) describeCollection(ctx context.Context, in *milvuspb.DescribeCollectionRequest, allowUnavailable bool) (*model.Collection, error) {
ts := getTravelTs(in) ts := getTravelTs(in)
if in.GetCollectionName() != "" { if in.GetCollectionName() != "" {
return c.meta.GetCollectionByName(ctx, in.GetCollectionName(), ts) return c.meta.GetCollectionByName(ctx, in.GetCollectionName(), ts)
} }
return c.meta.GetCollectionByID(ctx, in.GetCollectionID(), ts) return c.meta.GetCollectionByID(ctx, in.GetCollectionID(), ts, allowUnavailable)
} }
func convertModelToDesc(collInfo *model.Collection, aliases []string) *milvuspb.DescribeCollectionResponse { func convertModelToDesc(collInfo *model.Collection, aliases []string) *milvuspb.DescribeCollectionResponse {
@ -952,8 +952,7 @@ func convertModelToDesc(collInfo *model.Collection, aliases []string) *milvuspb.
return resp return resp
} }
// DescribeCollection return collection info func (c *Core) describeCollectionImpl(ctx context.Context, in *milvuspb.DescribeCollectionRequest, allowUnavailable bool) (*milvuspb.DescribeCollectionResponse, error) {
func (c *Core) DescribeCollection(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
if code, ok := c.checkHealthy(); !ok { if code, ok := c.checkHealthy(); !ok {
return &milvuspb.DescribeCollectionResponse{ return &milvuspb.DescribeCollectionResponse{
Status: failStatus(commonpb.ErrorCode_UnexpectedError, "StateCode"+commonpb.StateCode_name[int32(code)]), Status: failStatus(commonpb.ErrorCode_UnexpectedError, "StateCode"+commonpb.StateCode_name[int32(code)]),
@ -966,16 +965,18 @@ func (c *Core) DescribeCollection(ctx context.Context, in *milvuspb.DescribeColl
ts := getTravelTs(in) ts := getTravelTs(in)
log := log.Ctx(ctx).With(zap.String("collection name", in.GetCollectionName()), log := log.Ctx(ctx).With(zap.String("collection name", in.GetCollectionName()),
zap.Int64("id", in.GetCollectionID()), zap.Int64("id", in.GetCollectionID()),
zap.Uint64("ts", ts)) zap.Uint64("ts", ts),
zap.Bool("allowUnavailable", allowUnavailable))
// TODO(longjiquan): log may be very frequent here. // TODO(longjiquan): log may be very frequent here.
log.Info("received request to describe collection") log.Info("received request to describe collection")
t := &describeCollectionTask{ t := &describeCollectionTask{
baseTask: newBaseTask(ctx, c), baseTask: newBaseTask(ctx, c),
Req: in, Req: in,
Rsp: &milvuspb.DescribeCollectionResponse{}, Rsp: &milvuspb.DescribeCollectionResponse{},
allowUnavailable: allowUnavailable,
} }
if err := c.scheduler.AddTask(t); err != nil { if err := c.scheduler.AddTask(t); err != nil {
@ -984,6 +985,7 @@ func (c *Core) DescribeCollection(ctx context.Context, in *milvuspb.DescribeColl
return &milvuspb.DescribeCollectionResponse{ return &milvuspb.DescribeCollectionResponse{
// TODO: use commonpb.ErrorCode_CollectionNotExists. SDK use commonpb.ErrorCode_UnexpectedError now. // TODO: use commonpb.ErrorCode_CollectionNotExists. SDK use commonpb.ErrorCode_UnexpectedError now.
Status: failStatus(commonpb.ErrorCode_UnexpectedError, err.Error()), Status: failStatus(commonpb.ErrorCode_UnexpectedError, err.Error()),
// Status: common.StatusFromError(err),
}, nil }, nil
} }
@ -993,6 +995,7 @@ func (c *Core) DescribeCollection(ctx context.Context, in *milvuspb.DescribeColl
return &milvuspb.DescribeCollectionResponse{ return &milvuspb.DescribeCollectionResponse{
// TODO: use commonpb.ErrorCode_CollectionNotExists. SDK use commonpb.ErrorCode_UnexpectedError now. // TODO: use commonpb.ErrorCode_CollectionNotExists. SDK use commonpb.ErrorCode_UnexpectedError now.
Status: failStatus(commonpb.ErrorCode_UnexpectedError, err.Error()), Status: failStatus(commonpb.ErrorCode_UnexpectedError, err.Error()),
// Status: common.StatusFromError(err),
}, nil }, nil
} }
@ -1004,6 +1007,21 @@ func (c *Core) DescribeCollection(ctx context.Context, in *milvuspb.DescribeColl
return t.Rsp, nil return t.Rsp, nil
} }
// DescribeCollection return collection info
func (c *Core) DescribeCollection(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return c.describeCollectionImpl(ctx, in, false)
}
// DescribeCollectionInternal same to DescribeCollection, but will return unavailable collections and
// only used in internal RPC.
// When query cluster tried to do recovery, it'll be healthy until all collections' targets were recovered,
// so during this time, releasing request generated by rootcoord's recovery won't succeed. So in theory, rootcoord goes
// to be healthy, querycoord recovers all collections' targets, and then querycoord serves the releasing request sent
// by rootcoord, eventually, the dropping collections will be released.
func (c *Core) DescribeCollectionInternal(ctx context.Context, in *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) {
return c.describeCollectionImpl(ctx, in, true)
}
// ShowCollections list all collection names // ShowCollections list all collection names
func (c *Core) ShowCollections(ctx context.Context, in *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) { func (c *Core) ShowCollections(ctx context.Context, in *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) {
if code, ok := c.checkHealthy(); !ok { if code, ok := c.checkHealthy(); !ok {
@ -1269,8 +1287,7 @@ func (c *Core) HasPartition(ctx context.Context, in *milvuspb.HasPartitionReques
return t.Rsp, nil return t.Rsp, nil
} }
// ShowPartitions list all partition names func (c *Core) showPartitionsImpl(ctx context.Context, in *milvuspb.ShowPartitionsRequest, allowUnavailable bool) (*milvuspb.ShowPartitionsResponse, error) {
func (c *Core) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
if code, ok := c.checkHealthy(); !ok { if code, ok := c.checkHealthy(); !ok {
return &milvuspb.ShowPartitionsResponse{ return &milvuspb.ShowPartitionsResponse{
Status: failStatus(commonpb.ErrorCode_UnexpectedError, "StateCode="+commonpb.StateCode_name[int32(code)]), Status: failStatus(commonpb.ErrorCode_UnexpectedError, "StateCode="+commonpb.StateCode_name[int32(code)]),
@ -1280,14 +1297,15 @@ func (c *Core) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRe
metrics.RootCoordDDLReqCounter.WithLabelValues("ShowPartitions", metrics.TotalLabel).Inc() metrics.RootCoordDDLReqCounter.WithLabelValues("ShowPartitions", metrics.TotalLabel).Inc()
tr := timerecord.NewTimeRecorder("ShowPartitions") tr := timerecord.NewTimeRecorder("ShowPartitions")
log := log.Ctx(ctx).With(zap.String("collection", in.GetCollectionName())) log := log.Ctx(ctx).With(zap.String("collection", in.GetCollectionName()), zap.Bool("allowUnavailable", allowUnavailable))
log.Info("received request to show partitions") log.Info("received request to show partitions")
t := &showPartitionTask{ t := &showPartitionTask{
baseTask: newBaseTask(ctx, c), baseTask: newBaseTask(ctx, c),
Req: in, Req: in,
Rsp: &milvuspb.ShowPartitionsResponse{}, Rsp: &milvuspb.ShowPartitionsResponse{},
allowUnavailable: allowUnavailable,
} }
if err := c.scheduler.AddTask(t); err != nil { if err := c.scheduler.AddTask(t); err != nil {
@ -1295,6 +1313,7 @@ func (c *Core) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRe
metrics.RootCoordDDLReqCounter.WithLabelValues("ShowPartitions", metrics.FailLabel).Inc() metrics.RootCoordDDLReqCounter.WithLabelValues("ShowPartitions", metrics.FailLabel).Inc()
return &milvuspb.ShowPartitionsResponse{ return &milvuspb.ShowPartitionsResponse{
Status: failStatus(commonpb.ErrorCode_UnexpectedError, "ShowPartitions failed: "+err.Error()), Status: failStatus(commonpb.ErrorCode_UnexpectedError, "ShowPartitions failed: "+err.Error()),
// Status: common.StatusFromError(err),
}, nil }, nil
} }
@ -1303,6 +1322,7 @@ func (c *Core) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRe
metrics.RootCoordDDLReqCounter.WithLabelValues("ShowPartitions", metrics.FailLabel).Inc() metrics.RootCoordDDLReqCounter.WithLabelValues("ShowPartitions", metrics.FailLabel).Inc()
return &milvuspb.ShowPartitionsResponse{ return &milvuspb.ShowPartitionsResponse{
Status: failStatus(commonpb.ErrorCode_UnexpectedError, "ShowPartitions failed: "+err.Error()), Status: failStatus(commonpb.ErrorCode_UnexpectedError, "ShowPartitions failed: "+err.Error()),
// Status: common.StatusFromError(err),
}, nil }, nil
} }
@ -1314,6 +1334,16 @@ func (c *Core) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRe
return t.Rsp, nil return t.Rsp, nil
} }
// ShowPartitions list all partition names
func (c *Core) ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return c.showPartitionsImpl(ctx, in, false)
}
// ShowPartitionsInternal same to ShowPartitions, only used in internal RPC.
func (c *Core) ShowPartitionsInternal(ctx context.Context, in *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) {
return c.showPartitionsImpl(ctx, in, true)
}
// ShowSegments list all segments // ShowSegments list all segments
func (c *Core) ShowSegments(ctx context.Context, in *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) { func (c *Core) ShowSegments(ctx context.Context, in *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) {
// ShowSegments Only used in GetPersistentSegmentInfo, it's already deprecated for a long time. // ShowSegments Only used in GetPersistentSegmentInfo, it's already deprecated for a long time.

View File

@ -322,6 +322,9 @@ func TestRootCoord_DescribeCollection(t *testing.T) {
resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{}) resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.DescribeCollectionInternal(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
t.Run("failed to add task", func(t *testing.T) { t.Run("failed to add task", func(t *testing.T) {
@ -332,6 +335,9 @@ func TestRootCoord_DescribeCollection(t *testing.T) {
resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{}) resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.DescribeCollectionInternal(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
t.Run("failed to execute", func(t *testing.T) { t.Run("failed to execute", func(t *testing.T) {
@ -342,6 +348,9 @@ func TestRootCoord_DescribeCollection(t *testing.T) {
resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{}) resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.DescribeCollectionInternal(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
t.Run("normal case, everything is ok", func(t *testing.T) { t.Run("normal case, everything is ok", func(t *testing.T) {
@ -352,6 +361,9 @@ func TestRootCoord_DescribeCollection(t *testing.T) {
resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{}) resp, err := c.DescribeCollection(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.Equal(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.DescribeCollectionInternal(ctx, &milvuspb.DescribeCollectionRequest{})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
} }
@ -482,6 +494,9 @@ func TestRootCoord_ShowPartitions(t *testing.T) {
resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{}) resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.ShowPartitionsInternal(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
t.Run("failed to add task", func(t *testing.T) { t.Run("failed to add task", func(t *testing.T) {
@ -492,6 +507,9 @@ func TestRootCoord_ShowPartitions(t *testing.T) {
resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{}) resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.ShowPartitionsInternal(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
t.Run("failed to execute", func(t *testing.T) { t.Run("failed to execute", func(t *testing.T) {
@ -501,6 +519,9 @@ func TestRootCoord_ShowPartitions(t *testing.T) {
resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{}) resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.ShowPartitionsInternal(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
t.Run("normal case, everything is ok", func(t *testing.T) { t.Run("normal case, everything is ok", func(t *testing.T) {
@ -510,6 +531,9 @@ func TestRootCoord_ShowPartitions(t *testing.T) {
resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{}) resp, err := c.ShowPartitions(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode()) assert.Equal(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
resp, err = c.ShowPartitionsInternal(ctx, &milvuspb.ShowPartitionsRequest{})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
}) })
} }
@ -1381,7 +1405,7 @@ func TestRootcoord_EnableActiveStandby(t *testing.T) {
}, },
CollectionName: "unexist"}) CollectionName: "unexist"})
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_UnexpectedError, resp.GetStatus().GetErrorCode()) assert.NotEqual(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
err = core.Stop() err = core.Stop()
assert.NoError(t, err) assert.NoError(t, err)
} }

View File

@ -13,8 +13,9 @@ import (
// showPartitionTask show partition request task // showPartitionTask show partition request task
type showPartitionTask struct { type showPartitionTask struct {
baseTask baseTask
Req *milvuspb.ShowPartitionsRequest Req *milvuspb.ShowPartitionsRequest
Rsp *milvuspb.ShowPartitionsResponse Rsp *milvuspb.ShowPartitionsResponse
allowUnavailable bool
} }
func (t *showPartitionTask) Prepare(ctx context.Context) error { func (t *showPartitionTask) Prepare(ctx context.Context) error {
@ -30,7 +31,7 @@ func (t *showPartitionTask) Execute(ctx context.Context) error {
var err error var err error
t.Rsp.Status = succStatus() t.Rsp.Status = succStatus()
if t.Req.GetCollectionName() == "" { if t.Req.GetCollectionName() == "" {
coll, err = t.core.meta.GetCollectionByID(ctx, t.Req.GetCollectionID(), typeutil.MaxTimestamp) coll, err = t.core.meta.GetCollectionByID(ctx, t.Req.GetCollectionID(), typeutil.MaxTimestamp, t.allowUnavailable)
} else { } else {
coll, err = t.core.meta.GetCollectionByName(ctx, t.Req.GetCollectionName(), typeutil.MaxTimestamp) coll, err = t.core.meta.GetCollectionByName(ctx, t.Req.GetCollectionName(), typeutil.MaxTimestamp)
} }

View File

@ -80,7 +80,7 @@ func Test_showPartitionTask_Execute(t *testing.T) {
t.Run("success", func(t *testing.T) { t.Run("success", func(t *testing.T) {
meta := newMockMetaTable() meta := newMockMetaTable()
meta.GetCollectionByIDFunc = func(ctx context.Context, collectionID typeutil.UniqueID, ts Timestamp) (*model.Collection, error) { meta.GetCollectionByIDFunc = func(ctx context.Context, collectionID typeutil.UniqueID, ts Timestamp, allowUnavailable bool) (*model.Collection, error) {
return &model.Collection{ return &model.Collection{
CollectionID: collectionID, CollectionID: collectionID,
Name: "test coll", Name: "test coll",

View File

@ -507,6 +507,10 @@ type RootCoord interface {
// error is always nil // error is always nil
DescribeCollection(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error) DescribeCollection(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error)
// DescribeCollectionInternal same to DescribeCollection, only used in internal RPC.
// Besides, it'll also return unavailable collection, for example, creating, dropping.
DescribeCollectionInternal(ctx context.Context, req *milvuspb.DescribeCollectionRequest) (*milvuspb.DescribeCollectionResponse, error)
// ShowCollections notifies RootCoord to list all collection names and other info in database at specified timestamp // ShowCollections notifies RootCoord to list all collection names and other info in database at specified timestamp
// //
// ctx is the context to control request deadline and cancellation // ctx is the context to control request deadline and cancellation
@ -571,6 +575,9 @@ type RootCoord interface {
// error is always nil // error is always nil
ShowPartitions(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) ShowPartitions(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error)
// ShowPartitionsInternal same to ShowPartitions, but will return unavailable resources and only used in internal.
ShowPartitionsInternal(ctx context.Context, req *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error)
// CreateIndex notifies RootCoord to create an index for the specified field in the collection // CreateIndex notifies RootCoord to create an index for the specified field in the collection
// //
// ctx is the context to control request deadline and cancellation // ctx is the context to control request deadline and cancellation

View File

@ -97,6 +97,10 @@ func (m *GrpcRootCoordClient) DescribeCollection(ctx context.Context, in *milvus
return &milvuspb.DescribeCollectionResponse{}, m.Err return &milvuspb.DescribeCollectionResponse{}, m.Err
} }
func (m *GrpcRootCoordClient) DescribeCollectionInternal(ctx context.Context, in *milvuspb.DescribeCollectionRequest, opts ...grpc.CallOption) (*milvuspb.DescribeCollectionResponse, error) {
return &milvuspb.DescribeCollectionResponse{}, m.Err
}
func (m *GrpcRootCoordClient) CreateAlias(ctx context.Context, in *milvuspb.CreateAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { func (m *GrpcRootCoordClient) CreateAlias(ctx context.Context, in *milvuspb.CreateAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) {
return &commonpb.Status{}, m.Err return &commonpb.Status{}, m.Err
} }
@ -129,6 +133,10 @@ func (m *GrpcRootCoordClient) ShowPartitions(ctx context.Context, in *milvuspb.S
return &milvuspb.ShowPartitionsResponse{}, m.Err return &milvuspb.ShowPartitionsResponse{}, m.Err
} }
func (m *GrpcRootCoordClient) ShowPartitionsInternal(ctx context.Context, in *milvuspb.ShowPartitionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowPartitionsResponse, error) {
return &milvuspb.ShowPartitionsResponse{}, m.Err
}
func (m *GrpcRootCoordClient) DescribeSegment(ctx context.Context, in *milvuspb.DescribeSegmentRequest, opts ...grpc.CallOption) (*milvuspb.DescribeSegmentResponse, error) { func (m *GrpcRootCoordClient) DescribeSegment(ctx context.Context, in *milvuspb.DescribeSegmentRequest, opts ...grpc.CallOption) (*milvuspb.DescribeSegmentResponse, error) {
return &milvuspb.DescribeSegmentResponse{}, m.Err return &milvuspb.DescribeSegmentResponse{}, m.Err
} }