Add load index client in query node

Signed-off-by: xige-16 <xi.ge@zilliz.com>
pull/4973/head^2
xige-16 2020-12-11 11:29:54 +08:00 committed by yefu.chen
parent 62e9002348
commit 0067e2d989
11 changed files with 493 additions and 161 deletions

View File

@ -50,9 +50,9 @@ func (segMgr *SegmentManager) HandleQueryNodeMsgPack(msgPack *msgstream.MsgPack)
segMgr.mu.Lock()
defer segMgr.mu.Unlock()
for _, msg := range msgPack.Msgs {
statsMsg, ok := msg.(*msgstream.QueryNodeSegStatsMsg)
statsMsg, ok := msg.(*msgstream.QueryNodeStatsMsg)
if !ok {
return errors.Errorf("Type of message is not QueryNodeSegStatsMsg")
return errors.Errorf("Type of message is not QueryNodeStatsMsg")
}
for _, segStat := range statsMsg.GetSegStats() {

View File

@ -177,8 +177,8 @@ func TestSegmentManager_SegmentStats(t *testing.T) {
OpenTime: ts,
})
assert.Nil(t, err)
stats := internalpb.QueryNodeSegStats{
MsgType: internalpb.MsgType_kQueryNodeSegStats,
stats := internalpb.QueryNodeStats{
MsgType: internalpb.MsgType_kQueryNodeStats,
PeerID: 1,
SegStats: []*internalpb.SegmentStats{
{SegmentID: 100, MemorySize: 2500000, NumRows: 25000, RecentlyModified: true},
@ -189,9 +189,9 @@ func TestSegmentManager_SegmentStats(t *testing.T) {
EndTimestamp: 0,
HashValues: []uint32{1},
}
msg := msgstream.QueryNodeSegStatsMsg{
QueryNodeSegStats: stats,
BaseMsg: baseMsg,
msg := msgstream.QueryNodeStatsMsg{
QueryNodeStats: stats,
BaseMsg: baseMsg,
}
var tsMsg msgstream.TsMsg = &msg
@ -350,9 +350,9 @@ func TestSegmentManager_RPC(t *testing.T) {
BeginTs: 102,
EndTs: 104,
Msgs: []msgstream.TsMsg{
&msgstream.QueryNodeSegStatsMsg{
QueryNodeSegStats: internalpb.QueryNodeSegStats{
MsgType: internalpb.MsgType_kQueryNodeSegStats,
&msgstream.QueryNodeStatsMsg{
QueryNodeStats: internalpb.QueryNodeStats{
MsgType: internalpb.MsgType_kQueryNodeStats,
PeerID: 1,
SegStats: []*internalpb.SegmentStats{
{SegmentID: segID, MemorySize: 600000000, NumRows: 1000000, RecentlyModified: true},

View File

@ -221,19 +221,19 @@ func (tst *TimeTickMsg) Unmarshal(input []byte) (TsMsg, error) {
return timeTick, nil
}
/////////////////////////////////////////QueryNodeSegStats//////////////////////////////////////////
type QueryNodeSegStatsMsg struct {
/////////////////////////////////////////QueryNodeStats//////////////////////////////////////////
type QueryNodeStatsMsg struct {
BaseMsg
internalPb.QueryNodeSegStats
internalPb.QueryNodeStats
}
func (qs *QueryNodeSegStatsMsg) Type() MsgType {
func (qs *QueryNodeStatsMsg) Type() MsgType {
return qs.MsgType
}
func (qs *QueryNodeSegStatsMsg) Marshal(input TsMsg) ([]byte, error) {
queryNodeSegStatsTask := input.(*QueryNodeSegStatsMsg)
queryNodeSegStats := &queryNodeSegStatsTask.QueryNodeSegStats
func (qs *QueryNodeStatsMsg) Marshal(input TsMsg) ([]byte, error) {
queryNodeSegStatsTask := input.(*QueryNodeStatsMsg)
queryNodeSegStats := &queryNodeSegStatsTask.QueryNodeStats
mb, err := proto.Marshal(queryNodeSegStats)
if err != nil {
return nil, err
@ -241,13 +241,13 @@ func (qs *QueryNodeSegStatsMsg) Marshal(input TsMsg) ([]byte, error) {
return mb, nil
}
func (qs *QueryNodeSegStatsMsg) Unmarshal(input []byte) (TsMsg, error) {
queryNodeSegStats := internalPb.QueryNodeSegStats{}
func (qs *QueryNodeStatsMsg) Unmarshal(input []byte) (TsMsg, error) {
queryNodeSegStats := internalPb.QueryNodeStats{}
err := proto.Unmarshal(input, &queryNodeSegStats)
if err != nil {
return nil, err
}
queryNodeSegStatsMsg := &QueryNodeSegStatsMsg{QueryNodeSegStats: queryNodeSegStats}
queryNodeSegStatsMsg := &QueryNodeStatsMsg{QueryNodeStats: queryNodeSegStats}
return queryNodeSegStatsMsg, nil
}
@ -591,3 +591,34 @@ func (sc *ShowPartitionMsg) Unmarshal(input []byte) (TsMsg, error) {
return showPartitionMsg, nil
}
/////////////////////////////////////////LoadIndex//////////////////////////////////////////
type LoadIndexMsg struct {
BaseMsg
internalPb.LoadIndex
}
func (lim *LoadIndexMsg) Type() MsgType {
return lim.MsgType
}
func (lim *LoadIndexMsg) Marshal(input TsMsg) ([]byte, error) {
loadIndexMsg := input.(*LoadIndexMsg)
loadIndexRequest := &loadIndexMsg.LoadIndex
mb, err := proto.Marshal(loadIndexRequest)
if err != nil {
return nil, err
}
return mb, nil
}
func (lim *LoadIndexMsg) Unmarshal(input []byte) (TsMsg, error) {
loadIndexRequest := internalPb.LoadIndex{}
err := proto.Unmarshal(input, &loadIndexRequest)
if err != nil {
return nil, err
}
loadIndexMsg := &LoadIndexMsg{LoadIndex: loadIndexRequest}
return loadIndexMsg, nil
}

View File

@ -115,14 +115,14 @@ func getTsMsg(msgType MsgType, reqID UniqueID, hashValue uint32) TsMsg {
TimeTickMsg: timeTickResult,
}
return timeTickMsg
case internalPb.MsgType_kQueryNodeSegStats:
queryNodeSegStats := internalPb.QueryNodeSegStats{
MsgType: internalPb.MsgType_kQueryNodeSegStats,
case internalPb.MsgType_kQueryNodeStats:
queryNodeSegStats := internalPb.QueryNodeStats{
MsgType: internalPb.MsgType_kQueryNodeStats,
PeerID: reqID,
}
queryNodeSegStatsMsg := &QueryNodeSegStatsMsg{
BaseMsg: baseMsg,
QueryNodeSegStats: queryNodeSegStats,
queryNodeSegStatsMsg := &QueryNodeStatsMsg{
BaseMsg: baseMsg,
QueryNodeStats: queryNodeSegStats,
}
return queryNodeSegStatsMsg
}
@ -473,7 +473,7 @@ func TestStream_PulsarMsgStream_DefaultRepackFunc(t *testing.T) {
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(internalPb.MsgType_kTimeTick, 1, 1))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(internalPb.MsgType_kSearch, 2, 2))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(internalPb.MsgType_kSearchResult, 3, 3))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(internalPb.MsgType_kQueryNodeSegStats, 4, 4))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(internalPb.MsgType_kQueryNodeStats, 4, 4))
inputStream := NewPulsarMsgStream(context.Background(), 100)
inputStream.SetPulsarClient(pulsarAddress)

View File

@ -35,14 +35,14 @@ func (dispatcher *UnmarshalDispatcher) addDefaultMsgTemplates() {
createPartitionMsg := CreatePartitionMsg{}
dropPartitionMsg := DropPartitionMsg{}
queryNodeSegStatsMsg := QueryNodeSegStatsMsg{}
queryNodeSegStatsMsg := QueryNodeStatsMsg{}
dispatcher.tempMap = make(map[internalPb.MsgType]UnmarshalFunc)
dispatcher.tempMap[internalPb.MsgType_kInsert] = insertMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kDelete] = deleteMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kSearch] = searchMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kSearchResult] = searchResultMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kTimeTick] = timeTickMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kQueryNodeSegStats] = queryNodeSegStatsMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kQueryNodeStats] = queryNodeSegStatsMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kCreateCollection] = createCollectionMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kDropCollection] = dropCollectionMsg.Unmarshal
dispatcher.tempMap[internalPb.MsgType_kCreatePartition] = createPartitionMsg.Unmarshal

View File

@ -33,7 +33,8 @@ enum MsgType {
/* System Control */
kTimeTick = 1200;
kQueryNodeSegStats = 1201;
kQueryNodeStats = 1201;
kLoadIndex = 1202;
}
@ -276,6 +277,24 @@ message Key2SegMsg {
repeated Key2Seg key2seg = 2;
}
message LoadIndex {
MsgType msg_type = 1;
int64 segmentID = 2;
int64 fieldID = 3;
repeated string index_paths = 4;
}
message IndexStats {
repeated common.KeyValuePair index_params = 1;
int64 num_related_segments = 2;
}
message FieldStats {
int64 collectionID = 1;
int64 fieldID = 2;
repeated IndexStats index_stats = 3;
}
message SegmentStats {
int64 segmentID = 1;
int64 memory_size = 2;
@ -283,8 +302,9 @@ message SegmentStats {
bool recently_modified = 4;
}
message QueryNodeSegStats {
message QueryNodeStats {
MsgType msg_type = 1;
int64 peerID = 2;
repeated SegmentStats seg_stats = 3;
repeated FieldStats field_stats = 4;
}

View File

@ -46,8 +46,9 @@ const (
MsgType_kSearch MsgType = 500
MsgType_kSearchResult MsgType = 501
// System Control
MsgType_kTimeTick MsgType = 1200
MsgType_kQueryNodeSegStats MsgType = 1201
MsgType_kTimeTick MsgType = 1200
MsgType_kQueryNodeStats MsgType = 1201
MsgType_kLoadIndex MsgType = 1202
)
var MsgType_name = map[int32]string{
@ -68,7 +69,8 @@ var MsgType_name = map[int32]string{
500: "kSearch",
501: "kSearchResult",
1200: "kTimeTick",
1201: "kQueryNodeSegStats",
1201: "kQueryNodeStats",
1202: "kLoadIndex",
}
var MsgType_value = map[string]int32{
@ -89,7 +91,8 @@ var MsgType_value = map[string]int32{
"kSearch": 500,
"kSearchResult": 501,
"kTimeTick": 1200,
"kQueryNodeSegStats": 1201,
"kQueryNodeStats": 1201,
"kLoadIndex": 1202,
}
func (x MsgType) String() string {
@ -1979,6 +1982,171 @@ func (m *Key2SegMsg) GetKey2Seg() []*Key2Seg {
return nil
}
type LoadIndex struct {
MsgType MsgType `protobuf:"varint,1,opt,name=msg_type,json=msgType,proto3,enum=milvus.proto.internal.MsgType" json:"msg_type,omitempty"`
SegmentID int64 `protobuf:"varint,2,opt,name=segmentID,proto3" json:"segmentID,omitempty"`
FieldID int64 `protobuf:"varint,3,opt,name=fieldID,proto3" json:"fieldID,omitempty"`
IndexPaths []string `protobuf:"bytes,4,rep,name=index_paths,json=indexPaths,proto3" json:"index_paths,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *LoadIndex) Reset() { *m = LoadIndex{} }
func (m *LoadIndex) String() string { return proto.CompactTextString(m) }
func (*LoadIndex) ProtoMessage() {}
func (*LoadIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_7eb37f6b80b23116, []int{26}
}
func (m *LoadIndex) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LoadIndex.Unmarshal(m, b)
}
func (m *LoadIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LoadIndex.Marshal(b, m, deterministic)
}
func (m *LoadIndex) XXX_Merge(src proto.Message) {
xxx_messageInfo_LoadIndex.Merge(m, src)
}
func (m *LoadIndex) XXX_Size() int {
return xxx_messageInfo_LoadIndex.Size(m)
}
func (m *LoadIndex) XXX_DiscardUnknown() {
xxx_messageInfo_LoadIndex.DiscardUnknown(m)
}
var xxx_messageInfo_LoadIndex proto.InternalMessageInfo
func (m *LoadIndex) GetMsgType() MsgType {
if m != nil {
return m.MsgType
}
return MsgType_kNone
}
func (m *LoadIndex) GetSegmentID() int64 {
if m != nil {
return m.SegmentID
}
return 0
}
func (m *LoadIndex) GetFieldID() int64 {
if m != nil {
return m.FieldID
}
return 0
}
func (m *LoadIndex) GetIndexPaths() []string {
if m != nil {
return m.IndexPaths
}
return nil
}
type IndexStats struct {
IndexParams []*commonpb.KeyValuePair `protobuf:"bytes,1,rep,name=index_params,json=indexParams,proto3" json:"index_params,omitempty"`
NumRelatedSegments int64 `protobuf:"varint,2,opt,name=num_related_segments,json=numRelatedSegments,proto3" json:"num_related_segments,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *IndexStats) Reset() { *m = IndexStats{} }
func (m *IndexStats) String() string { return proto.CompactTextString(m) }
func (*IndexStats) ProtoMessage() {}
func (*IndexStats) Descriptor() ([]byte, []int) {
return fileDescriptor_7eb37f6b80b23116, []int{27}
}
func (m *IndexStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IndexStats.Unmarshal(m, b)
}
func (m *IndexStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_IndexStats.Marshal(b, m, deterministic)
}
func (m *IndexStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_IndexStats.Merge(m, src)
}
func (m *IndexStats) XXX_Size() int {
return xxx_messageInfo_IndexStats.Size(m)
}
func (m *IndexStats) XXX_DiscardUnknown() {
xxx_messageInfo_IndexStats.DiscardUnknown(m)
}
var xxx_messageInfo_IndexStats proto.InternalMessageInfo
func (m *IndexStats) GetIndexParams() []*commonpb.KeyValuePair {
if m != nil {
return m.IndexParams
}
return nil
}
func (m *IndexStats) GetNumRelatedSegments() int64 {
if m != nil {
return m.NumRelatedSegments
}
return 0
}
type FieldStats struct {
CollectionID int64 `protobuf:"varint,1,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
FieldID int64 `protobuf:"varint,2,opt,name=fieldID,proto3" json:"fieldID,omitempty"`
IndexStats []*IndexStats `protobuf:"bytes,3,rep,name=index_stats,json=indexStats,proto3" json:"index_stats,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FieldStats) Reset() { *m = FieldStats{} }
func (m *FieldStats) String() string { return proto.CompactTextString(m) }
func (*FieldStats) ProtoMessage() {}
func (*FieldStats) Descriptor() ([]byte, []int) {
return fileDescriptor_7eb37f6b80b23116, []int{28}
}
func (m *FieldStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FieldStats.Unmarshal(m, b)
}
func (m *FieldStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FieldStats.Marshal(b, m, deterministic)
}
func (m *FieldStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_FieldStats.Merge(m, src)
}
func (m *FieldStats) XXX_Size() int {
return xxx_messageInfo_FieldStats.Size(m)
}
func (m *FieldStats) XXX_DiscardUnknown() {
xxx_messageInfo_FieldStats.DiscardUnknown(m)
}
var xxx_messageInfo_FieldStats proto.InternalMessageInfo
func (m *FieldStats) GetCollectionID() int64 {
if m != nil {
return m.CollectionID
}
return 0
}
func (m *FieldStats) GetFieldID() int64 {
if m != nil {
return m.FieldID
}
return 0
}
func (m *FieldStats) GetIndexStats() []*IndexStats {
if m != nil {
return m.IndexStats
}
return nil
}
type SegmentStats struct {
SegmentID int64 `protobuf:"varint,1,opt,name=segmentID,proto3" json:"segmentID,omitempty"`
MemorySize int64 `protobuf:"varint,2,opt,name=memory_size,json=memorySize,proto3" json:"memory_size,omitempty"`
@ -1993,7 +2161,7 @@ func (m *SegmentStats) Reset() { *m = SegmentStats{} }
func (m *SegmentStats) String() string { return proto.CompactTextString(m) }
func (*SegmentStats) ProtoMessage() {}
func (*SegmentStats) Descriptor() ([]byte, []int) {
return fileDescriptor_7eb37f6b80b23116, []int{26}
return fileDescriptor_7eb37f6b80b23116, []int{29}
}
func (m *SegmentStats) XXX_Unmarshal(b []byte) error {
@ -2042,61 +2210,69 @@ func (m *SegmentStats) GetRecentlyModified() bool {
return false
}
type QueryNodeSegStats struct {
type QueryNodeStats struct {
MsgType MsgType `protobuf:"varint,1,opt,name=msg_type,json=msgType,proto3,enum=milvus.proto.internal.MsgType" json:"msg_type,omitempty"`
PeerID int64 `protobuf:"varint,2,opt,name=peerID,proto3" json:"peerID,omitempty"`
SegStats []*SegmentStats `protobuf:"bytes,3,rep,name=seg_stats,json=segStats,proto3" json:"seg_stats,omitempty"`
FieldStats []*FieldStats `protobuf:"bytes,4,rep,name=field_stats,json=fieldStats,proto3" json:"field_stats,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *QueryNodeSegStats) Reset() { *m = QueryNodeSegStats{} }
func (m *QueryNodeSegStats) String() string { return proto.CompactTextString(m) }
func (*QueryNodeSegStats) ProtoMessage() {}
func (*QueryNodeSegStats) Descriptor() ([]byte, []int) {
return fileDescriptor_7eb37f6b80b23116, []int{27}
func (m *QueryNodeStats) Reset() { *m = QueryNodeStats{} }
func (m *QueryNodeStats) String() string { return proto.CompactTextString(m) }
func (*QueryNodeStats) ProtoMessage() {}
func (*QueryNodeStats) Descriptor() ([]byte, []int) {
return fileDescriptor_7eb37f6b80b23116, []int{30}
}
func (m *QueryNodeSegStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryNodeSegStats.Unmarshal(m, b)
func (m *QueryNodeStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryNodeStats.Unmarshal(m, b)
}
func (m *QueryNodeSegStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_QueryNodeSegStats.Marshal(b, m, deterministic)
func (m *QueryNodeStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_QueryNodeStats.Marshal(b, m, deterministic)
}
func (m *QueryNodeSegStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryNodeSegStats.Merge(m, src)
func (m *QueryNodeStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryNodeStats.Merge(m, src)
}
func (m *QueryNodeSegStats) XXX_Size() int {
return xxx_messageInfo_QueryNodeSegStats.Size(m)
func (m *QueryNodeStats) XXX_Size() int {
return xxx_messageInfo_QueryNodeStats.Size(m)
}
func (m *QueryNodeSegStats) XXX_DiscardUnknown() {
xxx_messageInfo_QueryNodeSegStats.DiscardUnknown(m)
func (m *QueryNodeStats) XXX_DiscardUnknown() {
xxx_messageInfo_QueryNodeStats.DiscardUnknown(m)
}
var xxx_messageInfo_QueryNodeSegStats proto.InternalMessageInfo
var xxx_messageInfo_QueryNodeStats proto.InternalMessageInfo
func (m *QueryNodeSegStats) GetMsgType() MsgType {
func (m *QueryNodeStats) GetMsgType() MsgType {
if m != nil {
return m.MsgType
}
return MsgType_kNone
}
func (m *QueryNodeSegStats) GetPeerID() int64 {
func (m *QueryNodeStats) GetPeerID() int64 {
if m != nil {
return m.PeerID
}
return 0
}
func (m *QueryNodeSegStats) GetSegStats() []*SegmentStats {
func (m *QueryNodeStats) GetSegStats() []*SegmentStats {
if m != nil {
return m.SegStats
}
return nil
}
func (m *QueryNodeStats) GetFieldStats() []*FieldStats {
if m != nil {
return m.FieldStats
}
return nil
}
func init() {
proto.RegisterEnum("milvus.proto.internal.MsgType", MsgType_name, MsgType_value)
proto.RegisterEnum("milvus.proto.internal.PeerRole", PeerRole_name, PeerRole_value)
@ -2126,108 +2302,122 @@ func init() {
proto.RegisterType((*TimeTickMsg)(nil), "milvus.proto.internal.TimeTickMsg")
proto.RegisterType((*Key2Seg)(nil), "milvus.proto.internal.Key2Seg")
proto.RegisterType((*Key2SegMsg)(nil), "milvus.proto.internal.Key2SegMsg")
proto.RegisterType((*LoadIndex)(nil), "milvus.proto.internal.LoadIndex")
proto.RegisterType((*IndexStats)(nil), "milvus.proto.internal.IndexStats")
proto.RegisterType((*FieldStats)(nil), "milvus.proto.internal.FieldStats")
proto.RegisterType((*SegmentStats)(nil), "milvus.proto.internal.SegmentStats")
proto.RegisterType((*QueryNodeSegStats)(nil), "milvus.proto.internal.QueryNodeSegStats")
proto.RegisterType((*QueryNodeStats)(nil), "milvus.proto.internal.QueryNodeStats")
}
func init() { proto.RegisterFile("internal_msg.proto", fileDescriptor_7eb37f6b80b23116) }
var fileDescriptor_7eb37f6b80b23116 = []byte{
// 1530 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0x4b, 0x6f, 0x1b, 0x47,
0x12, 0xf6, 0x70, 0xf8, 0x2c, 0x52, 0xd4, 0xa8, 0x25, 0xd9, 0xb4, 0xbd, 0xb0, 0xe9, 0xf1, 0x62,
0xad, 0xf5, 0x62, 0x25, 0xac, 0xbc, 0x87, 0xf5, 0x6d, 0xd7, 0x22, 0xb0, 0x66, 0x0c, 0x19, 0xca,
0x50, 0x48, 0x80, 0xc0, 0xc0, 0x60, 0x44, 0x96, 0xc8, 0xc1, 0x3c, 0xd5, 0x3d, 0x94, 0x4c, 0x1d,
0x72, 0xf2, 0x0f, 0x48, 0x10, 0xe4, 0x90, 0x43, 0x80, 0x1c, 0x73, 0x32, 0x62, 0xe4, 0x4f, 0xe4,
0x75, 0xca, 0xcf, 0x08, 0x90, 0x18, 0x48, 0x9c, 0x43, 0x6e, 0x41, 0xf7, 0xbc, 0x38, 0x92, 0x48,
0x09, 0x91, 0xe4, 0x38, 0x70, 0x6e, 0x53, 0xc5, 0x66, 0x77, 0x7d, 0xdf, 0x57, 0x5d, 0xdd, 0xd5,
0x40, 0x4c, 0x37, 0x40, 0xea, 0x1a, 0xb6, 0xee, 0xb0, 0xfe, 0xb2, 0x4f, 0xbd, 0xc0, 0x23, 0x8b,
0x8e, 0x69, 0xef, 0x0e, 0x59, 0x68, 0x2d, 0xc7, 0x03, 0xae, 0xd4, 0xba, 0x9e, 0xe3, 0x78, 0x6e,
0xe8, 0xbe, 0x32, 0xc7, 0x90, 0xee, 0x9a, 0x5d, 0x4c, 0xff, 0xa7, 0xba, 0x50, 0x69, 0xb7, 0x34,
0xdc, 0x19, 0x22, 0x0b, 0xc8, 0x45, 0x28, 0xfa, 0x88, 0xb4, 0xdd, 0x6a, 0x48, 0x4d, 0x69, 0x49,
0xd6, 0x22, 0x8b, 0xdc, 0x81, 0x3c, 0xf5, 0x6c, 0x6c, 0xe4, 0x9a, 0xd2, 0x52, 0x7d, 0xf5, 0xfa,
0xf2, 0x91, 0x6b, 0x2d, 0x6f, 0x20, 0x52, 0xcd, 0xb3, 0x51, 0x13, 0x83, 0xc9, 0x02, 0x14, 0xba,
0xde, 0xd0, 0x0d, 0x1a, 0x72, 0x53, 0x5a, 0x9a, 0xd1, 0x42, 0x43, 0xed, 0x03, 0xf0, 0xf5, 0x98,
0xef, 0xb9, 0x0c, 0xc9, 0x1d, 0x28, 0xb2, 0xc0, 0x08, 0x86, 0x4c, 0x2c, 0x58, 0x5d, 0xbd, 0x9a,
0x9d, 0x3a, 0x0a, 0xbe, 0x23, 0x86, 0x68, 0xd1, 0x50, 0x52, 0x87, 0x5c, 0xbb, 0x25, 0x62, 0x91,
0xb5, 0x5c, 0xbb, 0x35, 0x61, 0x21, 0x0f, 0x60, 0x93, 0x79, 0x2f, 0x11, 0xd9, 0x2e, 0x54, 0xc5,
0x82, 0xa7, 0x81, 0xf6, 0x17, 0xa8, 0x04, 0xa6, 0x83, 0x2c, 0x30, 0x1c, 0x5f, 0xc4, 0x94, 0xd7,
0x52, 0xc7, 0x84, 0x75, 0x9f, 0x48, 0x50, 0xeb, 0x60, 0x3f, 0x55, 0x31, 0x19, 0x26, 0x8d, 0x0d,
0xe3, 0x53, 0x77, 0x07, 0x86, 0xeb, 0xa2, 0x1d, 0x91, 0x57, 0xd0, 0x52, 0x07, 0xb9, 0x0a, 0x95,
0xae, 0x67, 0xdb, 0xba, 0x6b, 0x38, 0x28, 0xa6, 0xaf, 0x68, 0x65, 0xee, 0x78, 0x68, 0x38, 0x48,
0x6e, 0xc2, 0x8c, 0x6f, 0xd0, 0xc0, 0x0c, 0x4c, 0xcf, 0xd5, 0x03, 0xa3, 0xdf, 0xc8, 0x8b, 0x01,
0xb5, 0xc4, 0xb9, 0x69, 0xf4, 0xd5, 0xa7, 0x12, 0x90, 0xff, 0x31, 0x66, 0xf6, 0xdd, 0x4c, 0x30,
0x67, 0x4a, 0xfc, 0x03, 0x98, 0xf5, 0x91, 0xea, 0x51, 0xd8, 0x3a, 0xc5, 0x9d, 0x86, 0xdc, 0x94,
0x97, 0xaa, 0xab, 0x37, 0x27, 0xfc, 0x7f, 0x3c, 0x14, 0x6d, 0xc6, 0x47, 0xba, 0x16, 0xfe, 0x55,
0xc3, 0x1d, 0xf5, 0x63, 0x09, 0x66, 0xc5, 0xef, 0x61, 0xd4, 0x0e, 0xba, 0x82, 0x3a, 0xc6, 0x5d,
0x51, 0xb0, 0xa1, 0x71, 0x0c, 0x75, 0x47, 0xaa, 0x92, 0x25, 0x34, 0x7f, 0x1c, 0xa1, 0x85, 0x23,
0x08, 0x7d, 0x2e, 0xc1, 0x7c, 0x86, 0xd0, 0xf3, 0x4b, 0xac, 0x5b, 0x30, 0x8b, 0x8f, 0x7d, 0x93,
0xa2, 0xde, 0x1b, 0x52, 0x83, 0x07, 0x20, 0xc0, 0xe4, 0xb5, 0x7a, 0xe8, 0x6e, 0x45, 0x5e, 0xf2,
0x08, 0x2e, 0x8e, 0x0b, 0x60, 0x24, 0xcc, 0x35, 0xf2, 0x42, 0x87, 0xbf, 0x4d, 0xd3, 0x21, 0xe5,
0x59, 0x5b, 0x48, 0xa5, 0x48, 0xbd, 0xea, 0x2f, 0x12, 0x5c, 0x5a, 0xa3, 0x68, 0x04, 0xb8, 0xe6,
0xd9, 0x36, 0x76, 0xf9, 0x92, 0x71, 0x1e, 0xdd, 0x85, 0xb2, 0xc3, 0xfa, 0x7a, 0x30, 0xf2, 0x51,
0xe0, 0xae, 0xaf, 0x5e, 0x9b, 0xb0, 0xd6, 0x3a, 0xeb, 0x6f, 0x8e, 0x7c, 0xd4, 0x4a, 0x4e, 0xf8,
0x41, 0x54, 0xa8, 0x75, 0x93, 0xf9, 0x92, 0xca, 0x91, 0xf1, 0x71, 0x11, 0x29, 0xee, 0xb4, 0x5b,
0x02, 0xb7, 0xac, 0x85, 0x46, 0x96, 0xb5, 0xfc, 0x41, 0xd6, 0x1a, 0x50, 0xf2, 0xa9, 0xf7, 0x78,
0xd4, 0x6e, 0x09, 0xfd, 0x64, 0x2d, 0x36, 0xc9, 0xbf, 0xa0, 0xc8, 0xba, 0x03, 0x74, 0x8c, 0x46,
0x51, 0x48, 0x74, 0xf9, 0x48, 0x89, 0xee, 0xd9, 0xde, 0x96, 0x16, 0x0d, 0x54, 0x3f, 0xc8, 0xc1,
0x62, 0x8b, 0x7a, 0xfe, 0x1f, 0x1c, 0xf9, 0x3a, 0xcc, 0xa6, 0xb3, 0x87, 0xc9, 0x1f, 0x52, 0xf0,
0xd7, 0x6c, 0xcc, 0xd1, 0x41, 0xb4, 0x9c, 0xc2, 0xe5, 0x1b, 0x43, 0xab, 0x77, 0x33, 0xb6, 0xfa,
0x83, 0x04, 0x0b, 0xf7, 0x0d, 0x76, 0xa6, 0xa4, 0x24, 0x80, 0x73, 0x13, 0x01, 0xcb, 0x53, 0x00,
0xe7, 0x8f, 0x05, 0x5c, 0x38, 0x05, 0xe0, 0x9f, 0x24, 0xb8, 0xdc, 0x42, 0xd6, 0xa5, 0xe6, 0x16,
0xbe, 0x3e, 0xa8, 0x3f, 0x91, 0x60, 0xb1, 0x33, 0xf0, 0xf6, 0x5e, 0x5d, 0xc4, 0xea, 0xe7, 0x39,
0xb8, 0x18, 0xd6, 0xa6, 0x8d, 0xb8, 0x48, 0xbf, 0xa4, 0x0d, 0xda, 0x84, 0x6a, 0x72, 0x2e, 0x24,
0xdb, 0x74, 0xdc, 0x95, 0x22, 0xcd, 0x4f, 0x44, 0x5a, 0x98, 0x82, 0xb4, 0x98, 0xd5, 0xf6, 0x0d,
0xa8, 0xa7, 0x87, 0x93, 0x90, 0xb6, 0x24, 0xa4, 0xbd, 0x79, 0xb4, 0xb4, 0x09, 0x1d, 0x42, 0xd9,
0xf4, 0x5c, 0x13, 0xc2, 0x3e, 0xcb, 0xc1, 0x02, 0xaf, 0x6a, 0x7f, 0x72, 0x76, 0x72, 0xce, 0xbe,
0x93, 0x60, 0xfe, 0xbe, 0xc1, 0xce, 0x92, 0xb2, 0xb3, 0xdd, 0xfc, 0x87, 0xc1, 0x16, 0x7e, 0x33,
0xd8, 0xe7, 0x12, 0x34, 0xe2, 0x7a, 0xf7, 0x7a, 0x20, 0xe6, 0x47, 0x1a, 0xaf, 0x75, 0xaf, 0x2e,
0xda, 0x33, 0x2e, 0xee, 0x3f, 0xe6, 0x60, 0xa6, 0xed, 0x32, 0xa4, 0xc1, 0xb9, 0x21, 0xbd, 0x75,
0x38, 0xe2, 0xb0, 0x87, 0x39, 0x10, 0xcb, 0x89, 0x3a, 0x19, 0xce, 0x1b, 0xc3, 0x3e, 0xbf, 0x91,
0x26, 0xf7, 0x9b, 0xd4, 0x91, 0x6d, 0x06, 0xc2, 0x32, 0x30, 0xd6, 0x0c, 0x8c, 0xb1, 0x5a, 0xca,
0xb2, 0x7a, 0x0d, 0x20, 0x21, 0x9f, 0x35, 0xca, 0x4d, 0x79, 0x29, 0xaf, 0x8d, 0x79, 0x78, 0xa3,
0x44, 0xbd, 0xbd, 0x76, 0x8b, 0x35, 0x2a, 0x4d, 0x99, 0x37, 0x4a, 0xa1, 0x45, 0xfe, 0x0d, 0x65,
0xea, 0xed, 0xe9, 0x3d, 0x23, 0x30, 0x1a, 0x20, 0x2e, 0xd9, 0x53, 0x6e, 0x93, 0x25, 0xea, 0xed,
0xb5, 0x8c, 0xc0, 0x50, 0x9f, 0xe4, 0x60, 0xa6, 0x85, 0x36, 0x06, 0xf8, 0xfb, 0x93, 0x9e, 0x61,
0x2c, 0x3f, 0x85, 0xb1, 0xc2, 0x34, 0xc6, 0x8a, 0x87, 0x18, 0xbb, 0x01, 0x35, 0x9f, 0x9a, 0x8e,
0x41, 0x47, 0xba, 0x85, 0x23, 0xd6, 0x28, 0x09, 0xde, 0xaa, 0x91, 0xef, 0x01, 0x8e, 0x98, 0xfa,
0x42, 0x82, 0x99, 0x0e, 0x1a, 0xb4, 0x3b, 0x38, 0x37, 0x1a, 0xc6, 0xe2, 0x97, 0xb3, 0xf1, 0x4f,
0xbf, 0x43, 0xff, 0x1d, 0x14, 0x8a, 0x6c, 0x68, 0x07, 0x7a, 0x4a, 0x4e, 0x48, 0xc0, 0x6c, 0xe8,
0x5f, 0x4b, 0x28, 0x5a, 0x81, 0xc2, 0xce, 0x10, 0xe9, 0xe8, 0xf8, 0x6e, 0x22, 0x1c, 0xa7, 0x7e,
0x2b, 0x81, 0xd2, 0x19, 0xb1, 0x35, 0xcf, 0xdd, 0x36, 0xfb, 0xaf, 0x1c, 0x72, 0x02, 0x79, 0xa1,
0x57, 0xa1, 0x29, 0x2f, 0x55, 0x34, 0xf1, 0xcd, 0xb5, 0xb4, 0x70, 0xa4, 0xfb, 0x14, 0xb7, 0xcd,
0xc7, 0x18, 0xaa, 0x5d, 0xd1, 0xaa, 0x16, 0x8e, 0x36, 0x22, 0x97, 0xfa, 0x34, 0x07, 0xb5, 0x58,
0x4b, 0xce, 0xcf, 0x69, 0x00, 0xa5, 0x3d, 0x74, 0xee, 0xe4, 0x3d, 0xf4, 0xd1, 0x9d, 0xd2, 0xe4,
0x3a, 0x7a, 0x03, 0x6a, 0x42, 0x0e, 0xdd, 0xf5, 0x7a, 0x98, 0xa8, 0x5b, 0x15, 0xbe, 0x87, 0xc2,
0x95, 0x25, 0xaa, 0x78, 0x92, 0x14, 0x29, 0x1d, 0x9d, 0x22, 0x04, 0xf2, 0x03, 0x33, 0x08, 0xeb,
0x4a, 0x4d, 0x13, 0xdf, 0xea, 0xbb, 0x50, 0xdd, 0x34, 0x1d, 0xdc, 0x34, 0xbb, 0xd6, 0x3a, 0xeb,
0x9f, 0x86, 0xae, 0xf4, 0x11, 0x27, 0x97, 0x79, 0xc4, 0x99, 0x7a, 0xc2, 0xa8, 0x1f, 0x49, 0x50,
0x7a, 0x80, 0xa3, 0xd5, 0x0e, 0xf6, 0x05, 0x77, 0xbc, 0x9e, 0xc5, 0x0f, 0x2b, 0xc2, 0x20, 0xd7,
0xa1, 0x3a, 0xb6, 0x83, 0xa3, 0xc9, 0x21, 0xdd, 0xc0, 0xc7, 0x1c, 0x61, 0x97, 0xa1, 0x6c, 0x32,
0x7d, 0xd7, 0xb0, 0xcd, 0x9e, 0xe0, 0xbe, 0xac, 0x95, 0x4c, 0xf6, 0x16, 0x37, 0x79, 0xed, 0x48,
0x4a, 0x76, 0x98, 0x69, 0xb2, 0x36, 0xe6, 0x51, 0x1f, 0x01, 0x44, 0xa1, 0x71, 0x6a, 0x12, 0x65,
0xa5, 0x71, 0x65, 0xff, 0x03, 0x25, 0x0b, 0x47, 0xab, 0x0c, 0xfb, 0x8d, 0x9c, 0x28, 0xbc, 0x93,
0xf8, 0x8a, 0x66, 0xd2, 0xe2, 0xe1, 0xea, 0x87, 0xe1, 0x93, 0x1c, 0x5f, 0x8c, 0xe7, 0x10, 0xcb,
0x1e, 0x29, 0xd2, 0xc1, 0x23, 0xe5, 0x3a, 0x54, 0x1d, 0x74, 0x3c, 0x3a, 0xd2, 0x99, 0xb9, 0x8f,
0x31, 0x0d, 0xa1, 0xab, 0x63, 0xee, 0x23, 0x07, 0xea, 0x0e, 0x1d, 0x9d, 0x7a, 0x7b, 0x2c, 0xde,
0x6a, 0xee, 0xd0, 0xd1, 0xbc, 0x3d, 0x46, 0xfe, 0x01, 0x73, 0x14, 0xbb, 0xe8, 0x06, 0xf6, 0x48,
0x77, 0xbc, 0x9e, 0xb9, 0x6d, 0x62, 0x4c, 0x86, 0x12, 0xff, 0xb0, 0x1e, 0xf9, 0xd5, 0x4f, 0x25,
0x98, 0x7b, 0x33, 0x4e, 0xbf, 0x0e, 0xf6, 0xc3, 0xe0, 0xce, 0x21, 0x31, 0xfe, 0x2b, 0xf0, 0xea,
0x7c, 0xe3, 0xb0, 0xe3, 0x9f, 0xe8, 0x12, 0x9e, 0xb4, 0x32, 0x8b, 0x82, 0xba, 0xfd, 0x7d, 0x0e,
0x4a, 0xd1, 0x72, 0xa4, 0x02, 0x05, 0xeb, 0xa1, 0xe7, 0xa2, 0x72, 0x81, 0x2c, 0xc2, 0x9c, 0x75,
0xf0, 0x89, 0x48, 0xe9, 0x91, 0x79, 0x98, 0xb5, 0xb2, 0xaf, 0x27, 0x0a, 0x12, 0x02, 0x75, 0x2b,
0xf3, 0x78, 0xa0, 0x6c, 0x93, 0x4b, 0x30, 0x6f, 0x1d, 0xee, 0xaf, 0x15, 0x9e, 0x02, 0x8a, 0x95,
0x6d, 0x41, 0x99, 0x32, 0x10, 0x53, 0xfc, 0x1f, 0x83, 0xa4, 0x96, 0x32, 0xc5, 0x24, 0x8b, 0xa0,
0x58, 0x07, 0x3a, 0x41, 0xe5, 0x0b, 0x89, 0xcc, 0x43, 0xdd, 0xca, 0xb4, 0x3a, 0xca, 0x97, 0x12,
0x21, 0x30, 0x63, 0x8d, 0xdf, 0xe5, 0x95, 0xaf, 0x24, 0x72, 0x09, 0x88, 0x75, 0xe8, 0xca, 0xab,
0x7c, 0x2d, 0x91, 0x05, 0x98, 0xb5, 0x32, 0x37, 0x43, 0xa6, 0x7c, 0x23, 0x91, 0x1a, 0x94, 0xac,
0xf0, 0xfa, 0xa4, 0xbc, 0x27, 0x0b, 0x2b, 0x3c, 0xd7, 0x95, 0xf7, 0x43, 0x2b, 0x2c, 0x89, 0xca,
0x0b, 0x59, 0x2c, 0x36, 0x5e, 0x20, 0x95, 0x9f, 0x65, 0x52, 0x87, 0x8a, 0x15, 0x17, 0x01, 0xe5,
0xb3, 0x8a, 0x58, 0xfc, 0x50, 0x06, 0x28, 0xcf, 0x2a, 0xb7, 0xef, 0x42, 0x39, 0x7e, 0x6c, 0x25,
0x00, 0xc5, 0x75, 0x83, 0x05, 0x48, 0x95, 0x0b, 0xfc, 0x5b, 0x43, 0xa3, 0x87, 0x54, 0x91, 0xf8,
0xf7, 0xdb, 0xd4, 0xe4, 0xfe, 0x1c, 0xd7, 0x64, 0x83, 0xd7, 0x39, 0x45, 0xbe, 0xd7, 0x7a, 0xe7,
0x5e, 0xdf, 0x0c, 0x06, 0xc3, 0x2d, 0x5e, 0x37, 0x57, 0xf6, 0x4d, 0xdb, 0x36, 0xf7, 0x03, 0xec,
0x0e, 0x56, 0x42, 0xc1, 0xff, 0xd9, 0x33, 0x59, 0x40, 0xcd, 0xad, 0x61, 0x80, 0xbd, 0x95, 0x58,
0xf6, 0x15, 0x91, 0x05, 0x89, 0xe9, 0x6f, 0x6d, 0x15, 0x85, 0xe7, 0xce, 0xaf, 0x01, 0x00, 0x00,
0xff, 0xff, 0x9f, 0x3a, 0x8e, 0x13, 0xdd, 0x18, 0x00, 0x00,
// 1701 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x58, 0xcd, 0x6f, 0x23, 0x49,
0x15, 0xdf, 0xee, 0xf6, 0x47, 0xfc, 0xec, 0x38, 0x3d, 0x95, 0x64, 0xc6, 0xb3, 0x8b, 0x76, 0x32,
0x3d, 0x88, 0x0d, 0x8b, 0x48, 0x20, 0xc3, 0x81, 0xbd, 0x41, 0x62, 0xc1, 0x9a, 0x21, 0xa3, 0xd0,
0x8e, 0x16, 0x09, 0xad, 0xd4, 0xea, 0xd8, 0x2f, 0x76, 0xa9, 0x3f, 0x53, 0xd5, 0x9e, 0x8c, 0xe7,
0xc0, 0x69, 0xce, 0x08, 0x84, 0x38, 0x70, 0x40, 0xf0, 0x17, 0xac, 0x58, 0xf8, 0x27, 0xf8, 0x3a,
0xf1, 0x5f, 0xc0, 0x81, 0x95, 0x60, 0x39, 0x20, 0x2e, 0xa8, 0xaa, 0xfa, 0xc3, 0x9d, 0xd8, 0xce,
0x88, 0x64, 0x96, 0x41, 0xbb, 0xb7, 0xaa, 0xd7, 0xd5, 0x55, 0xef, 0xf7, 0xfb, 0x55, 0xbd, 0xaa,
0xf7, 0x80, 0xd0, 0x30, 0x41, 0x16, 0xba, 0xbe, 0x13, 0xf0, 0xd1, 0x4e, 0xcc, 0xa2, 0x24, 0x22,
0x9b, 0x01, 0xf5, 0x9f, 0x4c, 0xb8, 0xea, 0xed, 0x64, 0x03, 0x5e, 0x6f, 0x0d, 0xa2, 0x20, 0x88,
0x42, 0x65, 0x7e, 0xfd, 0x16, 0x47, 0xf6, 0x84, 0x0e, 0xb0, 0xf8, 0xcf, 0x0a, 0xa1, 0xd1, 0xeb,
0xda, 0x78, 0x36, 0x41, 0x9e, 0x90, 0xdb, 0x50, 0x8b, 0x11, 0x59, 0xaf, 0xdb, 0xd1, 0xb6, 0xb4,
0x6d, 0xc3, 0x4e, 0x7b, 0xe4, 0x21, 0x54, 0x58, 0xe4, 0x63, 0x47, 0xdf, 0xd2, 0xb6, 0xdb, 0x7b,
0xf7, 0x76, 0xe6, 0xae, 0xb5, 0x73, 0x84, 0xc8, 0xec, 0xc8, 0x47, 0x5b, 0x0e, 0x26, 0x1b, 0x50,
0x1d, 0x44, 0x93, 0x30, 0xe9, 0x18, 0x5b, 0xda, 0xf6, 0xaa, 0xad, 0x3a, 0xd6, 0x08, 0x40, 0xac,
0xc7, 0xe3, 0x28, 0xe4, 0x48, 0x1e, 0x42, 0x8d, 0x27, 0x6e, 0x32, 0xe1, 0x72, 0xc1, 0xe6, 0xde,
0x1b, 0xe5, 0xa9, 0x53, 0xe7, 0xfb, 0x72, 0x88, 0x9d, 0x0e, 0x25, 0x6d, 0xd0, 0x7b, 0x5d, 0xe9,
0x8b, 0x61, 0xeb, 0xbd, 0xee, 0x82, 0x85, 0x22, 0x80, 0x63, 0x1e, 0x7d, 0x82, 0xc8, 0x9e, 0x40,
0x53, 0x2e, 0x78, 0x1d, 0x68, 0x9f, 0x83, 0x46, 0x42, 0x03, 0xe4, 0x89, 0x1b, 0xc4, 0xd2, 0xa7,
0x8a, 0x5d, 0x18, 0x16, 0xac, 0xfb, 0x5c, 0x83, 0x56, 0x1f, 0x47, 0x85, 0x8a, 0xf9, 0x30, 0x6d,
0x66, 0x98, 0x98, 0x7a, 0x30, 0x76, 0xc3, 0x10, 0xfd, 0x94, 0xbc, 0xaa, 0x5d, 0x18, 0xc8, 0x1b,
0xd0, 0x18, 0x44, 0xbe, 0xef, 0x84, 0x6e, 0x80, 0x72, 0xfa, 0x86, 0xbd, 0x22, 0x0c, 0x8f, 0xdd,
0x00, 0xc9, 0x03, 0x58, 0x8d, 0x5d, 0x96, 0xd0, 0x84, 0x46, 0xa1, 0x93, 0xb8, 0xa3, 0x4e, 0x45,
0x0e, 0x68, 0xe5, 0xc6, 0x63, 0x77, 0x64, 0x7d, 0xa0, 0x01, 0xf9, 0x26, 0xe7, 0x74, 0x14, 0x96,
0x9c, 0xb9, 0x51, 0xe2, 0x1f, 0xc1, 0x5a, 0x8c, 0xcc, 0x49, 0xdd, 0x76, 0x18, 0x9e, 0x75, 0x8c,
0x2d, 0x63, 0xbb, 0xb9, 0xf7, 0x60, 0xc1, 0xff, 0xb3, 0xae, 0xd8, 0xab, 0x31, 0xb2, 0x03, 0xf5,
0xab, 0x8d, 0x67, 0xd6, 0x2f, 0x34, 0x58, 0x93, 0xdf, 0x95, 0xd7, 0x01, 0x86, 0x92, 0x3a, 0x2e,
0x4c, 0xa9, 0xb3, 0xaa, 0x73, 0x05, 0x75, 0x73, 0x55, 0x29, 0x13, 0x5a, 0xb9, 0x8a, 0xd0, 0xea,
0x1c, 0x42, 0x3f, 0xd2, 0x60, 0xbd, 0x44, 0xe8, 0xcb, 0xdb, 0x58, 0x6f, 0xc1, 0x1a, 0x3e, 0x8d,
0x29, 0x43, 0x67, 0x38, 0x61, 0xae, 0x70, 0x40, 0x82, 0xa9, 0xd8, 0x6d, 0x65, 0xee, 0xa6, 0x56,
0xf2, 0x3e, 0xdc, 0x9e, 0x15, 0xc0, 0xcd, 0x99, 0xeb, 0x54, 0xa4, 0x0e, 0x5f, 0x58, 0xa6, 0x43,
0xc1, 0xb3, 0xbd, 0x51, 0x48, 0x51, 0x58, 0xad, 0x7f, 0x69, 0x70, 0xe7, 0x80, 0xa1, 0x9b, 0xe0,
0x41, 0xe4, 0xfb, 0x38, 0x10, 0x4b, 0x66, 0xfb, 0xe8, 0x1d, 0x58, 0x09, 0xf8, 0xc8, 0x49, 0xa6,
0x31, 0x4a, 0xdc, 0xed, 0xbd, 0x37, 0x17, 0xac, 0x75, 0xc8, 0x47, 0xc7, 0xd3, 0x18, 0xed, 0x7a,
0xa0, 0x1a, 0xc4, 0x82, 0xd6, 0x20, 0x9f, 0x2f, 0x8f, 0x1c, 0x25, 0x9b, 0x10, 0x91, 0xe1, 0x59,
0xaf, 0x2b, 0x71, 0x1b, 0xb6, 0xea, 0x94, 0x59, 0xab, 0x5c, 0x64, 0xad, 0x03, 0xf5, 0x98, 0x45,
0x4f, 0xa7, 0xbd, 0xae, 0xd4, 0xcf, 0xb0, 0xb3, 0x2e, 0xf9, 0x2a, 0xd4, 0xf8, 0x60, 0x8c, 0x81,
0xdb, 0xa9, 0x49, 0x89, 0xee, 0xce, 0x95, 0x68, 0xdf, 0x8f, 0x4e, 0xec, 0x74, 0xa0, 0xf5, 0x53,
0x1d, 0x36, 0xbb, 0x2c, 0x8a, 0xff, 0xcf, 0x91, 0x1f, 0xc2, 0x5a, 0x31, 0xbb, 0xda, 0xfc, 0x8a,
0x82, 0xcf, 0x97, 0x7d, 0x4e, 0x2f, 0xa2, 0x9d, 0x02, 0xae, 0x38, 0x18, 0x76, 0x7b, 0x50, 0xea,
0x5b, 0x7f, 0xd3, 0x60, 0xe3, 0x5d, 0x97, 0xdf, 0x28, 0x29, 0x39, 0x60, 0x7d, 0x21, 0x60, 0x63,
0x09, 0xe0, 0xca, 0x95, 0x80, 0xab, 0xd7, 0x00, 0xfc, 0x0f, 0x0d, 0xee, 0x76, 0x91, 0x0f, 0x18,
0x3d, 0xc1, 0x4f, 0x0f, 0xea, 0x5f, 0x69, 0xb0, 0xd9, 0x1f, 0x47, 0xe7, 0xaf, 0x2e, 0x62, 0xeb,
0xb7, 0x3a, 0xdc, 0x56, 0xb1, 0xe9, 0x28, 0x0b, 0xd2, 0x9f, 0xd0, 0x01, 0xdd, 0x82, 0x66, 0x7e,
0x2f, 0xe4, 0xc7, 0x74, 0xd6, 0x54, 0x20, 0xad, 0x2c, 0x44, 0x5a, 0x5d, 0x82, 0xb4, 0x56, 0xd6,
0xf6, 0x3b, 0xd0, 0x2e, 0x2e, 0x27, 0x29, 0x6d, 0x5d, 0x4a, 0xfb, 0x60, 0xbe, 0xb4, 0x39, 0x1d,
0x52, 0xd9, 0xe2, 0x5e, 0x93, 0xc2, 0x7e, 0xa8, 0xc3, 0x86, 0x88, 0x6a, 0x9f, 0x71, 0xf6, 0xe2,
0x9c, 0xfd, 0x55, 0x83, 0xf5, 0x77, 0x5d, 0x7e, 0x93, 0x94, 0xdd, 0xec, 0xe1, 0xbf, 0x0c, 0xb6,
0xfa, 0x5f, 0x83, 0xfd, 0x48, 0x83, 0x4e, 0x16, 0xef, 0x3e, 0x1d, 0x88, 0xc5, 0x95, 0x26, 0x62,
0xdd, 0xab, 0x8b, 0xf6, 0x86, 0x83, 0xfb, 0xdf, 0x75, 0x58, 0xed, 0x85, 0x1c, 0x59, 0xf2, 0xd2,
0x90, 0xbe, 0x75, 0xd9, 0x63, 0x95, 0xc3, 0x5c, 0xf0, 0xe5, 0x85, 0x32, 0x19, 0xc1, 0x1b, 0xc7,
0x91, 0x78, 0x91, 0xe6, 0xef, 0x9b, 0xc2, 0x50, 0x4e, 0x06, 0x54, 0x18, 0x98, 0x49, 0x06, 0x66,
0x58, 0xad, 0x97, 0x59, 0x7d, 0x13, 0x20, 0x27, 0x9f, 0x77, 0x56, 0xb6, 0x8c, 0xed, 0x8a, 0x3d,
0x63, 0x11, 0x89, 0x12, 0x8b, 0xce, 0x7b, 0x5d, 0xde, 0x69, 0x6c, 0x19, 0x22, 0x51, 0x52, 0x3d,
0xf2, 0x35, 0x58, 0x61, 0xd1, 0xb9, 0x33, 0x74, 0x13, 0xb7, 0x03, 0xf2, 0x91, 0xbd, 0xe4, 0x35,
0x59, 0x67, 0xd1, 0x79, 0xd7, 0x4d, 0x5c, 0xeb, 0xb9, 0x0e, 0xab, 0x5d, 0xf4, 0x31, 0xc1, 0xff,
0x3d, 0xe9, 0x25, 0xc6, 0x2a, 0x4b, 0x18, 0xab, 0x2e, 0x63, 0xac, 0x76, 0x89, 0xb1, 0xfb, 0xd0,
0x8a, 0x19, 0x0d, 0x5c, 0x36, 0x75, 0x3c, 0x9c, 0xf2, 0x4e, 0x5d, 0xf2, 0xd6, 0x4c, 0x6d, 0x8f,
0x70, 0xca, 0xad, 0x8f, 0x35, 0x58, 0xed, 0xa3, 0xcb, 0x06, 0xe3, 0x97, 0x46, 0xc3, 0x8c, 0xff,
0x46, 0xd9, 0xff, 0xe5, 0x6f, 0xe8, 0x2f, 0x82, 0xc9, 0x90, 0x4f, 0xfc, 0xc4, 0x29, 0xc8, 0x51,
0x04, 0xac, 0x29, 0xfb, 0x41, 0x4e, 0xd1, 0x2e, 0x54, 0xcf, 0x26, 0xc8, 0xa6, 0x57, 0x67, 0x13,
0x6a, 0x9c, 0xf5, 0x67, 0x0d, 0xcc, 0xfe, 0x94, 0x1f, 0x44, 0xe1, 0x29, 0x1d, 0xbd, 0x72, 0xc8,
0x09, 0x54, 0xa4, 0x5e, 0xd5, 0x2d, 0x63, 0xbb, 0x61, 0xcb, 0xb6, 0xd0, 0xd2, 0xc3, 0xa9, 0x13,
0x33, 0x3c, 0xa5, 0x4f, 0x51, 0xa9, 0xdd, 0xb0, 0x9b, 0x1e, 0x4e, 0x8f, 0x52, 0x93, 0xf5, 0x81,
0x0e, 0xad, 0x4c, 0x4b, 0xc1, 0xcf, 0x75, 0x00, 0x15, 0x39, 0xb4, 0xfe, 0xe2, 0x39, 0xf4, 0xfc,
0x4c, 0x69, 0x71, 0x1c, 0xbd, 0x0f, 0x2d, 0x29, 0x87, 0x13, 0x46, 0x43, 0xcc, 0xd5, 0x6d, 0x4a,
0xdb, 0x63, 0x69, 0x2a, 0x13, 0x55, 0x7b, 0x91, 0x2d, 0x52, 0x9f, 0xbf, 0x45, 0x08, 0x54, 0xc6,
0x34, 0x51, 0x71, 0xa5, 0x65, 0xcb, 0xb6, 0xf5, 0x43, 0x68, 0x1e, 0xd3, 0x00, 0x8f, 0xe9, 0xc0,
0x3b, 0xe4, 0xa3, 0xeb, 0xd0, 0x55, 0x14, 0x71, 0xf4, 0x52, 0x11, 0x67, 0xe9, 0x0d, 0x63, 0xfd,
0x5c, 0x83, 0xfa, 0x23, 0x9c, 0xee, 0xf5, 0x71, 0x24, 0xb9, 0x13, 0xf1, 0x2c, 0x2b, 0xac, 0xc8,
0x0e, 0xb9, 0x07, 0xcd, 0x99, 0x13, 0x9c, 0x4e, 0x0e, 0xc5, 0x01, 0xbe, 0xe2, 0x0a, 0xbb, 0x0b,
0x2b, 0x94, 0x3b, 0x4f, 0x5c, 0x9f, 0x0e, 0x25, 0xf7, 0x2b, 0x76, 0x9d, 0xf2, 0xf7, 0x44, 0x57,
0xc4, 0x8e, 0x3c, 0x64, 0xab, 0x9d, 0x66, 0xd8, 0x33, 0x16, 0xeb, 0x7d, 0x80, 0xd4, 0x35, 0x41,
0x4d, 0xae, 0xac, 0x36, 0xab, 0xec, 0xd7, 0xa1, 0xee, 0xe1, 0x74, 0x8f, 0xe3, 0xa8, 0xa3, 0xcb,
0xc0, 0xbb, 0x88, 0xaf, 0x74, 0x26, 0x3b, 0x1b, 0x6e, 0xfd, 0x52, 0x83, 0xc6, 0x77, 0x23, 0x77,
0xd8, 0x0b, 0x87, 0xf8, 0xf4, 0x3a, 0xc4, 0x97, 0xae, 0x22, 0xfd, 0xe2, 0x55, 0xd4, 0x81, 0xfa,
0x29, 0x45, 0x7f, 0x58, 0x1c, 0xc0, 0xb4, 0x2b, 0x88, 0xa5, 0x62, 0x6d, 0x27, 0x76, 0x93, 0x31,
0x97, 0xc5, 0x99, 0x86, 0x0d, 0xd2, 0x74, 0x24, 0x2c, 0xd6, 0x73, 0x0d, 0x40, 0x7a, 0x27, 0xf6,
0x38, 0x27, 0x5d, 0x68, 0x65, 0xe3, 0x99, 0x1b, 0xf0, 0x8e, 0x26, 0xf1, 0xde, 0x9f, 0x7b, 0x2a,
0x1e, 0xe1, 0xf4, 0x3d, 0xd7, 0x9f, 0xe0, 0x91, 0x4b, 0x99, 0xdd, 0x4c, 0xe7, 0x14, 0x7f, 0x91,
0xaf, 0xc0, 0x46, 0x38, 0x09, 0x1c, 0x86, 0xbe, 0x9b, 0xe0, 0xd0, 0x49, 0x1d, 0xe5, 0xa9, 0xe3,
0x24, 0x9c, 0x04, 0xb6, 0xfa, 0xd4, 0x4f, 0xbf, 0x58, 0x3f, 0xd2, 0x00, 0xbe, 0x25, 0x7c, 0x56,
0x6e, 0x5c, 0x7c, 0xda, 0x6b, 0x73, 0x9e, 0xf6, 0x33, 0xa0, 0xf5, 0x32, 0xe8, 0xfd, 0x0c, 0xb4,
0x38, 0xaf, 0x3c, 0xad, 0x0c, 0xde, 0x5f, 0x40, 0x75, 0x01, 0x3e, 0xe5, 0x45, 0xb6, 0xad, 0x9f,
0xa9, 0x62, 0xaa, 0xf0, 0x4e, 0xb9, 0x54, 0x52, 0x40, 0xbb, 0xa8, 0xc0, 0x3d, 0x68, 0x06, 0x18,
0x44, 0x6c, 0xea, 0x70, 0xfa, 0x0c, 0xb3, 0x0d, 0xac, 0x4c, 0x7d, 0xfa, 0x0c, 0xc5, 0x16, 0x95,
0x94, 0x44, 0xe7, 0x3c, 0xd3, 0x48, 0xd0, 0x10, 0x9d, 0x73, 0xf2, 0x25, 0xb8, 0xc5, 0x70, 0x80,
0x61, 0xe2, 0x4f, 0x9d, 0x20, 0x1a, 0xd2, 0x53, 0x8a, 0xd9, 0x36, 0x36, 0xb3, 0x0f, 0x87, 0xa9,
0xdd, 0xfa, 0x8b, 0x06, 0xed, 0xef, 0x65, 0x81, 0x43, 0x79, 0xf6, 0x12, 0xce, 0xf3, 0x37, 0x24,
0xd8, 0x12, 0x7f, 0x4b, 0x2a, 0xab, 0x39, 0x49, 0xf6, 0x0a, 0xc7, 0x91, 0x72, 0x6a, 0x1f, 0x9a,
0x52, 0x8e, 0x74, 0x8e, 0xca, 0x52, 0x0d, 0x0a, 0xe5, 0x6d, 0x38, 0xcd, 0xdb, 0x6f, 0xff, 0x5b,
0x87, 0x7a, 0xea, 0x32, 0x69, 0x40, 0xd5, 0x7b, 0x1c, 0x85, 0x68, 0xbe, 0x46, 0x36, 0xe1, 0x96,
0x77, 0xb1, 0x3a, 0x68, 0x0e, 0xc9, 0x3a, 0xac, 0x79, 0xe5, 0xc2, 0x99, 0x89, 0x84, 0x40, 0xdb,
0x2b, 0xd5, 0x8d, 0xcc, 0x53, 0x72, 0x07, 0xd6, 0xbd, 0xcb, 0xa5, 0x15, 0x53, 0x9c, 0x7e, 0xd3,
0x2b, 0x57, 0x1f, 0xb8, 0x39, 0x96, 0x53, 0x7c, 0x1b, 0x93, 0xfc, 0x1a, 0xe5, 0x26, 0x25, 0x9b,
0x60, 0x7a, 0x17, 0x8a, 0x00, 0xe6, 0xef, 0x34, 0xb2, 0x0e, 0x6d, 0xaf, 0x94, 0xe5, 0x9a, 0xbf,
0xd7, 0x08, 0x81, 0x55, 0x6f, 0x36, 0x8d, 0x33, 0xff, 0xa0, 0x91, 0x3b, 0x40, 0xbc, 0x4b, 0xd9,
0x8e, 0xf9, 0x47, 0x8d, 0x6c, 0xc0, 0x9a, 0x57, 0x4a, 0x0a, 0xb8, 0xf9, 0x27, 0x8d, 0xb4, 0xa0,
0xee, 0xa9, 0x97, 0xb3, 0xf9, 0x63, 0x43, 0xf6, 0xd4, 0x93, 0xce, 0xfc, 0x89, 0xea, 0xa9, 0xdb,
0xd0, 0xfc, 0xd8, 0x90, 0x8b, 0xcd, 0xde, 0x8d, 0xe6, 0x3f, 0x0d, 0xd2, 0x86, 0x86, 0x97, 0xc5,
0x7f, 0xf3, 0xd7, 0x0d, 0xb9, 0x46, 0x79, 0x0b, 0x99, 0x1f, 0x36, 0xc8, 0x1a, 0x80, 0x97, 0x87,
0x2a, 0xf3, 0x37, 0x8d, 0xb7, 0xdf, 0x81, 0x95, 0xac, 0xea, 0x4e, 0x00, 0x6a, 0x87, 0x2e, 0x4f,
0x90, 0x99, 0xaf, 0x89, 0xb6, 0x8d, 0xee, 0x10, 0x99, 0xa9, 0x89, 0xf6, 0xf7, 0x19, 0x15, 0x76,
0x5d, 0x28, 0x74, 0x24, 0x2e, 0x3c, 0xd3, 0xd8, 0xef, 0xfe, 0x60, 0x7f, 0x44, 0x93, 0xf1, 0xe4,
0x44, 0x84, 0x8a, 0xdd, 0x67, 0xd4, 0xf7, 0xe9, 0xb3, 0x04, 0x07, 0xe3, 0x5d, 0x25, 0xff, 0x97,
0x87, 0x94, 0x27, 0x8c, 0x9e, 0x4c, 0x12, 0x1c, 0xee, 0x66, 0x9b, 0x60, 0x57, 0xee, 0x89, 0xbc,
0x1b, 0x9f, 0x9c, 0xd4, 0xa4, 0xe5, 0xe1, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9a, 0xfa, 0x64,
0x88, 0xe6, 0x1a, 0x00, 0x00,
}

View File

@ -0,0 +1,50 @@
package client
import (
"context"
"github.com/zilliztech/milvus-distributed/internal/msgstream"
internalPb "github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
)
type LoadIndexClient struct {
inputStream *msgstream.MsgStream
}
func NewLoadIndexClient(ctx context.Context, pulsarAddress string, loadIndexChannels []string) *LoadIndexClient {
loadIndexStream := msgstream.NewPulsarMsgStream(ctx, 0)
loadIndexStream.SetPulsarClient(pulsarAddress)
loadIndexStream.CreatePulsarProducers(loadIndexChannels)
var input msgstream.MsgStream = loadIndexStream
return &LoadIndexClient{
inputStream: &input,
}
}
func (lic *LoadIndexClient) LoadIndex(indexPaths []string, segmentID int64, fieldID int64) error {
baseMsg := msgstream.BaseMsg{
BeginTimestamp: 0,
EndTimestamp: 0,
HashValues: []uint32{0},
}
loadIndexRequest := internalPb.LoadIndex{
MsgType: internalPb.MsgType_kLoadIndex,
SegmentID: segmentID,
FieldID: fieldID,
IndexPaths: indexPaths,
}
loadIndexMsg := &msgstream.LoadIndexMsg{
BaseMsg: baseMsg,
LoadIndex: loadIndexRequest,
}
msgPack := msgstream.MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, loadIndexMsg)
err := (*lic.inputStream).Produce(&msgPack)
return err
}
func (lic *LoadIndexClient) Close() {
(*lic.inputStream).Close()
}

View File

@ -54,7 +54,7 @@ type collectionReplica interface {
// segment
getSegmentNum() int
getSegmentStatistics() *internalpb.QueryNodeSegStats
getSegmentStatistics() *internalpb.QueryNodeStats
addSegment(segmentID UniqueID, partitionTag string, collectionID UniqueID) error
removeSegment(segmentID UniqueID) error
getSegmentByID(segmentID UniqueID) (*Segment, error)
@ -317,7 +317,7 @@ func (colReplica *collectionReplicaImpl) getSegmentNum() int {
return len(colReplica.segments)
}
func (colReplica *collectionReplicaImpl) getSegmentStatistics() *internalpb.QueryNodeSegStats {
func (colReplica *collectionReplicaImpl) getSegmentStatistics() *internalpb.QueryNodeStats {
colReplica.mu.RLock()
defer colReplica.mu.RUnlock()
@ -339,8 +339,8 @@ func (colReplica *collectionReplicaImpl) getSegmentStatistics() *internalpb.Quer
segment.recentlyModified = false
}
return &internalpb.QueryNodeSegStats{
MsgType: internalpb.MsgType_kQueryNodeSegStats,
return &internalpb.QueryNodeStats{
MsgType: internalpb.MsgType_kQueryNodeStats,
SegStats: statisticData,
}
}

View File

@ -0,0 +1,41 @@
package querynode
import (
"context"
"github.com/minio/minio-go/v7"
"github.com/zilliztech/milvus-distributed/internal/msgstream"
)
type LoadIndex struct {
ctx context.Context
cancel context.CancelFunc
client *minio.Client
replica collectionReplica
numCompletedSegmentsToFieldID map[int64]int64
msgBuffer chan msgstream.TsMsg
unsolvedMsg []msgstream.TsMsg
loadIndexMsgStream msgstream.MsgStream
queryNodeID UniqueID
}
func (li *LoadIndex) loadIndex(indexKey []string) [][]byte {
// TODO:: load dataStore client interface to load builtIndex according index key
return nil
}
func (li *LoadIndex) updateSegmentIndex(bytesIndex [][]byte, segmentID UniqueID) error {
// TODO:: dataStore return bytes index, load index to c++ segment
// TODO: how to deserialize bytes to segment index?
return nil
}
func (li *LoadIndex) sendQueryNodeStats() error {
// TODO:: update segment index type in replica, and publish queryNode segmentStats
return nil
}

View File

@ -69,12 +69,12 @@ func (sService *statsService) sendSegmentStatistic() {
sService.publicStatistic(statisticData)
}
func (sService *statsService) publicStatistic(statistic *internalpb.QueryNodeSegStats) {
var msg msgstream.TsMsg = &msgstream.QueryNodeSegStatsMsg{
func (sService *statsService) publicStatistic(statistic *internalpb.QueryNodeStats) {
var msg msgstream.TsMsg = &msgstream.QueryNodeStatsMsg{
BaseMsg: msgstream.BaseMsg{
HashValues: []uint32{0},
},
QueryNodeSegStats: *statistic,
QueryNodeStats: *statistic,
}
var msgPack = msgstream.MsgPack{