Add IdAlocator service

Signed-off-by: BossZou <yinghao.zou@zilliz.com>
This commit is contained in:
BossZou 2021-01-20 15:02:23 +08:00 committed by yefu.chen
parent 2af61fc196
commit 4588342fa1
15 changed files with 389 additions and 319 deletions

View File

@ -120,27 +120,17 @@ func (c *Client) BuildIndex(columnDataPaths []string, typeParams map[string]stri
return indexID, err
}
func (c *Client) GetIndexStates(indexID UniqueID) (*indexpb.IndexStatesResponse, error) {
func (c *Client) GetIndexStates(indexIDs []UniqueID) (*indexpb.IndexStatesResponse, error) {
if c.tryConnect() != nil {
panic("DescribeIndex: failed to connect index builder")
}
ctx := context.TODO()
request := &indexpb.IndexStatesRequest{
IndexID: indexID,
}
response, err := c.client.GetIndexStates(ctx, request)
if err != nil {
return &indexpb.IndexStatesResponse{}, err
IndexID: indexIDs,
}
indexDescription := indexpb.IndexStatesResponse{
Status: &commonpb.Status{
ErrorCode: 0,
},
IndexID: indexID,
State: response.State,
}
return &indexDescription, nil
response, err := c.client.GetIndexStates(ctx, request)
return response, err
}
func (c *Client) GetIndexFilePaths(indexID UniqueID) ([]string, error) {

View File

@ -3,6 +3,7 @@ package indexnode
import (
"context"
"errors"
"log"
"time"
"github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
@ -56,14 +57,20 @@ func (b *Builder) BuildIndex(ctx context.Context, request *indexpb.BuildIndexReq
}
func (b *Builder) GetIndexStates(ctx context.Context, request *indexpb.IndexStatesRequest) (*indexpb.IndexStatesResponse, error) {
indexID := request.IndexID
ret, err := b.metaTable.GetIndexStates(indexID)
ret.Status = &commonpb.Status{ErrorCode: commonpb.ErrorCode_SUCCESS}
ret.IndexID = indexID
if err != nil {
ret.Status.ErrorCode = commonpb.ErrorCode_UNEXPECTED_ERROR
ret.Status.Reason = err.Error()
var indexStates []*indexpb.IndexInfo
for _, indexID := range request.IndexID {
indexState, err := b.metaTable.GetIndexStates(indexID)
log.Println("GetIndexStates error, err=", err)
indexStates = append(indexStates, indexState)
}
ret := &indexpb.IndexStatesResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_SUCCESS,
Reason: "",
},
States: indexStates,
}
return ret, nil
}

View File

@ -119,10 +119,10 @@ func TestBuilder_GRPC(t *testing.T) {
time.Sleep(time.Second * 3)
description, err := buildClient.GetIndexStates(indexID)
description, err := buildClient.GetIndexStates([]UniqueID{indexID})
assert.Nil(t, err)
assert.Equal(t, commonpb.IndexState_INPROGRESS, description.State)
assert.Equal(t, indexID, description.IndexID)
assert.Equal(t, commonpb.IndexState_INPROGRESS, description.States[0].State)
assert.Equal(t, indexID, description.States[0].IndexID)
indexDataPaths, err := buildClient.GetIndexFilePaths(indexID)
assert.Nil(t, err)

View File

@ -127,14 +127,20 @@ func (mt *metaTable) CompleteIndex(indexID UniqueID, dataPaths []string) error {
return nil
}
func (mt *metaTable) GetIndexStates(indexID UniqueID) (*pb.IndexStatesResponse, error) {
func (mt *metaTable) GetIndexStates(indexID UniqueID) (*pb.IndexInfo, error) {
mt.lock.Lock()
defer mt.lock.Unlock()
ret := &pb.IndexStatesResponse{}
ret := &pb.IndexInfo{
IndexID: indexID,
Reason: "",
}
meta, ok := mt.indexID2Meta[indexID]
if !ok {
return ret, errors.Errorf("index not exists with ID = " + strconv.FormatInt(indexID, 10))
ret.Reason = "index not exists with ID = " + strconv.FormatInt(indexID, 10)
ret.State = commonpb.IndexState_NONE
return ret, nil
}
ret.State = meta.State
return ret, nil
}

View File

@ -133,30 +133,30 @@ func (i *IndexService) BuildIndex(req *indexpb.BuildIndexRequest) (*indexpb.Buil
}
func (i *IndexService) GetIndexStates(req *indexpb.IndexStatesRequest) (*indexpb.IndexStatesResponse, error) {
var indexStates []*indexpb.IndexInfo
for _, indexID := range req.IndexID {
indexState := &indexpb.IndexInfo{
IndexID: indexID,
State: commonpb.IndexState_NONE,
Reason: "",
}
meta, ok := i.metaTable.indexID2Meta[indexID]
if !ok {
indexState.State = commonpb.IndexState_NONE
indexState.Reason = "index does not exists with ID = " + strconv.FormatInt(indexID, 10)
} else {
indexState.State = meta.State
}
indexStates = append(indexStates, indexState)
}
ret := &indexpb.IndexStatesResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_SUCCESS,
Reason: "",
},
State: commonpb.IndexState_FINISHED,
IndexID: req.IndexID,
States: indexStates,
}
meta, ok := i.metaTable.indexID2Meta[req.IndexID]
if !ok {
ret.Status = &commonpb.Status{
ErrorCode: commonpb.ErrorCode_BUILD_INDEX_ERROR,
Reason: "index does not exists with ID = " + strconv.FormatInt(req.IndexID, 10),
}
ret.State = commonpb.IndexState_NONE
return ret, errors.Errorf("index already exists with ID = " + strconv.FormatInt(req.IndexID, 10))
}
ret.State = meta.State
ret.IndexID = meta.IndexID
return ret, nil
}

View File

@ -137,18 +137,6 @@ func (mt *metaTable) NotifyBuildIndex(indexID UniqueID, dataPaths []string, stat
return mt.saveIndexMeta(&meta)
}
func (mt *metaTable) GetIndexDescription(indexID UniqueID) (*pb.IndexStatesResponse, error) {
mt.lock.Lock()
defer mt.lock.Unlock()
ret := &pb.IndexStatesResponse{}
meta, ok := mt.indexID2Meta[indexID]
if !ok {
return ret, errors.Errorf("index not exists with ID = " + strconv.FormatInt(indexID, 10))
}
ret.State = meta.State
return ret, nil
}
func (mt *metaTable) GetIndexFilePaths(indexID UniqueID) ([]string, error) {
mt.lock.Lock()
defer mt.lock.Unlock()

View File

@ -64,7 +64,7 @@ func (m *MockWriteNodeClient) GetInsertBinlogPaths(segmentID UniqueID) (map[Uniq
type BuildIndexClient interface {
BuildIndex(columnDataPaths []string, typeParams map[string]string, indexParams map[string]string) (UniqueID, error)
GetIndexStates(indexID UniqueID) (*indexpb.IndexStatesResponse, error)
GetIndexStates(indexIDs []UniqueID) (*indexpb.IndexStatesResponse, error)
GetIndexFilePaths(indexID UniqueID) ([]string, error)
}
@ -77,18 +77,34 @@ func (m *MockBuildIndexClient) BuildIndex(columnDataPaths []string, typeParams m
return 1, nil
}
func (m *MockBuildIndexClient) GetIndexStates(indexID UniqueID) (*indexpb.IndexStatesResponse, error) {
func (m *MockBuildIndexClient) GetIndexStates(indexIDs []UniqueID) (*indexpb.IndexStatesResponse, error) {
now := time.Now()
if now.Sub(m.buildTime).Seconds() > 2 {
return &indexpb.IndexStatesResponse{
IndexID: indexID,
State: commonpb.IndexState_FINISHED,
}, nil
ret := &indexpb.IndexStatesResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_SUCCESS,
},
}
return &indexpb.IndexStatesResponse{
IndexID: 1,
State: commonpb.IndexState_INPROGRESS,
}, nil
var indexStates []*indexpb.IndexInfo
if now.Sub(m.buildTime).Seconds() > 2 {
for _, indexID := range indexIDs {
indexState := &indexpb.IndexInfo{
State: commonpb.IndexState_FINISHED,
IndexID: indexID,
}
indexStates = append(indexStates, indexState)
}
ret.States = indexStates
return ret, nil
}
for _, indexID := range indexIDs {
indexState := &indexpb.IndexInfo{
State: commonpb.IndexState_INPROGRESS,
IndexID: indexID,
}
indexStates = append(indexStates, indexState)
}
ret.States = indexStates
return ret, nil
}
func (m *MockBuildIndexClient) GetIndexFilePaths(indexID UniqueID) ([]string, error) {

View File

@ -110,11 +110,11 @@ func (scheduler *IndexBuildScheduler) describe() error {
indexID := channelInfo.id
indexBuildInfo := channelInfo.info
for {
description, err := scheduler.client.GetIndexStates(channelInfo.id)
description, err := scheduler.client.GetIndexStates([]UniqueID{channelInfo.id})
if err != nil {
return err
}
if description.State == commonpb.IndexState_FINISHED {
if description.States[0].State == commonpb.IndexState_FINISHED {
log.Printf("build index for segment %d field %d is finished", indexBuildInfo.segmentID, indexBuildInfo.fieldID)
filePaths, err := scheduler.client.GetIndexFilePaths(indexID)
if err != nil {
@ -167,7 +167,7 @@ func (scheduler *IndexBuildScheduler) describe() error {
FieldID: indexBuildInfo.fieldID,
IndexID: indexID,
IndexParams: channelInfo.indexParams,
State: description.State,
State: description.States[0].State,
})
if err != nil {
return err

View File

@ -96,15 +96,15 @@ func TestPersistenceScheduler(t *testing.T) {
//wait flush segment request sent to build index node
time.Sleep(100 * time.Microsecond)
idxDes, err := buildIndexClient.GetIndexStates(UniqueID(1))
idxDes, err := buildIndexClient.GetIndexStates([]UniqueID{UniqueID(1)})
assert.Nil(t, err)
assert.Equal(t, commonpb.IndexState_INPROGRESS, idxDes.State)
assert.Equal(t, commonpb.IndexState_INPROGRESS, idxDes.States[0].State)
//wait build index to finish
time.Sleep(3 * time.Second)
idxDes, err = buildIndexClient.GetIndexStates(UniqueID(1))
idxDes, err = buildIndexClient.GetIndexStates([]UniqueID{UniqueID(1)})
assert.Nil(t, err)
assert.Equal(t, commonpb.IndexState_FINISHED, idxDes.State)
assert.Equal(t, commonpb.IndexState_FINISHED, idxDes.States[0].State)
}

View File

@ -1,20 +1,96 @@
package rmqmsgstream
import "github.com/zilliztech/milvus-distributed/internal/msgstream"
import (
"context"
"log"
"sync"
"sync/atomic"
"time"
"github.com/zilliztech/milvus-distributed/internal/master"
"github.com/zilliztech/milvus-distributed/internal/msgstream"
)
type RmqMsgStream struct {
isServing int64
idAllocator *master.GlobalIDAllocator
ctx context.Context
serverLoopWg sync.WaitGroup
serverLoopCtx context.Context
serverLoopCancel func()
// tso ticker
tsoTicker *time.Ticker
}
func NewRmqMsgStream() *RmqMsgStream {
//idAllocator := master.NewGlobalIDAllocator("idTimestamp", tsoutil.NewTSOKVBase([]string{""}, "singleNode/rocksmq", "gid"))
//if err := idAllocator.Initialize(); err != nil {
// return nil
//}
//
//return &RmqMsgStream{
// idAllocator: idAllocator,
//}
return nil
}
func (ms *RmqMsgStream) Start() {
func (ms *RmqMsgStream) startServerLoop(ctx context.Context) error {
ms.serverLoopCtx, ms.serverLoopCancel = context.WithCancel(ctx)
ms.serverLoopWg.Add(1)
go ms.tsLoop()
return nil
}
func (ms *RmqMsgStream) stopServerLoop() {
ms.serverLoopCancel()
ms.serverLoopWg.Wait()
}
func (ms *RmqMsgStream) tsLoop() {
defer ms.serverLoopWg.Done()
ms.tsoTicker = time.NewTicker(master.UpdateTimestampStep)
defer ms.tsoTicker.Stop()
ctx, cancel := context.WithCancel(ms.serverLoopCtx)
defer cancel()
for {
select {
case <-ms.tsoTicker.C:
if err := ms.idAllocator.UpdateID(); err != nil {
log.Println("failed to update id", err)
return
}
case <-ctx.Done():
// Server is closed and it should return nil.
log.Println("tsLoop is closed")
return
}
}
}
func (ms *RmqMsgStream) Start() {
if err := ms.startServerLoop(ms.ctx); err != nil {
return
}
atomic.StoreInt64(&ms.isServing, 1)
}
func (ms *RmqMsgStream) Close() {
if !atomic.CompareAndSwapInt64(&ms.isServing, 1, 0) {
// server is already closed
return
}
log.Print("closing server")
ms.stopServerLoop()
}
func (ms *RmqMsgStream) Produce(pack *msgstream.MsgPack) error {

View File

@ -14,17 +14,23 @@ message RegisterNodeRequest {
}
message RegisterNodeResponse {
internal.InitParams init_params = 1;
common.Status status = 1;
internal.InitParams init_params = 2;
}
message IndexStatesRequest {
int64 indexID = 1;
repeated int64 indexID = 1;
}
message IndexInfo {
common.IndexState state = 1;
int64 indexID = 2;
string Reason = 3;
}
message IndexStatesResponse {
common.Status status = 1;
common.IndexState state = 2;
int64 indexID = 3;
repeated IndexInfo states = 2;
}
message BuildIndexRequest {

View File

@ -74,7 +74,8 @@ func (m *RegisterNodeRequest) GetAddress() *commonpb.Address {
}
type RegisterNodeResponse struct {
InitParams *internalpb2.InitParams `protobuf:"bytes,1,opt,name=init_params,json=initParams,proto3" json:"init_params,omitempty"`
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
InitParams *internalpb2.InitParams `protobuf:"bytes,2,opt,name=init_params,json=initParams,proto3" json:"init_params,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -105,6 +106,13 @@ func (m *RegisterNodeResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_RegisterNodeResponse proto.InternalMessageInfo
func (m *RegisterNodeResponse) GetStatus() *commonpb.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *RegisterNodeResponse) GetInitParams() *internalpb2.InitParams {
if m != nil {
return m.InitParams
@ -113,7 +121,7 @@ func (m *RegisterNodeResponse) GetInitParams() *internalpb2.InitParams {
}
type IndexStatesRequest struct {
IndexID int64 `protobuf:"varint,1,opt,name=indexID,proto3" json:"indexID,omitempty"`
IndexID []int64 `protobuf:"varint,1,rep,packed,name=indexID,proto3" json:"indexID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -144,27 +152,81 @@ func (m *IndexStatesRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_IndexStatesRequest proto.InternalMessageInfo
func (m *IndexStatesRequest) GetIndexID() int64 {
func (m *IndexStatesRequest) GetIndexID() []int64 {
if m != nil {
return m.IndexID
}
return nil
}
type IndexInfo struct {
State commonpb.IndexState `protobuf:"varint,1,opt,name=state,proto3,enum=milvus.proto.common.IndexState" json:"state,omitempty"`
IndexID int64 `protobuf:"varint,2,opt,name=indexID,proto3" json:"indexID,omitempty"`
Reason string `protobuf:"bytes,3,opt,name=Reason,proto3" json:"Reason,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *IndexInfo) Reset() { *m = IndexInfo{} }
func (m *IndexInfo) String() string { return proto.CompactTextString(m) }
func (*IndexInfo) ProtoMessage() {}
func (*IndexInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{3}
}
func (m *IndexInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IndexInfo.Unmarshal(m, b)
}
func (m *IndexInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_IndexInfo.Marshal(b, m, deterministic)
}
func (m *IndexInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_IndexInfo.Merge(m, src)
}
func (m *IndexInfo) XXX_Size() int {
return xxx_messageInfo_IndexInfo.Size(m)
}
func (m *IndexInfo) XXX_DiscardUnknown() {
xxx_messageInfo_IndexInfo.DiscardUnknown(m)
}
var xxx_messageInfo_IndexInfo proto.InternalMessageInfo
func (m *IndexInfo) GetState() commonpb.IndexState {
if m != nil {
return m.State
}
return commonpb.IndexState_NONE
}
func (m *IndexInfo) GetIndexID() int64 {
if m != nil {
return m.IndexID
}
return 0
}
func (m *IndexInfo) GetReason() string {
if m != nil {
return m.Reason
}
return ""
}
type IndexStatesResponse struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
State commonpb.IndexState `protobuf:"varint,2,opt,name=state,proto3,enum=milvus.proto.common.IndexState" json:"state,omitempty"`
IndexID int64 `protobuf:"varint,3,opt,name=indexID,proto3" json:"indexID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
States []*IndexInfo `protobuf:"bytes,2,rep,name=states,proto3" json:"states,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *IndexStatesResponse) Reset() { *m = IndexStatesResponse{} }
func (m *IndexStatesResponse) String() string { return proto.CompactTextString(m) }
func (*IndexStatesResponse) ProtoMessage() {}
func (*IndexStatesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{3}
return fileDescriptor_a5d2036b4df73e0a, []int{4}
}
func (m *IndexStatesResponse) XXX_Unmarshal(b []byte) error {
@ -192,18 +254,11 @@ func (m *IndexStatesResponse) GetStatus() *commonpb.Status {
return nil
}
func (m *IndexStatesResponse) GetState() commonpb.IndexState {
func (m *IndexStatesResponse) GetStates() []*IndexInfo {
if m != nil {
return m.State
return m.States
}
return commonpb.IndexState_NONE
}
func (m *IndexStatesResponse) GetIndexID() int64 {
if m != nil {
return m.IndexID
}
return 0
return nil
}
type BuildIndexRequest struct {
@ -219,7 +274,7 @@ func (m *BuildIndexRequest) Reset() { *m = BuildIndexRequest{} }
func (m *BuildIndexRequest) String() string { return proto.CompactTextString(m) }
func (*BuildIndexRequest) ProtoMessage() {}
func (*BuildIndexRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{4}
return fileDescriptor_a5d2036b4df73e0a, []int{5}
}
func (m *BuildIndexRequest) XXX_Unmarshal(b []byte) error {
@ -273,7 +328,7 @@ func (m *BuildIndexResponse) Reset() { *m = BuildIndexResponse{} }
func (m *BuildIndexResponse) String() string { return proto.CompactTextString(m) }
func (*BuildIndexResponse) ProtoMessage() {}
func (*BuildIndexResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{5}
return fileDescriptor_a5d2036b4df73e0a, []int{6}
}
func (m *BuildIndexResponse) XXX_Unmarshal(b []byte) error {
@ -320,7 +375,7 @@ func (m *BuildIndexCmd) Reset() { *m = BuildIndexCmd{} }
func (m *BuildIndexCmd) String() string { return proto.CompactTextString(m) }
func (*BuildIndexCmd) ProtoMessage() {}
func (*BuildIndexCmd) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{6}
return fileDescriptor_a5d2036b4df73e0a, []int{7}
}
func (m *BuildIndexCmd) XXX_Unmarshal(b []byte) error {
@ -368,7 +423,7 @@ func (m *BuildIndexNotification) Reset() { *m = BuildIndexNotification{}
func (m *BuildIndexNotification) String() string { return proto.CompactTextString(m) }
func (*BuildIndexNotification) ProtoMessage() {}
func (*BuildIndexNotification) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{7}
return fileDescriptor_a5d2036b4df73e0a, []int{8}
}
func (m *BuildIndexNotification) XXX_Unmarshal(b []byte) error {
@ -421,7 +476,7 @@ func (m *IndexFilePathRequest) Reset() { *m = IndexFilePathRequest{} }
func (m *IndexFilePathRequest) String() string { return proto.CompactTextString(m) }
func (*IndexFilePathRequest) ProtoMessage() {}
func (*IndexFilePathRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{8}
return fileDescriptor_a5d2036b4df73e0a, []int{9}
}
func (m *IndexFilePathRequest) XXX_Unmarshal(b []byte) error {
@ -462,7 +517,7 @@ func (m *IndexFilePathsResponse) Reset() { *m = IndexFilePathsResponse{}
func (m *IndexFilePathsResponse) String() string { return proto.CompactTextString(m) }
func (*IndexFilePathsResponse) ProtoMessage() {}
func (*IndexFilePathsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{9}
return fileDescriptor_a5d2036b4df73e0a, []int{10}
}
func (m *IndexFilePathsResponse) XXX_Unmarshal(b []byte) error {
@ -521,7 +576,7 @@ func (m *IndexMeta) Reset() { *m = IndexMeta{} }
func (m *IndexMeta) String() string { return proto.CompactTextString(m) }
func (*IndexMeta) ProtoMessage() {}
func (*IndexMeta) Descriptor() ([]byte, []int) {
return fileDescriptor_a5d2036b4df73e0a, []int{10}
return fileDescriptor_a5d2036b4df73e0a, []int{11}
}
func (m *IndexMeta) XXX_Unmarshal(b []byte) error {
@ -595,6 +650,7 @@ func init() {
proto.RegisterType((*RegisterNodeRequest)(nil), "milvus.proto.index.RegisterNodeRequest")
proto.RegisterType((*RegisterNodeResponse)(nil), "milvus.proto.index.RegisterNodeResponse")
proto.RegisterType((*IndexStatesRequest)(nil), "milvus.proto.index.IndexStatesRequest")
proto.RegisterType((*IndexInfo)(nil), "milvus.proto.index.IndexInfo")
proto.RegisterType((*IndexStatesResponse)(nil), "milvus.proto.index.IndexStatesResponse")
proto.RegisterType((*BuildIndexRequest)(nil), "milvus.proto.index.BuildIndexRequest")
proto.RegisterType((*BuildIndexResponse)(nil), "milvus.proto.index.BuildIndexResponse")
@ -608,52 +664,55 @@ func init() {
func init() { proto.RegisterFile("index_service.proto", fileDescriptor_a5d2036b4df73e0a) }
var fileDescriptor_a5d2036b4df73e0a = []byte{
// 714 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xcd, 0x4e, 0xdb, 0x40,
0x10, 0x26, 0x24, 0x80, 0x32, 0x84, 0x08, 0x36, 0xa8, 0x42, 0x69, 0x51, 0xc1, 0x55, 0x4b, 0x84,
0x54, 0x07, 0x05, 0xb5, 0x3d, 0x56, 0x04, 0xd4, 0x2a, 0xaa, 0x40, 0xc8, 0x54, 0x3d, 0x50, 0x55,
0xd1, 0xda, 0x1e, 0xc8, 0xaa, 0xfe, 0xc3, 0xbb, 0x46, 0x85, 0x4b, 0x0f, 0x7d, 0x82, 0x9e, 0xfb,
0x18, 0xbd, 0xf6, 0xe1, 0x2a, 0xaf, 0xd7, 0x89, 0x4d, 0x4c, 0x02, 0xfd, 0xb9, 0x79, 0x67, 0xbf,
0x99, 0xf9, 0xe6, 0x9b, 0x9d, 0x31, 0x34, 0x98, 0x67, 0xe3, 0x97, 0x3e, 0xc7, 0xf0, 0x92, 0x59,
0xa8, 0x07, 0xa1, 0x2f, 0x7c, 0x42, 0x5c, 0xe6, 0x5c, 0x46, 0x3c, 0x39, 0xe9, 0x12, 0xd1, 0xac,
0x59, 0xbe, 0xeb, 0xfa, 0x5e, 0x62, 0x6b, 0xd6, 0x99, 0x27, 0x30, 0xf4, 0xa8, 0x93, 0x9c, 0xb5,
0xaf, 0xd0, 0x30, 0xf0, 0x9c, 0x71, 0x81, 0xe1, 0x91, 0x6f, 0xa3, 0x81, 0x17, 0x11, 0x72, 0x41,
0x76, 0xa0, 0x62, 0x52, 0x8e, 0x6b, 0xa5, 0x8d, 0x52, 0x6b, 0xb1, 0xf3, 0x48, 0xcf, 0xc5, 0x55,
0x01, 0x0f, 0xf9, 0x79, 0x97, 0x72, 0x34, 0x24, 0x92, 0xbc, 0x84, 0x05, 0x6a, 0xdb, 0x21, 0x72,
0xbe, 0x36, 0x3b, 0xc1, 0x69, 0x2f, 0xc1, 0x18, 0x29, 0x58, 0x3b, 0x85, 0xd5, 0x3c, 0x01, 0x1e,
0xf8, 0x1e, 0x47, 0xd2, 0x85, 0x45, 0xe6, 0x31, 0xd1, 0x0f, 0x68, 0x48, 0x5d, 0xae, 0x88, 0x6c,
0xea, 0x37, 0x0a, 0x54, 0xb5, 0xf4, 0x3c, 0x26, 0x8e, 0x25, 0xd0, 0x00, 0x36, 0xfc, 0xd6, 0x74,
0x20, 0xbd, 0x58, 0x83, 0x13, 0x41, 0x05, 0xf2, 0xb4, 0xb6, 0x35, 0x58, 0x90, 0xca, 0xf4, 0x0e,
0x64, 0xd4, 0xb2, 0x91, 0x1e, 0xb5, 0x1f, 0x25, 0x68, 0xe4, 0x1c, 0x14, 0x97, 0x5d, 0x98, 0xe7,
0x82, 0x8a, 0x28, 0xa5, 0xf1, 0xb0, 0xb0, 0xb4, 0x13, 0x09, 0x31, 0x14, 0x94, 0xbc, 0x80, 0xb9,
0xf8, 0x0b, 0xa5, 0x1c, 0xf5, 0xce, 0xe3, 0x42, 0x9f, 0x51, 0x36, 0x23, 0x41, 0x67, 0xd9, 0x95,
0xf3, 0xec, 0x7e, 0x95, 0x60, 0xa5, 0x1b, 0x31, 0xc7, 0x96, 0x4e, 0x69, 0x35, 0xeb, 0x00, 0x36,
0x15, 0xb4, 0x1f, 0x50, 0x31, 0x88, 0xa5, 0x2f, 0xb7, 0xaa, 0x46, 0x35, 0xb6, 0x1c, 0xc7, 0x86,
0x58, 0x46, 0x71, 0x15, 0x60, 0x2a, 0x63, 0x79, 0xa3, 0x3c, 0x2e, 0xa3, 0xe2, 0xf2, 0x0e, 0xaf,
0x3e, 0x50, 0x27, 0xc2, 0x63, 0xca, 0x42, 0x03, 0x62, 0xaf, 0x44, 0x46, 0x72, 0x00, 0xb5, 0xe4,
0xb1, 0xa9, 0x20, 0x95, 0xbb, 0x06, 0x59, 0x94, 0x6e, 0xaa, 0x19, 0x16, 0x90, 0x2c, 0xfb, 0xbf,
0x91, 0x36, 0xa3, 0xd1, 0x6c, 0x5e, 0x23, 0x13, 0x96, 0x46, 0x49, 0xf6, 0x5d, 0xfb, 0xf6, 0x66,
0x93, 0x57, 0x50, 0x0e, 0xf1, 0x42, 0x3d, 0xd6, 0xa7, 0xfa, 0xf8, 0xe4, 0xe8, 0x63, 0x62, 0x1b,
0xb1, 0x87, 0xf6, 0xbd, 0x04, 0x0f, 0x46, 0x57, 0x47, 0xbe, 0x60, 0x67, 0xcc, 0xa2, 0x82, 0xf9,
0xde, 0x3f, 0xae, 0x86, 0xb4, 0x60, 0x39, 0x11, 0xfe, 0x8c, 0x39, 0xa8, 0x3a, 0x5c, 0x96, 0x1d,
0xae, 0x4b, 0xfb, 0x1b, 0xe6, 0xa0, 0x6c, 0xb3, 0xb6, 0x03, 0xab, 0xbd, 0xac, 0x65, 0xfa, 0x5b,
0x8f, 0xab, 0xc8, 0xb9, 0xf0, 0xff, 0xd4, 0x93, 0x7b, 0x54, 0xf1, 0x73, 0x16, 0xaa, 0x92, 0xd3,
0x21, 0x0a, 0x3a, 0x1a, 0xa0, 0xd2, 0x9f, 0x0e, 0xd0, 0x0d, 0x22, 0xeb, 0x00, 0xe8, 0x5d, 0x44,
0xd8, 0x17, 0xcc, 0x45, 0x35, 0x5d, 0x55, 0x69, 0x79, 0xcf, 0x5c, 0x24, 0x4f, 0x60, 0x89, 0x5b,
0x03, 0xb4, 0x23, 0x47, 0x21, 0x2a, 0x12, 0x51, 0x4b, 0x8d, 0x12, 0xa4, 0x43, 0xc3, 0x8c, 0x7b,
0xdf, 0xb7, 0x7c, 0x37, 0x70, 0x50, 0x28, 0xe8, 0x9c, 0x84, 0xae, 0xc8, 0xab, 0x7d, 0x75, 0x23,
0xf1, 0xea, 0x95, 0xcd, 0xdf, 0xf7, 0x95, 0x15, 0xaa, 0xb6, 0x50, 0xa4, 0x5a, 0xe7, 0x5b, 0x05,
0x6a, 0x89, 0x0c, 0xc9, 0xbf, 0x80, 0x58, 0x50, 0xcb, 0xae, 0x54, 0xb2, 0x55, 0x94, 0xb6, 0x60,
0xeb, 0x37, 0x5b, 0xd3, 0x81, 0xc9, 0x13, 0xd1, 0x66, 0xc8, 0x27, 0x80, 0x11, 0x73, 0x72, 0xb7,
0xca, 0x9a, 0xcf, 0xa6, 0xc1, 0x86, 0xe1, 0x2d, 0xa8, 0xbf, 0x45, 0x91, 0x59, 0xc6, 0xa4, 0xd0,
0x77, 0x7c, 0xbd, 0x37, 0xb7, 0xa6, 0xe2, 0x86, 0x49, 0x3e, 0xc3, 0x4a, 0x9a, 0x64, 0x28, 0x27,
0x69, 0xdd, 0xea, 0x7f, 0x63, 0xb8, 0x9a, 0xdb, 0x53, 0x91, 0x3c, 0x27, 0xd8, 0xb2, 0xdc, 0x15,
0x57, 0x19, 0xd9, 0xb6, 0x27, 0xeb, 0x91, 0xdd, 0x2d, 0xcd, 0x49, 0x53, 0xa8, 0xcd, 0x74, 0x3e,
0xaa, 0xd1, 0x91, 0x1d, 0x3f, 0xca, 0x35, 0x67, 0x73, 0x72, 0x96, 0x7d, 0xd7, 0x9e, 0x12, 0xbc,
0xbb, 0x77, 0xfa, 0xfa, 0x9c, 0x89, 0x41, 0x64, 0xc6, 0x37, 0xed, 0x6b, 0xe6, 0x38, 0xec, 0x5a,
0xa0, 0x35, 0x68, 0x27, 0x5e, 0xcf, 0x6d, 0xc6, 0x45, 0xc8, 0xcc, 0x48, 0xa0, 0xdd, 0x4e, 0x7f,
0xca, 0x6d, 0x19, 0xaa, 0x2d, 0xb3, 0x05, 0xa6, 0x39, 0x2f, 0x8f, 0xbb, 0xbf, 0x03, 0x00, 0x00,
0xff, 0xff, 0x89, 0xd5, 0x9c, 0x9e, 0xb8, 0x08, 0x00, 0x00,
// 757 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x5d, 0x4f, 0xdb, 0x4a,
0x10, 0xc5, 0x38, 0x04, 0x65, 0x12, 0x22, 0xd8, 0x20, 0x14, 0xe5, 0x5e, 0x74, 0xc1, 0x57, 0x17,
0x22, 0xa4, 0xeb, 0xa0, 0x20, 0xda, 0xc7, 0x8a, 0x80, 0x5a, 0x45, 0x15, 0x08, 0xb9, 0x55, 0x1f,
0x5a, 0x55, 0x91, 0x63, 0x0f, 0x64, 0x55, 0x7f, 0x04, 0xef, 0x1a, 0x15, 0x5e, 0xaa, 0xaa, 0x3f,
0xa0, 0xea, 0x6f, 0xe9, 0x6b, 0x7f, 0x5c, 0xe5, 0xdd, 0x75, 0x12, 0x83, 0x49, 0x40, 0xd0, 0x37,
0xef, 0xee, 0x99, 0x33, 0xb3, 0xe7, 0xcc, 0xac, 0xa1, 0x46, 0x03, 0x17, 0x3f, 0xf7, 0x18, 0x46,
0x97, 0xd4, 0x41, 0x73, 0x18, 0x85, 0x3c, 0x24, 0xc4, 0xa7, 0xde, 0x65, 0xcc, 0xe4, 0xca, 0x14,
0x88, 0x46, 0xc5, 0x09, 0x7d, 0x3f, 0x0c, 0xe4, 0x5e, 0xa3, 0x4a, 0x03, 0x8e, 0x51, 0x60, 0x7b,
0x72, 0x6d, 0x7c, 0x81, 0x9a, 0x85, 0xe7, 0x94, 0x71, 0x8c, 0x4e, 0x42, 0x17, 0x2d, 0xbc, 0x88,
0x91, 0x71, 0xb2, 0x0b, 0x85, 0xbe, 0xcd, 0xb0, 0xae, 0x6d, 0x68, 0xcd, 0x72, 0xfb, 0x6f, 0x33,
0xc3, 0xab, 0x08, 0x8f, 0xd9, 0x79, 0xc7, 0x66, 0x68, 0x09, 0x24, 0x79, 0x06, 0x8b, 0xb6, 0xeb,
0x46, 0xc8, 0x58, 0x7d, 0x7e, 0x4a, 0xd0, 0x81, 0xc4, 0x58, 0x29, 0xd8, 0xf8, 0xae, 0xc1, 0x6a,
0xb6, 0x02, 0x36, 0x0c, 0x03, 0x86, 0x64, 0x0f, 0x8a, 0x8c, 0xdb, 0x3c, 0x66, 0xaa, 0x88, 0xbf,
0x72, 0xf9, 0xde, 0x08, 0x88, 0xa5, 0xa0, 0xa4, 0x03, 0x65, 0x1a, 0x50, 0xde, 0x1b, 0xda, 0x91,
0xed, 0xa7, 0x95, 0x6c, 0x9a, 0x37, 0x64, 0x51, 0x0a, 0x74, 0x03, 0xca, 0x4f, 0x05, 0xd0, 0x02,
0x3a, 0xfa, 0x36, 0x4c, 0x20, 0xdd, 0x44, 0xb9, 0x84, 0x1a, 0x59, 0xaa, 0x48, 0x1d, 0x16, 0x85,
0x9e, 0xdd, 0xa3, 0xba, 0xb6, 0xa1, 0x37, 0x75, 0x2b, 0x5d, 0x1a, 0x1c, 0x4a, 0x02, 0xdf, 0x0d,
0xce, 0x42, 0xb2, 0x0f, 0x0b, 0x49, 0x29, 0x52, 0xb9, 0x6a, 0xfb, 0x9f, 0xdc, 0xa2, 0xc7, 0xf4,
0x96, 0x44, 0x4f, 0xb2, 0x27, 0x35, 0x8f, 0xd9, 0xc9, 0x1a, 0x14, 0x2d, 0xb4, 0x59, 0x18, 0xd4,
0xf5, 0x0d, 0xad, 0x59, 0xb2, 0xd4, 0xca, 0xf8, 0xaa, 0x41, 0x2d, 0x53, 0xe6, 0x63, 0x64, 0xdb,
0x97, 0x41, 0x98, 0x28, 0xa6, 0x37, 0xcb, 0xed, 0x75, 0xf3, 0x76, 0x23, 0x99, 0xa3, 0x4b, 0x5a,
0x0a, 0x6c, 0xfc, 0xd2, 0x60, 0xa5, 0x13, 0x53, 0xcf, 0x15, 0x47, 0xa9, 0x52, 0xeb, 0x00, 0xae,
0xcd, 0xed, 0xde, 0xd0, 0xe6, 0x03, 0x49, 0x58, 0xb2, 0x4a, 0xc9, 0xce, 0x69, 0xb2, 0x91, 0x58,
0xc4, 0xaf, 0x86, 0x98, 0x5a, 0xa4, 0x8b, 0x84, 0x9b, 0xb9, 0x55, 0xbe, 0xc6, 0xab, 0x77, 0xb6,
0x17, 0xe3, 0xa9, 0x4d, 0x23, 0x0b, 0x92, 0x28, 0x69, 0x11, 0x39, 0x82, 0x8a, 0x6c, 0x7f, 0x45,
0x52, 0xb8, 0x2f, 0x49, 0x59, 0x84, 0x29, 0xa3, 0x1d, 0x20, 0x93, 0xd5, 0x3f, 0x46, 0xc0, 0x3b,
0xfd, 0x33, 0xfa, 0xb0, 0x34, 0x4e, 0x72, 0xe8, 0xbb, 0xd9, 0x46, 0xca, 0x58, 0xfd, 0x1c, 0xf4,
0x08, 0x2f, 0x54, 0xd3, 0xfe, 0x97, 0x67, 0xc1, 0x2d, 0xb1, 0xad, 0x24, 0xc2, 0xf8, 0xa1, 0xc1,
0xda, 0xf8, 0xe8, 0x24, 0xe4, 0xf4, 0x8c, 0x3a, 0x36, 0xa7, 0x61, 0xf0, 0xc4, 0xb7, 0x21, 0x4d,
0x58, 0x96, 0xc2, 0x9f, 0x51, 0x0f, 0x95, 0xc3, 0xba, 0x70, 0xb8, 0x2a, 0xf6, 0x5f, 0x52, 0x0f,
0x85, 0xcd, 0xc6, 0x2e, 0xac, 0x76, 0x27, 0x77, 0x72, 0xe7, 0x28, 0xa3, 0x54, 0x72, 0x8b, 0x4c,
0x08, 0xfb, 0x43, 0x9e, 0x3c, 0xe0, 0x16, 0x3f, 0xe7, 0xd5, 0x70, 0x1f, 0x23, 0xb7, 0x9f, 0x7e,
0xb8, 0xd7, 0x01, 0x30, 0xb8, 0x88, 0xb1, 0xc7, 0xa9, 0x8f, 0x62, 0xc0, 0x75, 0xab, 0x24, 0x76,
0xde, 0x52, 0x1f, 0xc9, 0xbf, 0xb0, 0xc4, 0x9c, 0x01, 0xba, 0xb1, 0xa7, 0x10, 0x05, 0x81, 0xa8,
0xa4, 0x9b, 0x02, 0x64, 0x42, 0xad, 0x9f, 0x78, 0xdf, 0x73, 0x42, 0x7f, 0xe8, 0x21, 0x57, 0xd0,
0x05, 0x01, 0x5d, 0x11, 0x47, 0x87, 0xea, 0x44, 0xe0, 0x55, 0x97, 0x15, 0x1f, 0xda, 0x65, 0xb9,
0xaa, 0x2d, 0xe6, 0xa9, 0xd6, 0xfe, 0x56, 0x80, 0x8a, 0x94, 0x41, 0xfe, 0x9d, 0x88, 0x03, 0x95,
0xc9, 0x37, 0x9e, 0x6c, 0xe7, 0xa5, 0xcd, 0xf9, 0x0f, 0x35, 0x9a, 0xb3, 0x81, 0xb2, 0x45, 0x8c,
0x39, 0xf2, 0x11, 0x60, 0x5c, 0x39, 0xb9, 0xdf, 0xcd, 0x1a, 0x5b, 0xb3, 0x60, 0x23, 0x7a, 0x07,
0xaa, 0xaf, 0x90, 0x4f, 0x3c, 0xb9, 0x64, 0xeb, 0xce, 0x57, 0x32, 0xf3, 0xeb, 0x68, 0x6c, 0xcf,
0xc4, 0x8d, 0x92, 0x7c, 0x82, 0x95, 0x34, 0xc9, 0x48, 0x4e, 0xd2, 0xbc, 0x33, 0xfe, 0xc6, 0x70,
0x35, 0x76, 0x66, 0x22, 0x59, 0x46, 0xb0, 0x65, 0xf1, 0x56, 0x5c, 0x4d, 0xc8, 0xb6, 0x33, 0x5d,
0x8f, 0xc9, 0xb7, 0xa5, 0x31, 0x6d, 0x0a, 0x8d, 0xb9, 0xf6, 0x07, 0x35, 0x3a, 0xc2, 0xf1, 0x93,
0x8c, 0x39, 0x9b, 0xd3, 0xb3, 0x1c, 0xfa, 0xee, 0x0c, 0xf2, 0xce, 0xc1, 0xfb, 0x17, 0xe7, 0x94,
0x0f, 0xe2, 0x7e, 0x72, 0xd2, 0xba, 0xa6, 0x9e, 0x47, 0xaf, 0x39, 0x3a, 0x83, 0x96, 0x8c, 0xfa,
0xdf, 0xa5, 0x8c, 0x47, 0xb4, 0x1f, 0x73, 0x74, 0x5b, 0xe9, 0x0f, 0xbf, 0x25, 0xa8, 0x5a, 0x22,
0xdb, 0xb0, 0xdf, 0x2f, 0x8a, 0xe5, 0xde, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4d, 0x32, 0xc8,
0x07, 0x4a, 0x09, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -20,7 +20,7 @@ message ComponentInfo {
message ComponentStates {
ComponentInfo state = 1;
repeated ComponentInfo subcomponent_states = 2;
repeated common.KeyValuePair subcomponent_states = 2;
}
message NodeInfo {

View File

@ -113,11 +113,11 @@ func (m *ComponentInfo) GetExtraInfo() []*commonpb.KeyValuePair {
}
type ComponentStates struct {
State *ComponentInfo `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
SubcomponentStates []*ComponentInfo `protobuf:"bytes,2,rep,name=subcomponent_states,json=subcomponentStates,proto3" json:"subcomponent_states,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
State *ComponentInfo `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
SubcomponentStates []*commonpb.KeyValuePair `protobuf:"bytes,2,rep,name=subcomponent_states,json=subcomponentStates,proto3" json:"subcomponent_states,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ComponentStates) Reset() { *m = ComponentStates{} }
@ -152,7 +152,7 @@ func (m *ComponentStates) GetState() *ComponentInfo {
return nil
}
func (m *ComponentStates) GetSubcomponentStates() []*ComponentInfo {
func (m *ComponentStates) GetSubcomponentStates() []*commonpb.KeyValuePair {
if m != nil {
return m.SubcomponentStates
}
@ -1497,85 +1497,85 @@ func init() {
func init() { proto.RegisterFile("internal.proto", fileDescriptor_41f4a519b878ee3b) }
var fileDescriptor_41f4a519b878ee3b = []byte{
// 1275 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0xcd, 0x6f, 0x1b, 0x45,
0x14, 0x67, 0x6d, 0xc7, 0x1f, 0xcf, 0x4e, 0x1a, 0x96, 0x7e, 0x6c, 0xa1, 0x50, 0x77, 0x29, 0x60,
0x40, 0x24, 0x55, 0x8a, 0x10, 0xe2, 0xd2, 0x26, 0x71, 0x4b, 0x57, 0x4d, 0x42, 0x98, 0x98, 0x4a,
0xf4, 0xb2, 0x1a, 0x7b, 0x27, 0xf6, 0xd0, 0xdd, 0x1d, 0x77, 0x66, 0xdc, 0xd4, 0x39, 0x73, 0x43,
0x70, 0xe3, 0xc8, 0x05, 0xf1, 0x77, 0x80, 0xc4, 0x09, 0x89, 0x2b, 0xe2, 0xc4, 0x5f, 0xc2, 0x09,
0xcd, 0xc7, 0xfa, 0x23, 0xdd, 0x46, 0x69, 0x00, 0xa1, 0x4a, 0xdc, 0x76, 0x7e, 0xf3, 0xf6, 0xed,
0xfb, 0xfd, 0xde, 0x9b, 0xdf, 0xee, 0xc2, 0x12, 0x4d, 0x25, 0xe1, 0x29, 0x8e, 0x57, 0x86, 0x9c,
0x49, 0xe6, 0x9e, 0x4b, 0x68, 0xfc, 0x68, 0x24, 0xcc, 0x6a, 0x25, 0xdb, 0x7c, 0xb9, 0xd1, 0x63,
0x49, 0xc2, 0x52, 0x03, 0xfb, 0x3f, 0x3a, 0xb0, 0xb8, 0xc9, 0x92, 0x21, 0x4b, 0x49, 0x2a, 0x83,
0x74, 0x9f, 0xb9, 0xe7, 0xa1, 0x9c, 0xb2, 0x88, 0x04, 0x6d, 0xcf, 0x69, 0x3a, 0xad, 0x22, 0xb2,
0x2b, 0xd7, 0x85, 0x12, 0x67, 0x31, 0xf1, 0x0a, 0x4d, 0xa7, 0x55, 0x43, 0xfa, 0xda, 0xbd, 0x01,
0x20, 0x24, 0x96, 0x24, 0xec, 0xb1, 0x88, 0x78, 0xc5, 0xa6, 0xd3, 0x5a, 0x5a, 0x6b, 0xae, 0xe4,
0x3e, 0x77, 0x65, 0x4f, 0x05, 0x6e, 0xb2, 0x88, 0xa0, 0x9a, 0xc8, 0x2e, 0xdd, 0x9b, 0x00, 0xe4,
0xb1, 0xe4, 0x38, 0xa4, 0xe9, 0x3e, 0xf3, 0x4a, 0xcd, 0x62, 0xab, 0xbe, 0x76, 0x65, 0x3e, 0x81,
0x2d, 0xf7, 0x2e, 0x19, 0xdf, 0xc3, 0xf1, 0x88, 0xec, 0x62, 0xca, 0x51, 0x4d, 0xdf, 0xa4, 0xca,
0xf5, 0x7f, 0x70, 0xe0, 0xcc, 0x84, 0x80, 0x7e, 0x86, 0x70, 0x3f, 0x82, 0x05, 0xfd, 0x08, 0xcd,
0xa0, 0xbe, 0x76, 0xf5, 0x29, 0x15, 0xcd, 0xf1, 0x46, 0xe6, 0x16, 0xf7, 0x33, 0x78, 0x49, 0x8c,
0xba, 0xbd, 0x6c, 0x2b, 0xd4, 0xa8, 0xf0, 0x0a, 0xba, 0xb4, 0x93, 0x65, 0x72, 0x67, 0x13, 0x98,
0x92, 0xfc, 0x7b, 0x50, 0xdd, 0x51, 0x3a, 0x2a, 0x85, 0x3f, 0x80, 0x0a, 0x8e, 0x22, 0x4e, 0x84,
0xb0, 0x05, 0x5e, 0xca, 0x65, 0xbc, 0x6e, 0x62, 0x50, 0x16, 0x9c, 0xd7, 0x01, 0xff, 0x0b, 0x80,
0x20, 0xa5, 0x72, 0x17, 0x73, 0x9c, 0x88, 0xa7, 0xf6, 0xae, 0x0d, 0x0d, 0x21, 0x31, 0x97, 0xe1,
0x50, 0xc7, 0x59, 0x36, 0x27, 0x10, 0xba, 0xae, 0x6f, 0x33, 0xd9, 0xfd, 0xab, 0x00, 0x7b, 0x92,
0xd3, 0xb4, 0xbf, 0x45, 0x85, 0x54, 0xcf, 0x7a, 0xa4, 0xe2, 0x4c, 0xb6, 0x1a, 0xb2, 0x2b, 0xff,
0x06, 0xd4, 0x3b, 0x34, 0x21, 0x1d, 0xda, 0x7b, 0xb0, 0x2d, 0xfa, 0xee, 0x35, 0x28, 0x75, 0xb1,
0x20, 0xc7, 0x32, 0xdd, 0x16, 0xfd, 0x0d, 0x2c, 0x08, 0xd2, 0x91, 0xfe, 0x1f, 0x0e, 0x5c, 0xd8,
0xe4, 0x44, 0x8f, 0x48, 0x1c, 0x93, 0x9e, 0xa4, 0x2c, 0x45, 0xe4, 0xe1, 0x88, 0x08, 0xf9, 0xec,
0xd9, 0xdc, 0x0b, 0x50, 0x89, 0xba, 0x61, 0x8a, 0x93, 0x4c, 0xb7, 0x72, 0xd4, 0xdd, 0xc1, 0x09,
0x71, 0xdf, 0x84, 0xa5, 0xde, 0x24, 0xbf, 0x42, 0xf4, 0xfc, 0xd6, 0xd0, 0x11, 0x54, 0xa9, 0x1e,
0x75, 0x83, 0xb6, 0x57, 0xd2, 0x8a, 0xea, 0x6b, 0xd7, 0x87, 0xc6, 0x34, 0x2a, 0x68, 0x7b, 0x0b,
0x7a, 0x6f, 0x0e, 0x53, 0xfa, 0x88, 0xde, 0x80, 0x24, 0xd8, 0x2b, 0x37, 0x9d, 0x56, 0x03, 0xd9,
0x95, 0xff, 0xb3, 0x03, 0xe7, 0xda, 0x9c, 0x0d, 0x9f, 0x67, 0x72, 0xfe, 0xd7, 0x05, 0x38, 0x6f,
0x7a, 0xb4, 0x8b, 0xb9, 0xa4, 0xff, 0x12, 0x8b, 0xb7, 0xe0, 0xcc, 0xf4, 0xa9, 0x26, 0x20, 0x9f,
0xc6, 0x1b, 0xb0, 0x34, 0xcc, 0xea, 0x30, 0x71, 0x25, 0x1d, 0xb7, 0x38, 0x41, 0xe7, 0xd8, 0x2e,
0x1c, 0xc3, 0xb6, 0x9c, 0xd3, 0xca, 0x26, 0xd4, 0x27, 0x89, 0x82, 0xb6, 0x57, 0xd1, 0x21, 0xb3,
0x90, 0xff, 0x55, 0x01, 0xce, 0xaa, 0xa6, 0xfe, 0xaf, 0x86, 0x52, 0xe3, 0xa7, 0x02, 0xb8, 0x66,
0x3a, 0x82, 0x34, 0x22, 0x8f, 0xff, 0x4b, 0x2d, 0x5e, 0x05, 0xd8, 0xa7, 0x24, 0x8e, 0x66, 0x75,
0xa8, 0x69, 0xe4, 0x6f, 0x69, 0xe0, 0x41, 0x45, 0x27, 0x99, 0xf0, 0xcf, 0x96, 0xca, 0x6a, 0xcd,
0x1b, 0xcd, 0x5a, 0x6d, 0xf5, 0xc4, 0x56, 0xab, 0x6f, 0xb3, 0x56, 0xfb, 0x5b, 0x01, 0x16, 0x83,
0x54, 0x10, 0x2e, 0x9f, 0x83, 0x41, 0xba, 0x04, 0x35, 0x41, 0xfa, 0x89, 0x7a, 0xfd, 0x65, 0x4a,
0x4e, 0x01, 0xb5, 0xdb, 0x1b, 0xe0, 0x34, 0x25, 0xb1, 0xd5, 0xb2, 0x86, 0xa6, 0x80, 0xfb, 0x1a,
0x80, 0xa4, 0x09, 0x11, 0x12, 0x27, 0x43, 0xe1, 0x55, 0x9a, 0xc5, 0x56, 0x09, 0xcd, 0x20, 0xca,
0x45, 0x39, 0x3b, 0x08, 0xda, 0x46, 0xc8, 0x22, 0xb2, 0x2b, 0xf7, 0x7d, 0xa8, 0x72, 0x76, 0x10,
0x46, 0x58, 0x62, 0xaf, 0xa6, 0x25, 0xbe, 0x98, 0x2b, 0xc9, 0x46, 0xcc, 0xba, 0xa8, 0xc2, 0xd9,
0x41, 0x1b, 0x4b, 0xec, 0x7f, 0xe7, 0xc0, 0xe2, 0x1e, 0xc1, 0xbc, 0x37, 0x38, 0xbd, 0xac, 0x6f,
0xc3, 0x32, 0x27, 0x62, 0x14, 0xcb, 0x70, 0x4a, 0xcb, 0xe8, 0x7b, 0xc6, 0xe0, 0x9b, 0x13, 0x72,
0xab, 0xb0, 0xf0, 0x70, 0x44, 0xf8, 0x58, 0xcb, 0x7b, 0x6c, 0x85, 0x26, 0xce, 0xff, 0x7d, 0xa6,
0x3e, 0x95, 0x4a, 0x9c, 0xa2, 0xbe, 0xeb, 0x50, 0x56, 0xdf, 0x2c, 0x23, 0xa1, 0xab, 0xaa, 0xaf,
0xbd, 0x92, 0x7b, 0xcf, 0x9e, 0x0e, 0x41, 0x36, 0x34, 0x97, 0x54, 0x31, 0x9f, 0xd4, 0x65, 0xa8,
0x27, 0x44, 0x72, 0xda, 0x0b, 0xe5, 0x78, 0x98, 0x4d, 0x04, 0x18, 0xa8, 0x33, 0x1e, 0xea, 0x33,
0x35, 0xa0, 0x52, 0x78, 0x0b, 0xcd, 0x62, 0xab, 0x81, 0xf4, 0xb5, 0xff, 0xab, 0x03, 0x8b, 0x6d,
0x12, 0x13, 0x49, 0x4e, 0x2f, 0x7c, 0xce, 0xd8, 0x16, 0x72, 0xc7, 0x76, 0x6e, 0xe2, 0x8a, 0xc7,
0x4f, 0x5c, 0xe9, 0x89, 0x89, 0xbb, 0x02, 0x8d, 0x21, 0xa7, 0x09, 0xe6, 0xe3, 0xf0, 0x01, 0x19,
0x1b, 0x1a, 0xca, 0xdf, 0x0c, 0x76, 0x97, 0x8c, 0x85, 0xff, 0xbd, 0x03, 0xd5, 0xdb, 0xf1, 0x48,
0x0c, 0x4e, 0xf5, 0x81, 0x33, 0x7f, 0x5e, 0x0a, 0x47, 0xcf, 0xcb, 0x51, 0xfb, 0x29, 0xe6, 0xd8,
0x8f, 0x0f, 0x8d, 0xc9, 0x11, 0xec, 0xe0, 0xbe, 0x6d, 0xc2, 0x1c, 0xe6, 0xff, 0xe9, 0x40, 0x6d,
0x8b, 0xe1, 0x48, 0x5b, 0xf0, 0x3f, 0x5e, 0xe5, 0x25, 0x98, 0xba, 0x68, 0xa6, 0xf1, 0xd4, 0x56,
0x67, 0xec, 0xb1, 0x34, 0x6f, 0x8f, 0x97, 0xa1, 0x4e, 0x55, 0x41, 0xe1, 0x10, 0xcb, 0x81, 0x11,
0xb7, 0x86, 0x40, 0x43, 0xbb, 0x0a, 0x51, 0xfe, 0x99, 0x05, 0x68, 0xff, 0x2c, 0x9f, 0xd8, 0x3f,
0x6d, 0x12, 0xed, 0x9f, 0x5f, 0x3a, 0xea, 0xbb, 0x38, 0x22, 0x8f, 0xd5, 0x9c, 0x3f, 0x99, 0xd4,
0x39, 0x4d, 0x52, 0xf7, 0x1a, 0x9c, 0x4d, 0x47, 0x49, 0xc8, 0x49, 0x8c, 0x25, 0x89, 0x42, 0x2b,
0x86, 0xb0, 0xe2, 0xb8, 0xe9, 0x28, 0x41, 0x66, 0x6b, 0xcf, 0xee, 0xf8, 0xdf, 0x38, 0x00, 0xb7,
0x15, 0x73, 0x53, 0xc6, 0xd1, 0xd6, 0x3a, 0xc7, 0xbf, 0x59, 0x0a, 0xf3, 0xd2, 0x6d, 0x64, 0xd2,
0xa9, 0x33, 0x2b, 0xbc, 0x62, 0x1e, 0x87, 0xc9, 0x1f, 0xc9, 0x94, 0xbc, 0x55, 0x57, 0x5f, 0xfb,
0xdf, 0x3a, 0xd0, 0xb0, 0xd5, 0x99, 0x92, 0xe6, 0xba, 0xec, 0x1c, 0xed, 0xb2, 0x3e, 0xeb, 0x09,
0xe3, 0xe3, 0x50, 0xd0, 0x43, 0x62, 0x0b, 0x02, 0x03, 0xed, 0xd1, 0x43, 0xe2, 0x5e, 0x84, 0xaa,
0x96, 0x84, 0x1d, 0x08, 0x3b, 0xa8, 0x15, 0x25, 0x03, 0x3b, 0x10, 0xee, 0xbb, 0xf0, 0x22, 0x27,
0x3d, 0x92, 0xca, 0x78, 0x1c, 0x26, 0x2c, 0xa2, 0xfb, 0x94, 0x44, 0x7a, 0x1a, 0xaa, 0x68, 0x39,
0xdb, 0xd8, 0xb6, 0xb8, 0xff, 0x8b, 0x03, 0x4b, 0x9f, 0x2a, 0x0b, 0x54, 0x3f, 0x49, 0xa6, 0xb2,
0x67, 0x9f, 0xd8, 0x9b, 0x9a, 0x8b, 0x95, 0xc7, 0xfc, 0xe2, 0xbc, 0xfe, 0xb4, 0x9f, 0xd1, 0x19,
0x0d, 0x50, 0x55, 0x90, 0xbe, 0x79, 0xe6, 0x06, 0xd4, 0xcd, 0xd7, 0xc2, 0x49, 0x24, 0x9e, 0x36,
0x16, 0x99, 0x6f, 0x0c, 0x23, 0x71, 0x04, 0xf5, 0x6d, 0xd1, 0xdf, 0x65, 0x42, 0x9f, 0x44, 0x65,
0x27, 0xd6, 0x7b, 0x8c, 0x65, 0x39, 0xfa, 0xac, 0xd4, 0x2d, 0xa6, 0x4f, 0xcb, 0x59, 0x58, 0x48,
0x44, 0x7f, 0xf2, 0x1a, 0x31, 0x0b, 0xd5, 0x99, 0x89, 0x2b, 0x69, 0x6d, 0x4b, 0x68, 0x0a, 0xbc,
0xf3, 0x21, 0xd4, 0x26, 0x3f, 0xd4, 0xee, 0x32, 0x34, 0x82, 0x9d, 0xa0, 0x13, 0xac, 0x6f, 0x05,
0xf7, 0x83, 0x9d, 0x8f, 0x97, 0x5f, 0x70, 0xeb, 0x50, 0xb9, 0x73, 0x6b, 0x7d, 0xab, 0x73, 0xe7,
0xf3, 0x65, 0xc7, 0x6d, 0x40, 0x75, 0x7d, 0x63, 0xe7, 0x13, 0xb4, 0xbd, 0xbe, 0xb5, 0x5c, 0xd8,
0xb8, 0x75, 0x7f, 0xb3, 0x4f, 0xe5, 0x60, 0xd4, 0x55, 0x22, 0xae, 0x1e, 0xd2, 0x38, 0xa6, 0x87,
0x92, 0xf4, 0x06, 0xab, 0x86, 0xe5, 0x7b, 0x11, 0x15, 0x92, 0xd3, 0xee, 0x48, 0x92, 0x68, 0x35,
0xe3, 0xba, 0xaa, 0xa9, 0x4f, 0x96, 0xc3, 0xee, 0x5a, 0xb7, 0xac, 0xa1, 0xeb, 0x7f, 0x05, 0x00,
0x00, 0xff, 0xff, 0xa4, 0x3b, 0x4f, 0xdd, 0x76, 0x10, 0x00, 0x00,
// 1272 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0x4f, 0x6f, 0x1b, 0xc5,
0x1b, 0xfe, 0xad, 0xed, 0xf8, 0xcf, 0x6b, 0x27, 0xcd, 0x6f, 0xe9, 0x9f, 0x2d, 0x14, 0xea, 0x2e,
0x05, 0x0c, 0x88, 0xa4, 0x4a, 0x11, 0x42, 0x5c, 0xda, 0x24, 0x6e, 0xe9, 0xaa, 0x49, 0x08, 0x13,
0xab, 0x12, 0xbd, 0xac, 0xc6, 0xde, 0x89, 0x3d, 0x74, 0x77, 0xc7, 0x9d, 0x99, 0x6d, 0xea, 0x9c,
0xb9, 0x21, 0xb8, 0x71, 0xe4, 0x00, 0x1f, 0x04, 0x24, 0x4e, 0x48, 0x5c, 0x11, 0x27, 0x3e, 0x09,
0x27, 0x34, 0x33, 0xbb, 0x6b, 0x3b, 0xdd, 0x44, 0x69, 0x00, 0xa1, 0x4a, 0xdc, 0x76, 0x9e, 0x79,
0xe7, 0x9d, 0xf7, 0x79, 0xe6, 0x9d, 0x67, 0x77, 0x61, 0x89, 0xc6, 0x92, 0xf0, 0x18, 0x87, 0x2b,
0x63, 0xce, 0x24, 0xb3, 0x2f, 0x44, 0x34, 0x7c, 0x92, 0x08, 0x33, 0x5a, 0xc9, 0x26, 0x5f, 0x6e,
0x0d, 0x58, 0x14, 0xb1, 0xd8, 0xc0, 0xee, 0x0f, 0x16, 0x2c, 0x6e, 0xb2, 0x68, 0xcc, 0x62, 0x12,
0x4b, 0x2f, 0xde, 0x67, 0xf6, 0x45, 0xa8, 0xc6, 0x2c, 0x20, 0x5e, 0xd7, 0xb1, 0xda, 0x56, 0xa7,
0x8c, 0xd2, 0x91, 0x6d, 0x43, 0x85, 0xb3, 0x90, 0x38, 0xa5, 0xb6, 0xd5, 0x69, 0x20, 0xfd, 0x6c,
0xdf, 0x02, 0x10, 0x12, 0x4b, 0xe2, 0x0f, 0x58, 0x40, 0x9c, 0x72, 0xdb, 0xea, 0x2c, 0xad, 0xb5,
0x57, 0x0a, 0xf7, 0x5d, 0xd9, 0x53, 0x81, 0x9b, 0x2c, 0x20, 0xa8, 0x21, 0xb2, 0x47, 0xfb, 0x36,
0x00, 0x79, 0x2a, 0x39, 0xf6, 0x69, 0xbc, 0xcf, 0x9c, 0x4a, 0xbb, 0xdc, 0x69, 0xae, 0x5d, 0x9b,
0x4f, 0x90, 0x96, 0x7b, 0x9f, 0x4c, 0x1e, 0xe0, 0x30, 0x21, 0xbb, 0x98, 0x72, 0xd4, 0xd0, 0x8b,
0x54, 0xb9, 0xee, 0x77, 0x16, 0x9c, 0xcb, 0x09, 0xe8, 0x3d, 0x84, 0xfd, 0x11, 0x2c, 0xe8, 0x2d,
0x34, 0x83, 0xe6, 0xda, 0xf5, 0x63, 0x2a, 0x9a, 0xe3, 0x8d, 0xcc, 0x12, 0x1b, 0xc1, 0x4b, 0x22,
0xe9, 0x0f, 0xb2, 0x29, 0x5f, 0xa3, 0xc2, 0x29, 0x9d, 0xb6, 0x34, 0x7b, 0x76, 0xb5, 0xa9, 0xc7,
0x7d, 0x00, 0xf5, 0x1d, 0x25, 0xa2, 0x92, 0xf7, 0x03, 0xa8, 0xe1, 0x20, 0xe0, 0x44, 0x88, 0xb4,
0xba, 0x2b, 0x85, 0x39, 0xd7, 0x4d, 0x0c, 0xca, 0x82, 0x8b, 0xe4, 0x77, 0x3f, 0x07, 0xf0, 0x62,
0x2a, 0x77, 0x31, 0xc7, 0x91, 0x38, 0xf6, 0xe0, 0xba, 0xd0, 0x12, 0x12, 0x73, 0xe9, 0x8f, 0x75,
0xdc, 0xe9, 0xa9, 0x34, 0xf5, 0x32, 0x93, 0xdd, 0xbd, 0x0e, 0xb0, 0x27, 0x39, 0x8d, 0x87, 0x5b,
0x54, 0x48, 0xb5, 0xd7, 0x13, 0x15, 0x67, 0xb2, 0x35, 0x50, 0x3a, 0x72, 0x6f, 0x41, 0xb3, 0x47,
0x23, 0xd2, 0xa3, 0x83, 0x47, 0xdb, 0x62, 0x68, 0xdf, 0x80, 0x4a, 0x1f, 0x0b, 0x72, 0x22, 0xd3,
0x6d, 0x31, 0xdc, 0xc0, 0x82, 0x20, 0x1d, 0xe9, 0xfe, 0x6e, 0xc1, 0xa5, 0x4d, 0x4e, 0x74, 0x7f,
0x84, 0x21, 0x19, 0x48, 0xca, 0x62, 0x44, 0x1e, 0x27, 0x44, 0xc8, 0xe7, 0xcf, 0x66, 0x5f, 0x82,
0x5a, 0xd0, 0xf7, 0x63, 0x1c, 0x65, 0xba, 0x55, 0x83, 0xfe, 0x0e, 0x8e, 0x88, 0xfd, 0x26, 0x2c,
0x0d, 0xf2, 0xfc, 0x0a, 0xd1, 0xcd, 0xdb, 0x40, 0x47, 0x50, 0xa5, 0x7a, 0xd0, 0xf7, 0xba, 0x4e,
0x45, 0x2b, 0xaa, 0x9f, 0x6d, 0x17, 0x5a, 0xd3, 0x28, 0xaf, 0xeb, 0x2c, 0xe8, 0xb9, 0x39, 0x4c,
0xe9, 0x23, 0x06, 0x23, 0x12, 0x61, 0xa7, 0xda, 0xb6, 0x3a, 0x2d, 0x94, 0x8e, 0xdc, 0x9f, 0x2c,
0xb8, 0xd0, 0xe5, 0x6c, 0xfc, 0x22, 0x93, 0x73, 0xbf, 0x2a, 0xc1, 0x45, 0x73, 0x46, 0xbb, 0x98,
0x4b, 0xfa, 0x0f, 0xb1, 0x78, 0x0b, 0xce, 0x4d, 0x77, 0x35, 0x01, 0xc5, 0x34, 0xde, 0x80, 0xa5,
0x71, 0x56, 0x87, 0x89, 0xab, 0xe8, 0xb8, 0xc5, 0x1c, 0x9d, 0x63, 0xbb, 0x70, 0x02, 0xdb, 0x6a,
0xc1, 0x51, 0xb6, 0xa1, 0x99, 0x27, 0xf2, 0xba, 0x4e, 0x4d, 0x87, 0xcc, 0x42, 0xee, 0x97, 0x25,
0x38, 0xaf, 0x0e, 0xf5, 0x3f, 0x35, 0x94, 0x1a, 0x3f, 0x96, 0xc0, 0x36, 0xdd, 0xe1, 0xc5, 0x01,
0x79, 0xfa, 0x6f, 0x6a, 0xf1, 0x2a, 0xc0, 0x3e, 0x25, 0x61, 0x30, 0xab, 0x43, 0x43, 0x23, 0x7f,
0x49, 0x03, 0x07, 0x6a, 0x3a, 0x49, 0xce, 0x3f, 0x1b, 0x2a, 0xab, 0x35, 0xaf, 0xb3, 0xd4, 0x6a,
0xeb, 0xa7, 0xb6, 0x5a, 0xbd, 0x2c, 0xb5, 0xda, 0x5f, 0x4b, 0xb0, 0xe8, 0xc5, 0x82, 0x70, 0xf9,
0x02, 0x34, 0xd2, 0x15, 0x68, 0x08, 0x32, 0x8c, 0xd4, 0x5b, 0x34, 0x53, 0x72, 0x0a, 0xa8, 0xd9,
0xc1, 0x08, 0xc7, 0x31, 0x09, 0x53, 0x2d, 0x1b, 0x68, 0x0a, 0xd8, 0xaf, 0x01, 0x48, 0x1a, 0x11,
0x21, 0x71, 0x34, 0x16, 0x4e, 0xad, 0x5d, 0xee, 0x54, 0xd0, 0x0c, 0xa2, 0x5c, 0x94, 0xb3, 0x03,
0xaf, 0x6b, 0x84, 0x2c, 0xa3, 0x74, 0x64, 0xbf, 0x0f, 0x75, 0xce, 0x0e, 0xfc, 0x00, 0x4b, 0xec,
0x34, 0xb4, 0xc4, 0x97, 0x0b, 0x25, 0xd9, 0x08, 0x59, 0x1f, 0xd5, 0x38, 0x3b, 0xe8, 0x62, 0x89,
0xdd, 0x6f, 0x2d, 0x58, 0xdc, 0x23, 0x98, 0x0f, 0x46, 0x67, 0x97, 0xf5, 0x6d, 0x58, 0xe6, 0x44,
0x24, 0xa1, 0xf4, 0xa7, 0xb4, 0x8c, 0xbe, 0xe7, 0x0c, 0xbe, 0x99, 0x93, 0x5b, 0x85, 0x85, 0xc7,
0x09, 0xe1, 0x13, 0x2d, 0xef, 0x89, 0x15, 0x9a, 0x38, 0xf7, 0xb7, 0x99, 0xfa, 0x54, 0x2a, 0x71,
0x86, 0xfa, 0x6e, 0x42, 0x55, 0x7d, 0xb0, 0x24, 0x42, 0x57, 0xd5, 0x5c, 0x7b, 0xa5, 0x70, 0xcd,
0x9e, 0x0e, 0x41, 0x69, 0x68, 0x21, 0xa9, 0x72, 0x31, 0xa9, 0xab, 0xd0, 0x8c, 0x88, 0xe4, 0x74,
0xe0, 0xcb, 0xc9, 0x38, 0xeb, 0x08, 0x30, 0x50, 0x6f, 0x32, 0xd6, 0x77, 0x6a, 0x44, 0xa5, 0x70,
0x16, 0xda, 0xe5, 0x4e, 0x0b, 0xe9, 0x67, 0xf7, 0x17, 0x0b, 0x16, 0xbb, 0x24, 0x24, 0x92, 0x9c,
0x5d, 0xf8, 0x82, 0xb6, 0x2d, 0x15, 0xb6, 0xed, 0x5c, 0xc7, 0x95, 0x4f, 0xee, 0xb8, 0xca, 0x33,
0x1d, 0x77, 0x0d, 0x5a, 0x63, 0x4e, 0x23, 0xcc, 0x27, 0xfe, 0x23, 0x32, 0x31, 0x34, 0x94, 0xbf,
0x19, 0xec, 0x3e, 0x99, 0x08, 0xf7, 0x7b, 0x0b, 0xea, 0x77, 0xc3, 0x44, 0x8c, 0xce, 0xf4, 0x81,
0x33, 0x7f, 0x5f, 0x4a, 0x47, 0xef, 0xcb, 0x51, 0xfb, 0x29, 0x17, 0xd8, 0x8f, 0x0b, 0xad, 0xfc,
0x0a, 0xf6, 0xf0, 0x30, 0x3d, 0x84, 0x39, 0xcc, 0xfd, 0xc3, 0x82, 0xc6, 0x16, 0xc3, 0x81, 0xb6,
0xe0, 0xbf, 0xbd, 0xca, 0x2b, 0x30, 0x75, 0xd1, 0x4c, 0xe3, 0xa9, 0xad, 0xce, 0xd8, 0x63, 0x65,
0xde, 0x1e, 0xaf, 0x42, 0x93, 0xaa, 0x82, 0xfc, 0x31, 0x96, 0x23, 0x23, 0x6e, 0x03, 0x81, 0x86,
0x76, 0x15, 0xa2, 0xfc, 0x33, 0x0b, 0xd0, 0xfe, 0x59, 0x3d, 0xb5, 0x7f, 0xa6, 0x49, 0xb4, 0x7f,
0x7e, 0x61, 0xa9, 0xef, 0xe2, 0x80, 0x3c, 0x55, 0x7d, 0xfe, 0x6c, 0x52, 0xeb, 0x2c, 0x49, 0xed,
0x1b, 0x70, 0x3e, 0x4e, 0x22, 0x9f, 0x93, 0x10, 0x4b, 0x12, 0xf8, 0xa9, 0x18, 0x22, 0x15, 0xc7,
0x8e, 0x93, 0x08, 0x99, 0xa9, 0xbd, 0x74, 0xc6, 0xfd, 0xda, 0x02, 0xb8, 0xab, 0x98, 0x9b, 0x32,
0x8e, 0x1e, 0xad, 0x75, 0xf2, 0x9b, 0xa5, 0x34, 0x2f, 0xdd, 0x46, 0x26, 0x9d, 0xba, 0xb3, 0xc2,
0x29, 0x17, 0x71, 0xc8, 0x7f, 0x6c, 0xa6, 0xe4, 0x53, 0x75, 0xf5, 0xb3, 0xfb, 0x8d, 0x05, 0xad,
0xb4, 0x3a, 0x53, 0xd2, 0xdc, 0x29, 0x5b, 0x47, 0x4f, 0x59, 0xdf, 0xf5, 0x88, 0xf1, 0x89, 0x2f,
0xe8, 0x21, 0x49, 0x0b, 0x02, 0x03, 0xed, 0xd1, 0x43, 0x62, 0x5f, 0x86, 0xba, 0x96, 0x84, 0x1d,
0x88, 0xb4, 0x51, 0x6b, 0x4a, 0x06, 0x76, 0x20, 0xec, 0x77, 0xe1, 0xff, 0x9c, 0x0c, 0x48, 0x2c,
0xc3, 0x89, 0x1f, 0xb1, 0x80, 0xee, 0x53, 0x12, 0xe8, 0x6e, 0xa8, 0xa3, 0xe5, 0x6c, 0x62, 0x3b,
0xc5, 0xdd, 0x9f, 0x2d, 0x58, 0xfa, 0x54, 0x59, 0xa0, 0xfa, 0x49, 0x32, 0x95, 0x3d, 0x7f, 0xc7,
0xde, 0xd6, 0x5c, 0x52, 0x79, 0xcc, 0x2f, 0xce, 0xeb, 0xc7, 0xfd, 0x89, 0xce, 0x68, 0x80, 0xea,
0x82, 0x0c, 0xcd, 0x9e, 0x1b, 0xd0, 0x34, 0x5f, 0x0b, 0xa7, 0x91, 0x78, 0x7a, 0xb0, 0xc8, 0x7c,
0x63, 0x18, 0x89, 0x03, 0x68, 0x6e, 0x8b, 0xe1, 0x2e, 0x13, 0xfa, 0x26, 0x2a, 0x3b, 0x49, 0xbd,
0xc7, 0x58, 0x96, 0xa5, 0xef, 0x4a, 0x33, 0xc5, 0xf4, 0x6d, 0x39, 0x0f, 0x0b, 0x91, 0x18, 0xe6,
0xaf, 0x11, 0x33, 0x50, 0x27, 0x93, 0xbb, 0x92, 0xd6, 0xb6, 0x82, 0xa6, 0xc0, 0x3b, 0x1f, 0x42,
0x23, 0xff, 0x9b, 0xb6, 0x97, 0xa1, 0xe5, 0xed, 0x78, 0x3d, 0x6f, 0x7d, 0xcb, 0x7b, 0xe8, 0xed,
0x7c, 0xbc, 0xfc, 0x3f, 0xbb, 0x09, 0xb5, 0x7b, 0x77, 0xd6, 0xb7, 0x7a, 0xf7, 0x3e, 0x5b, 0xb6,
0xec, 0x16, 0xd4, 0xd7, 0x37, 0x76, 0x3e, 0x41, 0xdb, 0xeb, 0x5b, 0xcb, 0xa5, 0x8d, 0x3b, 0x0f,
0x37, 0x87, 0x54, 0x8e, 0x92, 0xbe, 0x12, 0x71, 0xf5, 0x90, 0x86, 0x21, 0x3d, 0x94, 0x64, 0x30,
0x5a, 0x35, 0x2c, 0xdf, 0x0b, 0xa8, 0x90, 0x9c, 0xf6, 0x13, 0x49, 0x82, 0xd5, 0x8c, 0xeb, 0xaa,
0xa6, 0x9e, 0x0f, 0xc7, 0xfd, 0xb5, 0x7e, 0x55, 0x43, 0x37, 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff,
0x6b, 0x80, 0x63, 0x47, 0x73, 0x10, 0x00, 0x00,
}

View File

@ -69,20 +69,12 @@ type ConsumerGroupContext struct {
}
type RocksMQ struct {
//isServing int64
store *gorocksdb.DB
kv kv.Base
channels map[string]*Channel
cgCtxs map[string]ConsumerGroupContext
idAllocator master.IDAllocator
mu sync.Mutex
//ctx context.Context
//serverLoopWg sync.WaitGroup
//serverLoopCtx context.Context
//serverLoopCancel func()
//// tso ticker
//tsoTicker *time.Ticker
}
func NewRocksMQ(name string, idAllocator master.IDAllocator) (*RocksMQ, error) {
@ -108,76 +100,6 @@ func NewRocksMQ(name string, idAllocator master.IDAllocator) (*RocksMQ, error) {
return rmq, nil
}
//func (rmq *RocksMQ) startServerLoop(ctx context.Context) error {
// rmq.serverLoopCtx, rmq.serverLoopCancel = context.WithCancel(ctx)
//
// go rmq.tsLoop()
//
// return nil
//}
//func (rmq *RocksMQ) stopServerLoop() {
// rmq.serverLoopCancel()
// rmq.serverLoopWg.Wait()
//}
//func (rmq *RocksMQ) tsLoop() {
// defer rmq.serverLoopWg.Done()
// rmq.tsoTicker = time.NewTicker(master.UpdateTimestampStep)
// defer rmq.tsoTicker.Stop()
// ctx, cancel := context.WithCancel(rmq.serverLoopCtx)
// defer cancel()
//
// for {
// select {
// case <-rmq.tsoTicker.C:
// if err := rmq.idAllocator.UpdateID(); err != nil {
// log.Println("failed to update id", err)
// return
// }
// case <-ctx.Done():
// // Server is closed and it should return nil.
// log.Println("tsLoop is closed")
// return
// }
// }
//}
//func (rmq *RocksMQ) Start() error {
// //init idAllocator
// // TODO(yhz): id allocator, which need to etcd address and path, where
// // we hardcode about the etcd path
// rmq.idAllocator = master.NewGlobalIDAllocator("idTimestamp", tsoutil.NewTSOKVBase([]string{""}, "stand-alone/rocksmq", "gid"))
// if err := rmq.idAllocator.Initialize(); err != nil {
// return err
// }
//
// // start server loop
// if err := rmq.startServerLoop(rmq.ctx); err != nil {
// return err
// }
//
// atomic.StoreInt64(&rmq.isServing, 1)
//
// return nil
//}
//func (rmq *RocksMQ) Stop() error {
// if !atomic.CompareAndSwapInt64(&rmq.isServing, 1, 0) {
// // server is already closed
// return nil
// }
//
// log.Print("closing server")
//
// rmq.stopServerLoop()
//
// rmq.kv.Close()
// rmq.store.Close()
//
// return nil
//}
func (rmq *RocksMQ) checkKeyExist(key string) bool {
val, _ := rmq.kv.Load(key)
return val != ""