Refactor IndexService and IndexNode: remove redundant serviceID (#5491)

Signed-off-by: zhenshan.cao <zhenshan.cao@zilliz.com>
pull/5498/head
zhenshan.cao 2021-05-31 10:32:30 +08:00 committed by GitHub
parent ca0993c274
commit 4af2cacb28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 91 additions and 111 deletions

View File

@ -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)

View File

@ -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)
}

View File

@ -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
}

View File

@ -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

View File

@ -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 {

View File

@ -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;
}

View File

@ -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.