From 4af2cacb28f069bf4d04648aa3b4ac452cd1bb69 Mon Sep 17 00:00:00 2001 From: "zhenshan.cao" Date: Mon, 31 May 2021 10:32:30 +0800 Subject: [PATCH] Refactor IndexService and IndexNode: remove redundant serviceID (#5491) Signed-off-by: zhenshan.cao --- internal/indexnode/indexnode.go | 6 +- internal/indexservice/indexservice.go | 6 +- internal/indexservice/meta_table.go | 23 ++-- internal/indexservice/node_mgr.go | 12 +- internal/indexservice/priority_queue.go | 14 +-- internal/proto/index_service.proto | 4 +- internal/proto/indexpb/index_service.pb.go | 137 ++++++++++----------- 7 files changed, 91 insertions(+), 111 deletions(-) diff --git a/internal/indexnode/indexnode.go b/internal/indexnode/indexnode.go index 7af124c639..f2d1999dfa 100644 --- a/internal/indexnode/indexnode.go +++ b/internal/indexnode/indexnode.go @@ -38,10 +38,6 @@ import ( "github.com/milvus-io/milvus/internal/util/typeutil" ) -const ( - reqTimeoutInterval = time.Second * 10 -) - type UniqueID = typeutil.UniqueID type Timestamp = typeutil.Timestamp @@ -115,7 +111,7 @@ func (i *IndexNode) Init() error { Ip: Params.IP, Port: int64(Params.Port), }, - ServerID: i.session.ServerID, + NodeID: i.session.ServerID, } resp, err2 := i.serviceClient.RegisterNode(ctx, request) diff --git a/internal/indexservice/indexservice.go b/internal/indexservice/indexservice.go index d158498507..7a7c777d80 100644 --- a/internal/indexservice/indexservice.go +++ b/internal/indexservice/indexservice.go @@ -473,7 +473,7 @@ func (i *IndexService) assignmentTasksLoop() { if err := i.metaTable.UpdateVersion(indexBuildID); err != nil { log.Debug("IndexService", zap.String("build index update version err", err.Error())) } - nodeID, builderClient, nodeServerID := i.nodeClients.PeekClient() + nodeID, builderClient := i.nodeClients.PeekClient() if builderClient == nil { log.Debug("IndexService has no available IndexNode") i.assignChan <- []UniqueID{indexBuildID} @@ -493,7 +493,7 @@ func (i *IndexService) assignmentTasksLoop() { if err != nil { log.Debug("IndexService", zap.String("build index err", err.Error())) } - if err = i.metaTable.BuildIndex(indexBuildID, nodeServerID); err != nil { + if err = i.metaTable.BuildIndex(indexBuildID, nodeID); err != nil { log.Debug("IndexService", zap.String("update meta table error", err.Error())) } if resp.ErrorCode != commonpb.ErrorCode_Success { @@ -524,7 +524,7 @@ func (i *IndexService) watchNodeLoop() { case sessionutil.SessionDelEvent: serverID := event.Session.ServerID log.Debug("IndexService", zap.Any("The IndexNode crashed with ID", serverID)) - indexBuildIDs := i.nodeTasks.getTasksByLeaseKey(serverID) + indexBuildIDs := i.nodeTasks.getTasksByNodeID(serverID) i.assignChan <- indexBuildIDs i.nodeTasks.delete(serverID) } diff --git a/internal/indexservice/meta_table.go b/internal/indexservice/meta_table.go index 2e8eb4be9b..9f5e04990a 100644 --- a/internal/indexservice/meta_table.go +++ b/internal/indexservice/meta_table.go @@ -28,11 +28,6 @@ import ( "github.com/milvus-io/milvus/internal/proto/indexpb" ) -const ( - RequestTimeout = 10 * time.Second - maxTasks = 10 -) - type Meta struct { indexMeta *indexpb.IndexMeta revision int64 @@ -138,7 +133,7 @@ func (mt *metaTable) AddIndex(indexBuildID UniqueID, req *indexpb.BuildIndexRequ State: commonpb.IndexState_Unissued, IndexBuildID: indexBuildID, Req: req, - NodeServerID: 0, + NodeID: 0, Version: 0, }, revision: 0, @@ -146,7 +141,7 @@ func (mt *metaTable) AddIndex(indexBuildID UniqueID, req *indexpb.BuildIndexRequ return mt.saveIndexMeta(meta) } -func (mt *metaTable) BuildIndex(indexBuildID UniqueID, serverID int64) error { +func (mt *metaTable) BuildIndex(indexBuildID UniqueID, nodeID int64) error { mt.lock.Lock() defer mt.lock.Unlock() log.Debug("IndexService update index meta") @@ -159,7 +154,7 @@ func (mt *metaTable) BuildIndex(indexBuildID UniqueID, serverID int64) error { if meta.indexMeta.State != commonpb.IndexState_Unissued { return fmt.Errorf("can not set lease key, index with ID = %d state is %d", indexBuildID, meta.indexMeta.State) } - meta.indexMeta.NodeServerID = serverID + meta.indexMeta.NodeID = nodeID err := mt.saveIndexMeta(&meta) if err != nil { @@ -168,7 +163,7 @@ func (mt *metaTable) BuildIndex(indexBuildID UniqueID, serverID int64) error { if m == nil { return err } - m.indexMeta.NodeServerID = serverID + m.indexMeta.NodeID = nodeID return mt.saveIndexMeta(m) } err2 := retry.Retry(5, time.Millisecond*200, fn) @@ -352,14 +347,14 @@ func (mt *metaTable) GetIndexMeta(indexBuildID UniqueID) Meta { return meta } -func (mt *metaTable) GetUnassignedTasks(serverIDs []int64) [][]UniqueID { +func (mt *metaTable) GetUnassignedTasks(nodeIDs []int64) [][]UniqueID { var tasks [][]UniqueID var indexBuildIDs []UniqueID for indexBuildID, meta := range mt.indexBuildID2Meta { alive := false - for _, serverID := range serverIDs { - if meta.indexMeta.NodeServerID == serverID { + for _, serverID := range nodeIDs { + if meta.indexMeta.NodeID == serverID { alive = true } } @@ -477,8 +472,8 @@ func NewNodeTasks() *nodeTasks { } } -func (nt *nodeTasks) getTasksByLeaseKey(serverID int64) []UniqueID { - indexBuildIDs, ok := nt.nodeID2Tasks[serverID] +func (nt *nodeTasks) getTasksByNodeID(nodeID int64) []UniqueID { + indexBuildIDs, ok := nt.nodeID2Tasks[nodeID] if !ok { return nil } diff --git a/internal/indexservice/node_mgr.go b/internal/indexservice/node_mgr.go index 0131a60907..e1926ab8b4 100644 --- a/internal/indexservice/node_mgr.go +++ b/internal/indexservice/node_mgr.go @@ -53,7 +53,6 @@ func (i *IndexService) addNode(nodeID UniqueID, req *indexpb.RegisterNodeRequest value: nodeClient, key: nodeID, addr: req.Address, - serverID: req.ServerID, priority: 0, } i.nodeClients.Push(item) @@ -77,14 +76,7 @@ func (i *IndexService) RegisterNode(ctx context.Context, req *indexpb.RegisterNo ErrorCode: commonpb.ErrorCode_UnexpectedError, }, } - - nodeID, err := i.idAllocator.AllocOne() - if err != nil { - ret.Status.Reason = "IndexService:RegisterNode Failed to acquire NodeID" - return ret, nil - } - - err = i.addNode(nodeID, req) + err := i.addNode(req.NodeID, req) if err != nil { ret.Status.Reason = err.Error() return ret, nil @@ -93,7 +85,7 @@ func (i *IndexService) RegisterNode(ctx context.Context, req *indexpb.RegisterNo ret.Status.ErrorCode = commonpb.ErrorCode_Success params := i.prepareNodeInitParams() ret.InitParams = &internalpb.InitParams{ - NodeID: nodeID, + NodeID: req.NodeID, StartParams: params, } return ret, nil diff --git a/internal/indexservice/priority_queue.go b/internal/indexservice/priority_queue.go index 571ad55ff4..896cb23786 100644 --- a/internal/indexservice/priority_queue.go +++ b/internal/indexservice/priority_queue.go @@ -25,8 +25,6 @@ type PQItem struct { key UniqueID addr *commonpb.Address - serverID int64 - priority int // The priority of the item in the queue. // The index is needed by update and is maintained by the heap.Interface methods. index int // The index of the item in the heap. @@ -63,7 +61,7 @@ func (pq *PriorityQueue) Push(x interface{}) { pq.items = append(pq.items, item) } -// do not call this directly. +// Pop do not call this directly. func (pq *PriorityQueue) Pop() interface{} { old := pq.items n := len(old) @@ -96,7 +94,7 @@ func (pq *PriorityQueue) getItemByKey(key UniqueID) interface{} { return ret } -// update modifies the priority and value of an Item in the queue. +// IncPriority update modifies the priority and value of an Item in the queue. func (pq *PriorityQueue) IncPriority(key UniqueID, priority int) { pq.lock.Lock() defer pq.lock.Unlock() @@ -107,7 +105,7 @@ func (pq *PriorityQueue) IncPriority(key UniqueID, priority int) { } } -// update modifies the priority and value of an Item in the queue. +// UpdatePriority update modifies the priority and value of an Item in the queue. func (pq *PriorityQueue) UpdatePriority(key UniqueID, priority int) { pq.lock.Lock() defer pq.lock.Unlock() @@ -139,12 +137,12 @@ func (pq *PriorityQueue) Peek() interface{} { } // PeekClient picks an IndexNode with the lowest load. -func (pq *PriorityQueue) PeekClient() (UniqueID, types.IndexNode, int64) { +func (pq *PriorityQueue) PeekClient() (UniqueID, types.IndexNode) { item := pq.Peek() if item == nil { - return UniqueID(-1), nil, 0 + return UniqueID(-1), nil } - return item.(*PQItem).key, item.(*PQItem).value, item.(*PQItem).serverID + return item.(*PQItem).key, item.(*PQItem).value } func (pq *PriorityQueue) PeekAllClients() []types.IndexNode { diff --git a/internal/proto/index_service.proto b/internal/proto/index_service.proto index e9d01550cd..26553cc807 100644 --- a/internal/proto/index_service.proto +++ b/internal/proto/index_service.proto @@ -29,7 +29,7 @@ service IndexNode { message RegisterNodeRequest { common.MsgBase base = 1; common.Address address = 2; - int64 serverID = 3; + int64 nodeID = 3; } message RegisterNodeResponse { @@ -101,7 +101,7 @@ message IndexMeta { BuildIndexRequest req = 4; repeated string index_file_paths = 5; bool mark_deleted = 6; - int64 node_serverID = 7; + int64 nodeID = 7; int64 version = 8; bool recycled = 9; } diff --git a/internal/proto/indexpb/index_service.pb.go b/internal/proto/indexpb/index_service.pb.go index 9a38aa672a..ac34c81c6a 100644 --- a/internal/proto/indexpb/index_service.pb.go +++ b/internal/proto/indexpb/index_service.pb.go @@ -30,7 +30,7 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type RegisterNodeRequest struct { Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` Address *commonpb.Address `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - ServerID int64 `protobuf:"varint,3,opt,name=serverID,proto3" json:"serverID,omitempty"` + NodeID int64 `protobuf:"varint,3,opt,name=nodeID,proto3" json:"nodeID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -75,9 +75,9 @@ func (m *RegisterNodeRequest) GetAddress() *commonpb.Address { return nil } -func (m *RegisterNodeRequest) GetServerID() int64 { +func (m *RegisterNodeRequest) GetNodeID() int64 { if m != nil { - return m.ServerID + return m.NodeID } return 0 } @@ -655,7 +655,7 @@ type IndexMeta struct { Req *BuildIndexRequest `protobuf:"bytes,4,opt,name=req,proto3" json:"req,omitempty"` IndexFilePaths []string `protobuf:"bytes,5,rep,name=index_file_paths,json=indexFilePaths,proto3" json:"index_file_paths,omitempty"` MarkDeleted bool `protobuf:"varint,6,opt,name=mark_deleted,json=markDeleted,proto3" json:"mark_deleted,omitempty"` - NodeServerID int64 `protobuf:"varint,7,opt,name=node_serverID,json=nodeServerID,proto3" json:"node_serverID,omitempty"` + NodeID int64 `protobuf:"varint,7,opt,name=nodeID,proto3" json:"nodeID,omitempty"` Version int64 `protobuf:"varint,8,opt,name=version,proto3" json:"version,omitempty"` Recycled bool `protobuf:"varint,9,opt,name=recycled,proto3" json:"recycled,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -730,9 +730,9 @@ func (m *IndexMeta) GetMarkDeleted() bool { return false } -func (m *IndexMeta) GetNodeServerID() int64 { +func (m *IndexMeta) GetNodeID() int64 { if m != nil { - return m.NodeServerID + return m.NodeID } return 0 } @@ -809,69 +809,68 @@ func init() { func init() { proto.RegisterFile("index_service.proto", fileDescriptor_a5d2036b4df73e0a) } var fileDescriptor_a5d2036b4df73e0a = []byte{ - // 986 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xdf, 0x6e, 0x1b, 0xc5, - 0x17, 0xce, 0x7a, 0x1b, 0xff, 0x39, 0x76, 0xa3, 0x66, 0xda, 0x5f, 0xb5, 0x3f, 0x97, 0xaa, 0xce, - 0xb6, 0x80, 0x41, 0xad, 0x53, 0xb9, 0x14, 0xae, 0x90, 0x20, 0xb1, 0x88, 0x2c, 0xd4, 0x2a, 0x9a, - 0x44, 0x5c, 0x20, 0x21, 0x6b, 0xe2, 0x3d, 0x49, 0x46, 0xdd, 0x3f, 0xce, 0xce, 0x38, 0x22, 0xf7, - 0xdc, 0x73, 0x87, 0x84, 0x78, 0x0e, 0xc4, 0x73, 0x70, 0xc5, 0x2b, 0xf0, 0x18, 0x68, 0x66, 0x67, - 0xb7, 0xbb, 0xeb, 0x75, 0xe2, 0x90, 0xc2, 0x15, 0x77, 0x7b, 0xce, 0x9c, 0x33, 0xdf, 0x9c, 0x6f, - 0xce, 0xf9, 0x76, 0xe0, 0x2e, 0x0f, 0x3d, 0xfc, 0x7e, 0x22, 0x30, 0x3e, 0xe7, 0x53, 0x1c, 0xcc, - 0xe2, 0x48, 0x46, 0x84, 0x04, 0xdc, 0x3f, 0x9f, 0x8b, 0xc4, 0x1a, 0xe8, 0x88, 0x6e, 0x67, 0x1a, - 0x05, 0x41, 0x14, 0x26, 0xbe, 0xee, 0x06, 0x0f, 0x25, 0xc6, 0x21, 0xf3, 0x8d, 0xdd, 0xc9, 0x67, - 0xb8, 0xbf, 0x58, 0x70, 0x97, 0xe2, 0x09, 0x17, 0x12, 0xe3, 0xd7, 0x91, 0x87, 0x14, 0xcf, 0xe6, - 0x28, 0x24, 0x79, 0x0e, 0xb7, 0x8e, 0x98, 0x40, 0xc7, 0xea, 0x59, 0xfd, 0xf6, 0xf0, 0xbd, 0x41, - 0x01, 0xc6, 0xec, 0xff, 0x4a, 0x9c, 0xec, 0x30, 0x81, 0x54, 0x47, 0x92, 0x4f, 0xa1, 0xc1, 0x3c, - 0x2f, 0x46, 0x21, 0x9c, 0xda, 0x25, 0x49, 0x5f, 0x26, 0x31, 0x34, 0x0d, 0x26, 0x5d, 0x68, 0xaa, - 0x92, 0x30, 0x1e, 0x8f, 0x1c, 0xbb, 0x67, 0xf5, 0x6d, 0x9a, 0xd9, 0xee, 0x8f, 0x16, 0xdc, 0x2b, - 0x9e, 0x4e, 0xcc, 0xa2, 0x50, 0x20, 0x79, 0x01, 0x75, 0x21, 0x99, 0x9c, 0x0b, 0x73, 0xc0, 0x07, - 0x95, 0x58, 0x07, 0x3a, 0x84, 0x9a, 0x50, 0xb2, 0x03, 0x6d, 0x1e, 0x72, 0x39, 0x99, 0xb1, 0x98, - 0x05, 0xe9, 0x29, 0xb7, 0x06, 0x25, 0x06, 0x0d, 0x59, 0xe3, 0x90, 0xcb, 0x7d, 0x1d, 0x48, 0x81, - 0x67, 0xdf, 0xee, 0xe7, 0xf0, 0xbf, 0x3d, 0x94, 0x63, 0xc5, 0xb3, 0xda, 0x1d, 0x45, 0x4a, 0xd8, - 0x13, 0xb8, 0xad, 0xd9, 0xdf, 0x99, 0x73, 0xdf, 0x1b, 0x8f, 0xd4, 0xc1, 0xec, 0xbe, 0x4d, 0x8b, - 0x4e, 0xf7, 0x37, 0x0b, 0x5a, 0x3a, 0x79, 0x1c, 0x1e, 0x47, 0xe4, 0x25, 0xac, 0xab, 0xa3, 0x25, - 0x2c, 0x6f, 0x0c, 0x1f, 0x55, 0x16, 0xf1, 0x16, 0x8b, 0x26, 0xd1, 0xc4, 0x85, 0x4e, 0x7e, 0x57, - 0x5d, 0x88, 0x4d, 0x0b, 0x3e, 0xe2, 0x40, 0x43, 0xdb, 0x19, 0xa9, 0xa9, 0x49, 0x1e, 0x02, 0x24, - 0x8d, 0x14, 0xb2, 0x00, 0x9d, 0x5b, 0x3d, 0xab, 0xdf, 0xa2, 0x2d, 0xed, 0x79, 0xcd, 0x02, 0x24, - 0xf7, 0xa1, 0x1e, 0x23, 0x13, 0x51, 0xe8, 0xac, 0xeb, 0x25, 0x63, 0xb9, 0x3f, 0x58, 0x70, 0xbf, - 0x5c, 0xf9, 0x4d, 0x2e, 0xe3, 0x65, 0x92, 0x84, 0xea, 0x1e, 0xec, 0x7e, 0x7b, 0xf8, 0x70, 0xb0, - 0xd8, 0xc9, 0x83, 0x8c, 0x2a, 0x6a, 0x82, 0xdd, 0xdf, 0x6b, 0x40, 0x76, 0x63, 0x64, 0x12, 0xf5, - 0x5a, 0xca, 0x7e, 0x99, 0x12, 0xab, 0x82, 0x92, 0x62, 0xe1, 0xb5, 0x72, 0xe1, 0xcb, 0x19, 0x73, - 0xa0, 0x71, 0x8e, 0xb1, 0xe0, 0x51, 0xa8, 0xe9, 0xb2, 0x69, 0x6a, 0x92, 0x07, 0xd0, 0x0a, 0x50, - 0xb2, 0xc9, 0x8c, 0xc9, 0x53, 0xc3, 0x57, 0x53, 0x39, 0xf6, 0x99, 0x3c, 0x55, 0x78, 0x1e, 0x33, - 0x8b, 0xc2, 0xa9, 0xf7, 0x6c, 0x85, 0xa7, 0x3c, 0x6a, 0x55, 0x77, 0xa3, 0xbc, 0x98, 0x61, 0xda, - 0x8d, 0x0d, 0xcd, 0xc2, 0x56, 0x25, 0x75, 0x5f, 0xe3, 0xc5, 0x37, 0xcc, 0x9f, 0xe3, 0x3e, 0xe3, - 0x31, 0x05, 0x95, 0x95, 0x74, 0x23, 0x19, 0x99, 0xb2, 0xd3, 0x4d, 0x9a, 0xab, 0x6e, 0xd2, 0xd6, - 0x69, 0xa6, 0xa7, 0x7f, 0xae, 0xc1, 0x66, 0x42, 0xd2, 0xbf, 0x46, 0x69, 0x91, 0x9b, 0xf5, 0x2b, - 0xb8, 0xa9, 0xbf, 0x0b, 0x6e, 0x1a, 0x7f, 0x8b, 0x9b, 0x00, 0x48, 0x9e, 0x9a, 0x9b, 0x74, 0xfc, - 0x0a, 0x63, 0xeb, 0x7e, 0x01, 0x4e, 0x3a, 0x64, 0x5f, 0x71, 0x1f, 0x35, 0x1b, 0xd7, 0x53, 0x98, - 0x9f, 0x2c, 0xd8, 0x2c, 0xe4, 0x6b, 0xa5, 0xf9, 0xa7, 0x0e, 0x4c, 0xfa, 0x70, 0x27, 0x61, 0xf9, - 0x98, 0xfb, 0x68, 0xae, 0xd3, 0xd6, 0xd7, 0xb9, 0xc1, 0x0b, 0x55, 0xa8, 0x83, 0xfd, 0xbf, 0xa2, - 0xb6, 0x9b, 0x30, 0x3a, 0x02, 0xc8, 0xc1, 0x26, 0x3a, 0xf2, 0xfe, 0x52, 0x1d, 0xc9, 0x13, 0x42, - 0x5b, 0xc7, 0xd9, 0xc1, 0xfe, 0xac, 0x19, 0x4d, 0x7e, 0x85, 0x92, 0xad, 0xd4, 0xf6, 0x99, 0x6e, - 0xd7, 0xae, 0xa5, 0xdb, 0x8f, 0xa0, 0x7d, 0xcc, 0xb8, 0x3f, 0x31, 0xfa, 0x6a, 0xeb, 0x71, 0x01, - 0xe5, 0xa2, 0xda, 0x43, 0x3e, 0x03, 0x3b, 0xc6, 0x33, 0x2d, 0x32, 0x4b, 0x0a, 0x59, 0x18, 0x53, - 0xaa, 0x32, 0x2a, 0x6f, 0x61, 0xbd, 0xea, 0x16, 0xc8, 0x16, 0x74, 0x02, 0x16, 0xbf, 0x99, 0x78, - 0xe8, 0xa3, 0x44, 0xcf, 0xa9, 0xf7, 0xac, 0x7e, 0x93, 0xb6, 0x95, 0x6f, 0x94, 0xb8, 0xc8, 0x63, - 0xb8, 0x1d, 0x46, 0x1e, 0x4e, 0xb2, 0xbf, 0x72, 0x23, 0xa1, 0x40, 0x39, 0x0f, 0x8c, 0x2f, 0xaf, - 0x89, 0xcd, 0xa2, 0x26, 0x76, 0xa1, 0x19, 0xe3, 0xf4, 0x62, 0xea, 0xa3, 0xe7, 0xb4, 0xf4, 0xee, - 0x99, 0xed, 0x3e, 0x85, 0x3b, 0xa3, 0x38, 0x9a, 0x15, 0x74, 0x26, 0x27, 0x12, 0x56, 0x41, 0x24, - 0x86, 0x7f, 0xd4, 0xa1, 0x93, 0xb0, 0x98, 0x3c, 0x79, 0xc8, 0x0c, 0xc8, 0x1e, 0xca, 0xdd, 0x28, - 0x98, 0x45, 0x21, 0x86, 0x32, 0xf9, 0x0d, 0x91, 0xe7, 0x4b, 0xfe, 0xe0, 0x8b, 0xa1, 0x06, 0xb2, - 0xfb, 0xc1, 0x92, 0x8c, 0x52, 0xb8, 0xbb, 0x46, 0x02, 0x8d, 0x78, 0xc8, 0x03, 0x3c, 0xe4, 0xd3, - 0x37, 0xbb, 0xa7, 0x2c, 0x0c, 0xd1, 0xbf, 0x0c, 0xb1, 0x14, 0x9a, 0x22, 0x3e, 0x2e, 0x66, 0x18, - 0xe3, 0x40, 0xc6, 0x3c, 0x3c, 0x49, 0x67, 0xc0, 0x5d, 0x23, 0x67, 0x70, 0x6f, 0x0f, 0x35, 0x3a, - 0x17, 0x92, 0x4f, 0x45, 0x0a, 0x38, 0x5c, 0x0e, 0xb8, 0x10, 0x7c, 0x4d, 0xc8, 0x29, 0x74, 0xf2, - 0x2f, 0x2c, 0xf2, 0x61, 0x55, 0xdb, 0x55, 0xbc, 0x10, 0xbb, 0xfd, 0xab, 0x03, 0x33, 0x90, 0xef, - 0x00, 0xde, 0x76, 0x2e, 0x59, 0xad, 0xb3, 0x17, 0x6f, 0xa9, 0x1c, 0x96, 0x6d, 0xcf, 0x61, 0xa3, - 0xf8, 0x34, 0x21, 0x1f, 0x55, 0xe5, 0x56, 0x3e, 0xdc, 0xba, 0x1f, 0xaf, 0x12, 0x9a, 0x41, 0xc5, - 0xb0, 0xb9, 0x20, 0x62, 0xe4, 0xe9, 0x65, 0x5b, 0x94, 0x75, 0xbc, 0xfb, 0x6c, 0xc5, 0xe8, 0x0c, - 0x73, 0x1f, 0x5a, 0xd9, 0xd4, 0x90, 0x27, 0x55, 0xd9, 0xe5, 0xa1, 0xea, 0x5e, 0x26, 0x9f, 0xee, - 0xda, 0xf0, 0x57, 0xdb, 0x48, 0x9e, 0xbe, 0xf2, 0xff, 0xc6, 0xea, 0xdd, 0x8f, 0xd5, 0x21, 0xb4, - 0x73, 0xcf, 0x54, 0x52, 0xd9, 0xcb, 0x8b, 0xef, 0xd8, 0x2b, 0xee, 0x6d, 0xe7, 0x93, 0x6f, 0x87, - 0x27, 0x5c, 0x9e, 0xce, 0x8f, 0xd4, 0xca, 0x76, 0x12, 0xfa, 0x8c, 0x47, 0xe6, 0x6b, 0x3b, 0x2d, - 0x60, 0x5b, 0x67, 0x6f, 0x6b, 0x94, 0xd9, 0xd1, 0x51, 0x5d, 0x9b, 0x2f, 0xfe, 0x0a, 0x00, 0x00, - 0xff, 0xff, 0x9b, 0x6b, 0x7c, 0x8a, 0x41, 0x0e, 0x00, 0x00, + // 971 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0x7a, 0x1b, 0xff, 0x79, 0x36, 0x51, 0x33, 0x2d, 0xd5, 0xe2, 0x52, 0xd5, 0x59, 0x0a, + 0x18, 0xd4, 0x3a, 0x95, 0x4b, 0xe1, 0x84, 0x04, 0x89, 0x45, 0x64, 0xa1, 0x56, 0xd1, 0x34, 0xe2, + 0x80, 0x84, 0xac, 0x89, 0xf7, 0x25, 0x19, 0x75, 0xff, 0x38, 0x3b, 0xe3, 0x88, 0xdc, 0xb9, 0x73, + 0x03, 0xf1, 0x41, 0x10, 0x9f, 0x83, 0x13, 0x07, 0xbe, 0x0c, 0x9a, 0xd9, 0xd9, 0xed, 0xee, 0x7a, + 0x9d, 0x38, 0x24, 0x70, 0xea, 0x6d, 0xdf, 0x9b, 0xf7, 0xe6, 0x37, 0xef, 0xf7, 0xde, 0xfc, 0x76, + 0xe0, 0x0e, 0x0f, 0x3d, 0xfc, 0x71, 0x22, 0x30, 0x3e, 0xe3, 0x53, 0x1c, 0xcc, 0xe2, 0x48, 0x46, + 0x84, 0x04, 0xdc, 0x3f, 0x9b, 0x8b, 0xc4, 0x1a, 0xe8, 0x88, 0x6e, 0x67, 0x1a, 0x05, 0x41, 0x14, + 0x26, 0xbe, 0xee, 0x06, 0x0f, 0x25, 0xc6, 0x21, 0xf3, 0x8d, 0xdd, 0xc9, 0x67, 0xb8, 0xbf, 0x5a, + 0x70, 0x87, 0xe2, 0x31, 0x17, 0x12, 0xe3, 0x97, 0x91, 0x87, 0x14, 0x4f, 0xe7, 0x28, 0x24, 0x79, + 0x0a, 0xb7, 0x0e, 0x99, 0x40, 0xc7, 0xea, 0x59, 0xfd, 0xf6, 0xf0, 0xfd, 0x41, 0x01, 0xc6, 0xec, + 0xff, 0x42, 0x1c, 0xef, 0x30, 0x81, 0x54, 0x47, 0x92, 0xcf, 0xa1, 0xc1, 0x3c, 0x2f, 0x46, 0x21, + 0x9c, 0xda, 0x05, 0x49, 0x5f, 0x27, 0x31, 0x34, 0x0d, 0x26, 0xf7, 0xa0, 0x1e, 0x46, 0x1e, 0x8e, + 0x47, 0x8e, 0xdd, 0xb3, 0xfa, 0x36, 0x35, 0x96, 0xfb, 0xb3, 0x05, 0x77, 0x8b, 0x27, 0x13, 0xb3, + 0x28, 0x14, 0x48, 0x9e, 0x41, 0x5d, 0x48, 0x26, 0xe7, 0xc2, 0x1c, 0xee, 0x7e, 0x25, 0xce, 0x2b, + 0x1d, 0x42, 0x4d, 0x28, 0xd9, 0x81, 0x36, 0x0f, 0xb9, 0x9c, 0xcc, 0x58, 0xcc, 0x82, 0xf4, 0x84, + 0x5b, 0x83, 0x12, 0x7b, 0x86, 0xa8, 0x71, 0xc8, 0xe5, 0xbe, 0x0e, 0xa4, 0xc0, 0xb3, 0x6f, 0xf7, + 0x4b, 0x78, 0x77, 0x0f, 0xe5, 0x58, 0x71, 0xac, 0x76, 0x47, 0x91, 0x92, 0xf5, 0x08, 0xde, 0xd1, + 0xcc, 0xef, 0xcc, 0xb9, 0xef, 0x8d, 0x47, 0xea, 0x60, 0x76, 0xdf, 0xa6, 0x45, 0xa7, 0xfb, 0x87, + 0x05, 0x2d, 0x9d, 0x3c, 0x0e, 0x8f, 0x22, 0xf2, 0x1c, 0xd6, 0xd5, 0xd1, 0x12, 0x86, 0x37, 0x86, + 0x0f, 0x2b, 0x8b, 0x78, 0x83, 0x45, 0x93, 0x68, 0xe2, 0x42, 0x27, 0xbf, 0xab, 0x2e, 0xc4, 0xa6, + 0x05, 0x1f, 0x71, 0xa0, 0xa1, 0xed, 0x8c, 0xd2, 0xd4, 0x24, 0x0f, 0x00, 0x92, 0x21, 0x0a, 0x59, + 0x80, 0xce, 0xad, 0x9e, 0xd5, 0x6f, 0xd1, 0x96, 0xf6, 0xbc, 0x64, 0x01, 0xaa, 0x56, 0xc4, 0xc8, + 0x44, 0x14, 0x3a, 0xeb, 0x7a, 0xc9, 0x58, 0xee, 0x4f, 0x16, 0xdc, 0x2b, 0x57, 0x7e, 0x9d, 0x66, + 0x3c, 0x4f, 0x92, 0x50, 0xf5, 0xc1, 0xee, 0xb7, 0x87, 0x0f, 0x06, 0x8b, 0x53, 0x3c, 0xc8, 0xa8, + 0xa2, 0x26, 0xd8, 0xfd, 0xb3, 0x06, 0x64, 0x37, 0x46, 0x26, 0x51, 0xaf, 0xa5, 0xec, 0x97, 0x29, + 0xb1, 0x2a, 0x28, 0x29, 0x16, 0x5e, 0x2b, 0x17, 0xbe, 0x9c, 0x31, 0x07, 0x1a, 0x67, 0x18, 0x0b, + 0x1e, 0x85, 0x9a, 0x2e, 0x9b, 0xa6, 0x26, 0xb9, 0x0f, 0xad, 0x00, 0x25, 0x9b, 0xcc, 0x98, 0x3c, + 0x31, 0x7c, 0x35, 0x95, 0x63, 0x9f, 0xc9, 0x13, 0x85, 0xe7, 0x31, 0xb3, 0x28, 0x9c, 0x7a, 0xcf, + 0x56, 0x78, 0xca, 0xa3, 0x56, 0xf5, 0x34, 0xca, 0xf3, 0x19, 0xa6, 0xd3, 0xd8, 0xd0, 0x2c, 0x6c, + 0x55, 0x52, 0xf7, 0x2d, 0x9e, 0x7f, 0xc7, 0xfc, 0x39, 0xee, 0x33, 0x1e, 0x53, 0x50, 0x59, 0xc9, + 0x34, 0x92, 0x91, 0x29, 0x3b, 0xdd, 0xa4, 0xb9, 0xea, 0x26, 0x6d, 0x9d, 0x66, 0x66, 0xfa, 0xb7, + 0x1a, 0x6c, 0x26, 0x24, 0xfd, 0x6f, 0x94, 0x16, 0xb9, 0x59, 0xbf, 0x84, 0x9b, 0xfa, 0x4d, 0x70, + 0xd3, 0xf8, 0x57, 0xdc, 0x04, 0x40, 0xf2, 0xd4, 0x5c, 0x67, 0xe2, 0x57, 0xb8, 0xb6, 0xee, 0x57, + 0xe0, 0xa4, 0x97, 0xec, 0x1b, 0xee, 0xa3, 0x66, 0xe3, 0x6a, 0x0a, 0xf3, 0x8b, 0x05, 0x9b, 0x85, + 0x7c, 0xad, 0x34, 0xff, 0xd5, 0x81, 0x49, 0x1f, 0x6e, 0x27, 0x2c, 0x1f, 0x71, 0x1f, 0x4d, 0x3b, + 0x6d, 0xdd, 0xce, 0x0d, 0x5e, 0xa8, 0x42, 0x1d, 0xec, 0xbd, 0x8a, 0xda, 0xae, 0xc3, 0xe8, 0x08, + 0x20, 0x07, 0x9b, 0xe8, 0xc8, 0x87, 0x4b, 0x75, 0x24, 0x4f, 0x08, 0x6d, 0x1d, 0x65, 0x07, 0xfb, + 0xbb, 0x66, 0x34, 0xf9, 0x05, 0x4a, 0xb6, 0xd2, 0xd8, 0x67, 0xba, 0x5d, 0xbb, 0x92, 0x6e, 0x3f, + 0x84, 0xf6, 0x11, 0xe3, 0xfe, 0xc4, 0xe8, 0xab, 0xad, 0xaf, 0x0b, 0x28, 0x17, 0xd5, 0x1e, 0xf2, + 0x05, 0xd8, 0x31, 0x9e, 0x6a, 0x91, 0x59, 0x52, 0xc8, 0xc2, 0x35, 0xa5, 0x2a, 0xa3, 0xb2, 0x0b, + 0xeb, 0x55, 0x5d, 0x20, 0x5b, 0xd0, 0x09, 0x58, 0xfc, 0x7a, 0xe2, 0xa1, 0x8f, 0x12, 0x3d, 0xa7, + 0xde, 0xb3, 0xfa, 0x4d, 0xda, 0x56, 0xbe, 0x51, 0xe2, 0xca, 0xfd, 0x8c, 0x1b, 0xf9, 0x9f, 0x71, + 0x5e, 0x06, 0x9b, 0x45, 0x19, 0xec, 0x42, 0x33, 0xc6, 0xe9, 0xf9, 0xd4, 0x47, 0xcf, 0x69, 0xe9, + 0x0d, 0x33, 0xdb, 0x7d, 0x0c, 0xb7, 0x47, 0x71, 0x34, 0x2b, 0x48, 0x4b, 0x4e, 0x17, 0xac, 0x82, + 0x2e, 0x0c, 0xff, 0xaa, 0x43, 0x27, 0x21, 0x2e, 0x79, 0xe1, 0x90, 0x19, 0x90, 0x3d, 0x94, 0xbb, + 0x51, 0x30, 0x8b, 0x42, 0x0c, 0x65, 0xf2, 0xe7, 0x21, 0x4f, 0x97, 0xfc, 0xb4, 0x17, 0x43, 0x0d, + 0x64, 0xf7, 0xa3, 0x25, 0x19, 0xa5, 0x70, 0x77, 0x8d, 0x04, 0x1a, 0xf1, 0x80, 0x07, 0x78, 0xc0, + 0xa7, 0xaf, 0x77, 0x4f, 0x58, 0x18, 0xa2, 0x7f, 0x11, 0x62, 0x29, 0x34, 0x45, 0xfc, 0xa0, 0x98, + 0x61, 0x8c, 0x57, 0x32, 0xe6, 0xe1, 0x71, 0x3a, 0xf6, 0xee, 0x1a, 0x39, 0x85, 0xbb, 0x7b, 0xa8, + 0xd1, 0xb9, 0x90, 0x7c, 0x2a, 0x52, 0xc0, 0xe1, 0x72, 0xc0, 0x85, 0xe0, 0x2b, 0x42, 0x4e, 0xa1, + 0x93, 0x7f, 0x54, 0x91, 0x8f, 0xab, 0x26, 0xad, 0xe2, 0x41, 0xd8, 0xed, 0x5f, 0x1e, 0x98, 0x81, + 0xfc, 0x00, 0xf0, 0x66, 0x58, 0xc9, 0x6a, 0xc3, 0xbc, 0xd8, 0xa5, 0x72, 0x58, 0xb6, 0x3d, 0x87, + 0x8d, 0xe2, 0x6b, 0x84, 0x7c, 0x52, 0x95, 0x5b, 0xf9, 0x56, 0xeb, 0x7e, 0xba, 0x4a, 0x68, 0x06, + 0x15, 0xc3, 0xe6, 0x82, 0x6e, 0x91, 0xc7, 0x17, 0x6d, 0x51, 0x96, 0xee, 0xee, 0x93, 0x15, 0xa3, + 0x33, 0xcc, 0x7d, 0x68, 0x65, 0xb7, 0x86, 0x3c, 0xaa, 0xca, 0x2e, 0x5f, 0xaa, 0xee, 0x45, 0x8a, + 0xe9, 0xae, 0x0d, 0x7f, 0xb7, 0x8d, 0xca, 0xe9, 0x96, 0xbf, 0xbd, 0x56, 0x37, 0x7f, 0xad, 0x0e, + 0xa0, 0x9d, 0x7b, 0x99, 0x92, 0xca, 0x59, 0x5e, 0x7c, 0xba, 0x5e, 0xd2, 0xb7, 0x9d, 0xcf, 0xbe, + 0x1f, 0x1e, 0x73, 0x79, 0x32, 0x3f, 0x54, 0x2b, 0xdb, 0x49, 0xe8, 0x13, 0x1e, 0x99, 0xaf, 0xed, + 0xb4, 0x80, 0x6d, 0x9d, 0xbd, 0xad, 0x51, 0x66, 0x87, 0x87, 0x75, 0x6d, 0x3e, 0xfb, 0x27, 0x00, + 0x00, 0xff, 0xff, 0x41, 0x8a, 0x38, 0xec, 0x30, 0x0e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used.