diff --git a/kv/send_test.go b/kv/send_test.go index 3905717b6f7c..c94b1f73e673 100644 --- a/kv/send_test.go +++ b/kv/send_test.go @@ -30,6 +30,7 @@ import ( "github.com/cockroachdb/cockroach/roachpb" "github.com/cockroachdb/cockroach/rpc" + "github.com/cockroachdb/cockroach/storage" "github.com/cockroachdb/cockroach/testutils" "github.com/cockroachdb/cockroach/util" "github.com/cockroachdb/cockroach/util/hlc" @@ -66,11 +67,11 @@ func (n Node) Batch(ctx context.Context, args *roachpb.BatchRequest) (*roachpb.B } return &roachpb.BatchResponse{}, nil } -func (n Node) PollFrozen(_ context.Context, _ *roachpb.PollFrozenRequest) (*roachpb.PollFrozenResponse, error) { +func (n Node) PollFrozen(_ context.Context, _ *storage.PollFrozenRequest) (*storage.PollFrozenResponse, error) { panic("unimplemented") } -func (n Node) Reserve(_ context.Context, _ *roachpb.ReservationRequest) (*roachpb.ReservationResponse, error) { +func (n Node) Reserve(_ context.Context, _ *storage.ReservationRequest) (*storage.ReservationResponse, error) { panic("unimplemented") } diff --git a/roachpb/api.pb.go b/roachpb/api.pb.go index c0259e6eb941..8625a7a73951 100644 --- a/roachpb/api.pb.go +++ b/roachpb/api.pb.go @@ -78,11 +78,6 @@ BatchRequest BatchResponse RaftCommand - StoreRequestHeader - PollFrozenRequest - PollFrozenResponse - ReservationRequest - ReservationResponse Span Value KeyValue @@ -1382,71 +1377,6 @@ func (m *RaftCommand) String() string { return proto.CompactTextStrin func (*RaftCommand) ProtoMessage() {} func (*RaftCommand) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{63} } -// StoreRequestHeader locates a Store on a Node. -type StoreRequestHeader struct { - NodeID NodeID `protobuf:"varint,1,opt,name=node_id,json=nodeId,casttype=NodeID" json:"node_id"` - StoreID StoreID `protobuf:"varint,2,opt,name=store_id,json=storeId,casttype=StoreID" json:"store_id"` -} - -func (m *StoreRequestHeader) Reset() { *m = StoreRequestHeader{} } -func (m *StoreRequestHeader) String() string { return proto.CompactTextString(m) } -func (*StoreRequestHeader) ProtoMessage() {} -func (*StoreRequestHeader) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{64} } - -// A PollFrozenRequest asks the addressed Store for its frozen or thawed -// Replicas. -type PollFrozenRequest struct { - StoreRequestHeader `protobuf:"bytes,1,opt,name=header,embedded=header" json:"header"` - // When true, collect the frozen Replicas, and the thawed ones otherwise. - CollectFrozen bool `protobuf:"varint,2,opt,name=collect_frozen,json=collectFrozen" json:"collect_frozen"` -} - -func (m *PollFrozenRequest) Reset() { *m = PollFrozenRequest{} } -func (m *PollFrozenRequest) String() string { return proto.CompactTextString(m) } -func (*PollFrozenRequest) ProtoMessage() {} -func (*PollFrozenRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{65} } - -// A PollFrozenResponse is the response returned from a PollFrozenRequest. -type PollFrozenResponse struct { - Results []ReplicaDescriptor `protobuf:"bytes,1,rep,name=results" json:"results"` -} - -func (m *PollFrozenResponse) Reset() { *m = PollFrozenResponse{} } -func (m *PollFrozenResponse) String() string { return proto.CompactTextString(m) } -func (*PollFrozenResponse) ProtoMessage() {} -func (*PollFrozenResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{66} } - -// A ReservationRequest asks the addressed Store to reserve the space for a new -// replica for the Range of RangeID reserving RangeSize bytes. -type ReservationRequest struct { - StoreRequestHeader `protobuf:"bytes,1,opt,name=header,embedded=header" json:"header"` - FromNodeID NodeID `protobuf:"varint,2,opt,name=from_node_id,json=fromNodeId,casttype=NodeID" json:"from_node_id"` - FromStoreID StoreID `protobuf:"varint,3,opt,name=from_store_id,json=fromStoreId,casttype=StoreID" json:"from_store_id"` - RangeID RangeID `protobuf:"varint,4,opt,name=range_id,json=rangeId,casttype=RangeID" json:"range_id"` - RangeSize int64 `protobuf:"varint,5,opt,name=range_size,json=rangeSize" json:"range_size"` -} - -func (m *ReservationRequest) Reset() { *m = ReservationRequest{} } -func (m *ReservationRequest) String() string { return proto.CompactTextString(m) } -func (*ReservationRequest) ProtoMessage() {} -func (*ReservationRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{67} } - -// A ReservationResponse is the repoonse returned from a ReservationRequest. -type ReservationResponse struct { - Reserved bool `protobuf:"varint,1,opt,name=reserved" json:"reserved"` - // The current number of ranges and reservations on the target - // store. This is returned even if the reservation isn't filled. - // - // NB: Nullable so we can detect if the field isn't set as will be - // the case when talking to older servers. - RangeCount *int32 `protobuf:"varint,2,opt,name=range_count,json=rangeCount" json:"range_count,omitempty"` -} - -func (m *ReservationResponse) Reset() { *m = ReservationResponse{} } -func (m *ReservationResponse) String() string { return proto.CompactTextString(m) } -func (*ReservationResponse) ProtoMessage() {} -func (*ReservationResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{68} } - func init() { proto.RegisterType((*ResponseHeader)(nil), "cockroach.roachpb.ResponseHeader") proto.RegisterType((*GetRequest)(nil), "cockroach.roachpb.GetRequest") @@ -1514,11 +1444,6 @@ func init() { proto.RegisterType((*BatchResponse)(nil), "cockroach.roachpb.BatchResponse") proto.RegisterType((*BatchResponse_Header)(nil), "cockroach.roachpb.BatchResponse.Header") proto.RegisterType((*RaftCommand)(nil), "cockroach.roachpb.RaftCommand") - proto.RegisterType((*StoreRequestHeader)(nil), "cockroach.roachpb.StoreRequestHeader") - proto.RegisterType((*PollFrozenRequest)(nil), "cockroach.roachpb.PollFrozenRequest") - proto.RegisterType((*PollFrozenResponse)(nil), "cockroach.roachpb.PollFrozenResponse") - proto.RegisterType((*ReservationRequest)(nil), "cockroach.roachpb.ReservationRequest") - proto.RegisterType((*ReservationResponse)(nil), "cockroach.roachpb.ReservationResponse") proto.RegisterEnum("cockroach.roachpb.ReadConsistencyType", ReadConsistencyType_name, ReadConsistencyType_value) proto.RegisterEnum("cockroach.roachpb.PushTxnType", PushTxnType_name, PushTxnType_value) } @@ -1535,11 +1460,6 @@ const _ = grpc.SupportPackageIsVersion3 type InternalClient interface { Batch(ctx context.Context, in *BatchRequest, opts ...grpc.CallOption) (*BatchResponse, error) - // TODO(wiz): These methods have been split out into the InternalStores - // service, but remain here until we determine that a breaking RPC change is - // acceptable. - PollFrozen(ctx context.Context, in *PollFrozenRequest, opts ...grpc.CallOption) (*PollFrozenResponse, error) - Reserve(ctx context.Context, in *ReservationRequest, opts ...grpc.CallOption) (*ReservationResponse, error) } type internalClient struct { @@ -1559,33 +1479,10 @@ func (c *internalClient) Batch(ctx context.Context, in *BatchRequest, opts ...gr return out, nil } -func (c *internalClient) PollFrozen(ctx context.Context, in *PollFrozenRequest, opts ...grpc.CallOption) (*PollFrozenResponse, error) { - out := new(PollFrozenResponse) - err := grpc.Invoke(ctx, "/cockroach.roachpb.Internal/PollFrozen", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *internalClient) Reserve(ctx context.Context, in *ReservationRequest, opts ...grpc.CallOption) (*ReservationResponse, error) { - out := new(ReservationResponse) - err := grpc.Invoke(ctx, "/cockroach.roachpb.Internal/Reserve", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // Server API for Internal service type InternalServer interface { Batch(context.Context, *BatchRequest) (*BatchResponse, error) - // TODO(wiz): These methods have been split out into the InternalStores - // service, but remain here until we determine that a breaking RPC change is - // acceptable. - PollFrozen(context.Context, *PollFrozenRequest) (*PollFrozenResponse, error) - Reserve(context.Context, *ReservationRequest) (*ReservationResponse, error) } func RegisterInternalServer(s *grpc.Server, srv InternalServer) { @@ -1610,42 +1507,6 @@ func _Internal_Batch_Handler(srv interface{}, ctx context.Context, dec func(inte return interceptor(ctx, in, info, handler) } -func _Internal_PollFrozen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PollFrozenRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InternalServer).PollFrozen(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cockroach.roachpb.Internal/PollFrozen", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InternalServer).PollFrozen(ctx, req.(*PollFrozenRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Internal_Reserve_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReservationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InternalServer).Reserve(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cockroach.roachpb.Internal/Reserve", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InternalServer).Reserve(ctx, req.(*ReservationRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _Internal_serviceDesc = grpc.ServiceDesc{ ServiceName: "cockroach.roachpb.Internal", HandlerType: (*InternalServer)(nil), @@ -1654,14 +1515,6 @@ var _Internal_serviceDesc = grpc.ServiceDesc{ MethodName: "Batch", Handler: _Internal_Batch_Handler, }, - { - MethodName: "PollFrozen", - Handler: _Internal_PollFrozen_Handler, - }, - { - MethodName: "Reserve", - Handler: _Internal_Reserve_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: fileDescriptorApi, @@ -1731,103 +1584,6 @@ var _External_serviceDesc = grpc.ServiceDesc{ Metadata: fileDescriptorApi, } -// Client API for InternalStores service - -type InternalStoresClient interface { - PollFrozen(ctx context.Context, in *PollFrozenRequest, opts ...grpc.CallOption) (*PollFrozenResponse, error) - Reserve(ctx context.Context, in *ReservationRequest, opts ...grpc.CallOption) (*ReservationResponse, error) -} - -type internalStoresClient struct { - cc *grpc.ClientConn -} - -func NewInternalStoresClient(cc *grpc.ClientConn) InternalStoresClient { - return &internalStoresClient{cc} -} - -func (c *internalStoresClient) PollFrozen(ctx context.Context, in *PollFrozenRequest, opts ...grpc.CallOption) (*PollFrozenResponse, error) { - out := new(PollFrozenResponse) - err := grpc.Invoke(ctx, "/cockroach.roachpb.InternalStores/PollFrozen", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *internalStoresClient) Reserve(ctx context.Context, in *ReservationRequest, opts ...grpc.CallOption) (*ReservationResponse, error) { - out := new(ReservationResponse) - err := grpc.Invoke(ctx, "/cockroach.roachpb.InternalStores/Reserve", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for InternalStores service - -type InternalStoresServer interface { - PollFrozen(context.Context, *PollFrozenRequest) (*PollFrozenResponse, error) - Reserve(context.Context, *ReservationRequest) (*ReservationResponse, error) -} - -func RegisterInternalStoresServer(s *grpc.Server, srv InternalStoresServer) { - s.RegisterService(&_InternalStores_serviceDesc, srv) -} - -func _InternalStores_PollFrozen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PollFrozenRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InternalStoresServer).PollFrozen(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cockroach.roachpb.InternalStores/PollFrozen", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InternalStoresServer).PollFrozen(ctx, req.(*PollFrozenRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InternalStores_Reserve_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReservationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InternalStoresServer).Reserve(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cockroach.roachpb.InternalStores/Reserve", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InternalStoresServer).Reserve(ctx, req.(*ReservationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _InternalStores_serviceDesc = grpc.ServiceDesc{ - ServiceName: "cockroach.roachpb.InternalStores", - HandlerType: (*InternalStoresServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "PollFrozen", - Handler: _InternalStores_PollFrozen_Handler, - }, - { - MethodName: "Reserve", - Handler: _InternalStores_Reserve_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: fileDescriptorApi, -} - func (m *ResponseHeader) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -4738,163 +4494,6 @@ func (m *RaftCommand) MarshalTo(data []byte) (int, error) { return i, nil } -func (m *StoreRequestHeader) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *StoreRequestHeader) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - data[i] = 0x8 - i++ - i = encodeVarintApi(data, i, uint64(m.NodeID)) - data[i] = 0x10 - i++ - i = encodeVarintApi(data, i, uint64(m.StoreID)) - return i, nil -} - -func (m *PollFrozenRequest) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *PollFrozenRequest) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - data[i] = 0xa - i++ - i = encodeVarintApi(data, i, uint64(m.StoreRequestHeader.Size())) - n150, err := m.StoreRequestHeader.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n150 - data[i] = 0x10 - i++ - if m.CollectFrozen { - data[i] = 1 - } else { - data[i] = 0 - } - i++ - return i, nil -} - -func (m *PollFrozenResponse) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *PollFrozenResponse) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if len(m.Results) > 0 { - for _, msg := range m.Results { - data[i] = 0xa - i++ - i = encodeVarintApi(data, i, uint64(msg.Size())) - n, err := msg.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n - } - } - return i, nil -} - -func (m *ReservationRequest) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *ReservationRequest) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - data[i] = 0xa - i++ - i = encodeVarintApi(data, i, uint64(m.StoreRequestHeader.Size())) - n151, err := m.StoreRequestHeader.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n151 - data[i] = 0x10 - i++ - i = encodeVarintApi(data, i, uint64(m.FromNodeID)) - data[i] = 0x18 - i++ - i = encodeVarintApi(data, i, uint64(m.FromStoreID)) - data[i] = 0x20 - i++ - i = encodeVarintApi(data, i, uint64(m.RangeID)) - data[i] = 0x28 - i++ - i = encodeVarintApi(data, i, uint64(m.RangeSize)) - return i, nil -} - -func (m *ReservationResponse) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *ReservationResponse) MarshalTo(data []byte) (int, error) { - var i int - _ = i - var l int - _ = l - data[i] = 0x8 - i++ - if m.Reserved { - data[i] = 1 - } else { - data[i] = 0 - } - i++ - if m.RangeCount != nil { - data[i] = 0x10 - i++ - i = encodeVarintApi(data, i, uint64(*m.RangeCount)) - } - return i, nil -} - func encodeFixed64Api(data []byte, offset int, v uint64) int { data[offset] = uint8(v) data[offset+1] = uint8(v >> 8) @@ -5878,57 +5477,6 @@ func (m *RaftCommand) Size() (n int) { return n } -func (m *StoreRequestHeader) Size() (n int) { - var l int - _ = l - n += 1 + sovApi(uint64(m.NodeID)) - n += 1 + sovApi(uint64(m.StoreID)) - return n -} - -func (m *PollFrozenRequest) Size() (n int) { - var l int - _ = l - l = m.StoreRequestHeader.Size() - n += 1 + l + sovApi(uint64(l)) - n += 2 - return n -} - -func (m *PollFrozenResponse) Size() (n int) { - var l int - _ = l - if len(m.Results) > 0 { - for _, e := range m.Results { - l = e.Size() - n += 1 + l + sovApi(uint64(l)) - } - } - return n -} - -func (m *ReservationRequest) Size() (n int) { - var l int - _ = l - l = m.StoreRequestHeader.Size() - n += 1 + l + sovApi(uint64(l)) - n += 1 + sovApi(uint64(m.FromNodeID)) - n += 1 + sovApi(uint64(m.FromStoreID)) - n += 1 + sovApi(uint64(m.RangeID)) - n += 1 + sovApi(uint64(m.RangeSize)) - return n -} - -func (m *ReservationResponse) Size() (n int) { - var l int - _ = l - n += 2 - if m.RangeCount != nil { - n += 1 + sovApi(uint64(*m.RangeCount)) - } - return n -} - func sovApi(x uint64) (n int) { for { n++ @@ -15466,521 +15014,6 @@ func (m *RaftCommand) Unmarshal(data []byte) error { } return nil } -func (m *StoreRequestHeader) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: StoreRequestHeader: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: StoreRequestHeader: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) - } - m.NodeID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.NodeID |= (NodeID(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field StoreID", wireType) - } - m.StoreID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.StoreID |= (StoreID(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipApi(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PollFrozenRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PollFrozenRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PollFrozenRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StoreRequestHeader", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthApi - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.StoreRequestHeader.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CollectFrozen", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.CollectFrozen = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipApi(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PollFrozenResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PollFrozenResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PollFrozenResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthApi - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Results = append(m.Results, ReplicaDescriptor{}) - if err := m.Results[len(m.Results)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipApi(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ReservationRequest) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ReservationRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ReservationRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StoreRequestHeader", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthApi - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.StoreRequestHeader.Unmarshal(data[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field FromNodeID", wireType) - } - m.FromNodeID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.FromNodeID |= (NodeID(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field FromStoreID", wireType) - } - m.FromStoreID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.FromStoreID |= (StoreID(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeID", wireType) - } - m.RangeID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.RangeID |= (RangeID(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeSize", wireType) - } - m.RangeSize = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - m.RangeSize |= (int64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipApi(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ReservationResponse) Unmarshal(data []byte) error { - l := len(data) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ReservationResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ReservationResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Reserved", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Reserved = bool(v != 0) - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RangeCount", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - v |= (int32(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.RangeCount = &v - default: - iNdEx = preIndex - skippy, err := skipApi(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipApi(data []byte) (n int, err error) { l := len(data) iNdEx := 0 @@ -16089,237 +15122,219 @@ var ( func init() { proto.RegisterFile("cockroach/roachpb/api.proto", fileDescriptorApi) } var fileDescriptorApi = []byte{ - // 3701 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xdc, 0x5b, 0xdb, 0x6f, 0x1b, 0x47, - 0x77, 0xd7, 0xf2, 0x22, 0x52, 0x87, 0x17, 0xd1, 0x23, 0xd9, 0xa6, 0x65, 0x5b, 0x94, 0x37, 0xbe, - 0x5f, 0xa8, 0x54, 0xf9, 0xdc, 0xc4, 0x69, 0xd2, 0xc6, 0xa4, 0x64, 0x9b, 0x91, 0x2c, 0xcb, 0x2b, - 0xca, 0x76, 0x9c, 0x26, 0xdb, 0xf5, 0xee, 0x90, 0x5c, 0x98, 0xdc, 0x65, 0x76, 0x97, 0x96, 0x94, - 0x16, 0x2d, 0x1a, 0x14, 0x6d, 0x13, 0x20, 0x40, 0x03, 0x14, 0x68, 0x8b, 0xa2, 0x40, 0xd0, 0xbe, - 0xf4, 0xa9, 0x8f, 0x0d, 0x50, 0xa0, 0x8f, 0x05, 0xdc, 0xa7, 0xe6, 0xb1, 0x68, 0x00, 0xa5, 0x75, - 0xd1, 0xbf, 0xa0, 0x6f, 0x06, 0x5a, 0x14, 0x73, 0x59, 0x72, 0x97, 0xdc, 0x15, 0x65, 0x65, 0x83, - 0x34, 0xdf, 0x8b, 0x2d, 0x9e, 0x39, 0xe7, 0x37, 0x33, 0xe7, 0xcc, 0x99, 0xf9, 0xcd, 0x65, 0xe1, - 0xa4, 0x6a, 0xaa, 0x4f, 0x2d, 0x53, 0x51, 0x5b, 0x8b, 0xf4, 0xdf, 0xee, 0x93, 0x45, 0xa5, 0xab, - 0x97, 0xbb, 0x96, 0xe9, 0x98, 0xe8, 0x48, 0xbf, 0xb0, 0xcc, 0x0b, 0xe7, 0x4e, 0x8d, 0xea, 0x6b, - 0x8a, 0xa3, 0x30, 0x83, 0xb9, 0xf9, 0xd1, 0x52, 0x6c, 0x59, 0xa6, 0x65, 0xf3, 0xf2, 0x73, 0xa3, - 0xe5, 0xba, 0xe1, 0x60, 0xcb, 0x50, 0xda, 0xb2, 0xa5, 0x34, 0x1c, 0xae, 0xb6, 0x30, 0xaa, 0xd6, - 0xc1, 0x8e, 0xe2, 0xa9, 0xe8, 0xea, 0x40, 0xc3, 0x76, 0x4c, 0x4b, 0x69, 0xe2, 0x45, 0x6c, 0x34, - 0x75, 0xc3, 0xfd, 0x8f, 0x58, 0x3c, 0x53, 0x55, 0xae, 0x7d, 0x66, 0xa0, 0xdd, 0x73, 0xf4, 0xf6, - 0xa2, 0x63, 0x29, 0xaa, 0x6e, 0x34, 0x17, 0xed, 0xae, 0x62, 0x70, 0x15, 0x71, 0x48, 0xa5, 0xd5, - 0x56, 0x17, 0x1d, 0xbd, 0x83, 0x6d, 0x47, 0xe9, 0x74, 0xb9, 0xce, 0x6c, 0xd3, 0x6c, 0x9a, 0xf4, - 0xcf, 0x45, 0xf2, 0x17, 0x93, 0x8a, 0x7f, 0x25, 0x40, 0x5e, 0xc2, 0x76, 0xd7, 0x34, 0x6c, 0x7c, - 0x07, 0x2b, 0x1a, 0xb6, 0xd0, 0xeb, 0x10, 0x77, 0x76, 0x8c, 0x62, 0x7c, 0x41, 0xb8, 0x98, 0x59, - 0x9a, 0x2f, 0x8f, 0x78, 0xb1, 0x5c, 0xb7, 0x14, 0xc3, 0x56, 0x54, 0x47, 0x37, 0x0d, 0x89, 0xa8, - 0xa2, 0xb7, 0x20, 0x63, 0x61, 0xbb, 0xd7, 0xc1, 0x32, 0x69, 0x53, 0x31, 0x41, 0x2d, 0x8f, 0x07, - 0x58, 0x6e, 0x76, 0x15, 0x43, 0x02, 0xa6, 0x4b, 0xfe, 0x46, 0x25, 0x48, 0x1b, 0xbd, 0x8e, 0xfc, - 0x14, 0xef, 0xda, 0xc5, 0xe4, 0x82, 0x70, 0x31, 0x5e, 0x49, 0x3c, 0xdf, 0x2b, 0x4d, 0x48, 0x29, - 0xa3, 0xd7, 0x59, 0xc5, 0xbb, 0xb6, 0x78, 0x1b, 0xe0, 0x36, 0x76, 0x24, 0xfc, 0x49, 0x0f, 0xdb, - 0x0e, 0xba, 0x01, 0x93, 0x2d, 0xda, 0xc8, 0xa2, 0xb0, 0x6f, 0x1d, 0x95, 0x34, 0x41, 0xf9, 0x76, - 0xaf, 0x24, 0x48, 0xdc, 0x40, 0xfc, 0x4c, 0x80, 0x0c, 0x45, 0x62, 0x7d, 0x45, 0xd5, 0x21, 0xa8, - 0x33, 0x01, 0x50, 0x7e, 0xc7, 0x8c, 0x82, 0xa2, 0x32, 0x24, 0x9f, 0x29, 0xed, 0x1e, 0x2e, 0xc6, - 0x28, 0x46, 0x31, 0x00, 0xe3, 0x01, 0x29, 0x97, 0x98, 0x9a, 0xf8, 0x8d, 0x00, 0xb0, 0xd1, 0x8b, - 0xa0, 0x3b, 0xe8, 0x17, 0x07, 0xac, 0x99, 0xfb, 0x93, 0x29, 0xa3, 0x53, 0x30, 0xa9, 0x1b, 0x6d, - 0xdd, 0xc0, 0x34, 0xba, 0x69, 0x5e, 0xc8, 0x65, 0x68, 0x0e, 0x92, 0x4f, 0xda, 0xba, 0xa1, 0xd1, - 0x00, 0xba, 0x85, 0x4c, 0x24, 0x4a, 0x90, 0xa1, 0x0d, 0x8f, 0xd0, 0x7b, 0xe2, 0x77, 0x02, 0x1c, - 0xad, 0x9a, 0x86, 0xa6, 0x93, 0x91, 0xa4, 0xb4, 0x7f, 0x4a, 0xc7, 0x5c, 0x87, 0x29, 0xbc, 0xd3, - 0x95, 0x99, 0x65, 0x7c, 0x4c, 0x30, 0xd3, 0x78, 0xa7, 0x4b, 0xff, 0xda, 0xd7, 0x63, 0x1f, 0xc1, - 0xb1, 0xe1, 0xce, 0x45, 0xe9, 0xbc, 0xdf, 0x17, 0x20, 0x5f, 0x33, 0x74, 0xe7, 0x27, 0xf4, 0x9a, - 0xf8, 0x00, 0xa6, 0xfb, 0x4d, 0x88, 0xb2, 0x6f, 0x9f, 0x40, 0xa1, 0x66, 0xa8, 0x16, 0xee, 0x60, - 0x23, 0x8a, 0xce, 0x89, 0x30, 0xa5, 0xbb, 0x70, 0xb4, 0x83, 0xee, 0x2c, 0x33, 0x10, 0x8b, 0xbf, - 0x0d, 0x47, 0x3c, 0x55, 0x46, 0x39, 0x47, 0x9c, 0x81, 0x29, 0x03, 0x6f, 0xcb, 0x03, 0xf7, 0xba, - 0xb5, 0xa7, 0x0d, 0xbc, 0x4d, 0x9d, 0x2a, 0xbe, 0x0f, 0xb9, 0x65, 0xdc, 0xc6, 0x0e, 0x8e, 0x60, - 0x9e, 0xdb, 0x82, 0xbc, 0x8b, 0x15, 0x65, 0x48, 0x7e, 0x07, 0x10, 0x87, 0x55, 0x8c, 0x66, 0x04, - 0xed, 0x44, 0xe7, 0xc8, 0x9a, 0xe1, 0xf4, 0x2c, 0x83, 0x4d, 0xfe, 0xde, 0xf9, 0x08, 0x58, 0x01, - 0x99, 0xff, 0xdf, 0x4f, 0xa4, 0x63, 0x85, 0xb8, 0xb8, 0x0d, 0x33, 0xbe, 0xda, 0xa3, 0x8c, 0xcf, - 0x49, 0x48, 0xd0, 0x16, 0xc4, 0x16, 0xe2, 0x17, 0xb3, 0x95, 0xd4, 0xcb, 0xbd, 0x52, 0x7c, 0x15, - 0xef, 0x4a, 0x54, 0x28, 0xae, 0x43, 0x66, 0x53, 0x55, 0x8c, 0x1f, 0xde, 0x5f, 0xde, 0x91, 0x2f, - 0x04, 0xc8, 0x32, 0xc0, 0x28, 0xbb, 0x70, 0x1d, 0x12, 0x96, 0xb9, 0xcd, 0xba, 0x90, 0x59, 0x3a, - 0x19, 0x00, 0xb1, 0x8a, 0x77, 0xbd, 0xf9, 0x4b, 0xd5, 0xc5, 0x2d, 0x40, 0x12, 0x7e, 0x86, 0x2d, - 0x1b, 0x47, 0xda, 0xc7, 0xaf, 0x04, 0x98, 0xf1, 0xe1, 0xfe, 0x3f, 0xe8, 0xea, 0x36, 0x1c, 0xaf, - 0xb6, 0xb0, 0xfa, 0xb4, 0x6a, 0x1a, 0xb6, 0x6e, 0x3b, 0xd8, 0x50, 0x77, 0x23, 0x18, 0xc3, 0x67, - 0x60, 0x6a, 0x5b, 0x77, 0x5a, 0xb2, 0xa6, 0x37, 0x1a, 0x34, 0xb5, 0xdd, 0x11, 0x9c, 0x26, 0xe2, - 0x65, 0xbd, 0xd1, 0x10, 0x65, 0x28, 0x8e, 0x56, 0x1c, 0x65, 0x62, 0xfe, 0x99, 0x00, 0x33, 0xd5, - 0x16, 0x49, 0x8b, 0x5b, 0x96, 0xf9, 0x29, 0x8e, 0x20, 0x8c, 0x84, 0x25, 0x34, 0x28, 0x96, 0xaf, - 0x4f, 0x5c, 0x86, 0x2e, 0x40, 0xb6, 0xd3, 0xb3, 0x1d, 0x99, 0x04, 0x58, 0x37, 0x19, 0x4f, 0x9c, - 0xe2, 0x3a, 0x19, 0x52, 0xf2, 0x80, 0x15, 0x88, 0xdf, 0xc5, 0x60, 0xd6, 0xdf, 0xb2, 0x28, 0x07, - 0xc2, 0x35, 0x98, 0xb6, 0x08, 0xb6, 0x2d, 0x2b, 0x8d, 0x06, 0x56, 0x1d, 0xac, 0xf9, 0x26, 0xd7, - 0x3c, 0x2b, 0xbc, 0xc9, 0xcb, 0xd0, 0x55, 0xc8, 0x75, 0x74, 0x43, 0xb6, 0x1d, 0xc5, 0x72, 0xc8, - 0x8c, 0x43, 0x9b, 0x9d, 0xad, 0xa4, 0x5f, 0xee, 0x95, 0x12, 0x12, 0xc9, 0xf7, 0x4c, 0x47, 0x37, - 0x36, 0x49, 0xe9, 0x2a, 0xde, 0x45, 0x0d, 0x98, 0x24, 0xc4, 0x1c, 0xdb, 0xc5, 0x04, 0x1d, 0x67, - 0x6f, 0x04, 0xb4, 0x30, 0xa8, 0x6b, 0xe5, 0x4d, 0x6a, 0xb5, 0x62, 0x38, 0xd6, 0x6e, 0xe5, 0x04, - 0x69, 0xc8, 0x67, 0xdf, 0x97, 0x52, 0x54, 0x58, 0x5b, 0xfe, 0xe2, 0xfb, 0xd2, 0xe4, 0xba, 0xa9, - 0xe1, 0xda, 0xb2, 0xc4, 0xd1, 0xe7, 0x6e, 0x40, 0xc6, 0x63, 0x81, 0x0a, 0x10, 0x27, 0x4d, 0x23, - 0x5e, 0x49, 0x4a, 0xe4, 0x4f, 0x34, 0xeb, 0x5d, 0x97, 0x93, 0x7c, 0xdd, 0x7d, 0x3b, 0xf6, 0x96, - 0x20, 0xd6, 0xe1, 0x78, 0x05, 0x37, 0x75, 0xc3, 0x4b, 0xc6, 0x7f, 0xf8, 0xea, 0x21, 0x43, 0x71, - 0x14, 0x35, 0xca, 0xe1, 0xfa, 0x2f, 0x31, 0x38, 0xba, 0x62, 0x68, 0x91, 0xb6, 0x9a, 0x0c, 0x58, - 0xd5, 0xec, 0x74, 0x74, 0xc7, 0x3f, 0x60, 0x99, 0x0c, 0xdd, 0x80, 0xb4, 0x86, 0x15, 0xad, 0x4f, - 0x7b, 0x33, 0x4b, 0xa7, 0x3d, 0xd0, 0x64, 0xbf, 0x54, 0x6e, 0xb5, 0xd5, 0x72, 0xdd, 0xdd, 0x2f, - 0x49, 0x7d, 0x75, 0xf4, 0x5b, 0x70, 0xbc, 0xbf, 0xc3, 0x63, 0x68, 0xb2, 0x63, 0xe9, 0xcd, 0x26, - 0xb6, 0xf8, 0x26, 0xe7, 0x62, 0x40, 0x23, 0x6b, 0xdc, 0xa2, 0x4a, 0x0d, 0xea, 0x4c, 0x5f, 0x3a, - 0xaa, 0x07, 0x89, 0xd1, 0x7b, 0x90, 0x25, 0x05, 0x86, 0x43, 0xb7, 0x4e, 0x64, 0x13, 0x14, 0xdf, - 0xaf, 0xef, 0x3c, 0xcd, 0x98, 0x09, 0x91, 0xd8, 0xe2, 0x7f, 0x09, 0x70, 0x6c, 0xd8, 0xa3, 0x51, - 0x26, 0xda, 0x39, 0xc8, 0xf0, 0xae, 0x6f, 0x2b, 0xba, 0x9f, 0x3f, 0x01, 0x2b, 0x78, 0xa8, 0xe8, - 0x0e, 0x5a, 0x84, 0x99, 0xe5, 0x95, 0x0d, 0x69, 0xa5, 0x7a, 0xb3, 0xbe, 0xb2, 0x2c, 0x5b, 0xd8, - 0x36, 0xdb, 0xcf, 0xb0, 0x56, 0x8c, 0x93, 0x55, 0x55, 0x42, 0x5a, 0xbf, 0x48, 0xe2, 0x25, 0xa8, - 0x0c, 0x05, 0xd3, 0xc0, 0x72, 0xb7, 0xa5, 0xd8, 0x98, 0x3b, 0xd7, 0x47, 0xa3, 0xf3, 0xa6, 0x81, - 0x37, 0x48, 0x21, 0x73, 0x98, 0xe8, 0xc0, 0x91, 0x9b, 0x1a, 0x49, 0xd2, 0x6e, 0x5b, 0x8f, 0x82, - 0x15, 0x9e, 0x85, 0x29, 0x9b, 0x40, 0xd1, 0xd9, 0x20, 0x46, 0x67, 0x83, 0xfe, 0xe2, 0x9f, 0xa6, - 0x25, 0xab, 0x78, 0x57, 0xfc, 0x00, 0x90, 0xb7, 0xd6, 0x28, 0x53, 0x61, 0x9d, 0x77, 0xe8, 0x2e, - 0xb6, 0xa2, 0x60, 0x54, 0xfd, 0xa6, 0x72, 0xbc, 0x28, 0x9b, 0xfa, 0x7b, 0x70, 0x82, 0x42, 0xd3, - 0x41, 0xd6, 0xc0, 0xd6, 0x1a, 0x56, 0xec, 0x28, 0x48, 0xe0, 0x05, 0x98, 0x74, 0x14, 0xab, 0x89, - 0xd9, 0xb0, 0x4a, 0x56, 0xa6, 0x89, 0xc6, 0xcb, 0xbd, 0xfe, 0x94, 0x29, 0xf1, 0x62, 0x51, 0x81, - 0xb9, 0xa0, 0x06, 0x44, 0xd9, 0xc7, 0x7f, 0x12, 0x00, 0x51, 0x7a, 0xb9, 0x66, 0x9a, 0x4f, 0x7b, - 0xdd, 0x08, 0x7a, 0xf7, 0x1a, 0x40, 0x47, 0xd9, 0x91, 0xd9, 0x4a, 0xc4, 0x7b, 0xc8, 0x37, 0x1e, - 0x1d, 0x65, 0x87, 0xd6, 0x65, 0xa3, 0x45, 0x28, 0xa8, 0x84, 0x1b, 0x68, 0xd8, 0x92, 0x59, 0x5a, - 0xfb, 0xc9, 0xf0, 0xb4, 0x5b, 0x5a, 0x63, 0x85, 0x68, 0x1e, 0x52, 0x16, 0x63, 0x57, 0xbe, 0x74, - 0x71, 0x85, 0xe2, 0x7f, 0x13, 0xfa, 0xe5, 0xed, 0x47, 0x94, 0x93, 0xc1, 0x7b, 0x30, 0xd9, 0xef, - 0x0e, 0x99, 0xa8, 0xc4, 0x20, 0x10, 0xa2, 0xb0, 0x8c, 0x6d, 0xd5, 0xd2, 0xbb, 0x8e, 0x69, 0xb9, - 0xb3, 0x31, 0xb3, 0x43, 0x5b, 0x70, 0xa4, 0x6b, 0xe1, 0x06, 0x76, 0xd4, 0x16, 0xd6, 0x5c, 0xdf, - 0xc4, 0x5f, 0x11, 0xac, 0x30, 0x80, 0x60, 0x6e, 0x14, 0xff, 0x48, 0x80, 0x99, 0x3b, 0x58, 0xb1, - 0x9c, 0x27, 0x58, 0x71, 0xea, 0x3b, 0x51, 0xac, 0x2a, 0xd7, 0x21, 0x6e, 0x98, 0xdb, 0x7c, 0x47, - 0xbc, 0xff, 0x92, 0xc1, 0x9b, 0x45, 0xf4, 0xc5, 0x0f, 0x61, 0xd6, 0xdf, 0x90, 0x28, 0x07, 0xe9, - 0xdf, 0xc5, 0x60, 0xea, 0x76, 0x35, 0x82, 0xce, 0xbd, 0xc3, 0x77, 0x3d, 0xe1, 0x9e, 0xef, 0x57, - 0x53, 0xbe, 0x5d, 0x5d, 0xc5, 0xbb, 0x2e, 0x9d, 0x26, 0x56, 0xe8, 0x26, 0x4c, 0x39, 0x2d, 0x0b, - 0xdb, 0x2d, 0xb3, 0xad, 0xf1, 0x95, 0xf0, 0x40, 0x0e, 0x1a, 0x58, 0xcd, 0x61, 0x48, 0x52, 0x5c, - 0x74, 0x62, 0x40, 0x7a, 0x3c, 0x33, 0x30, 0x65, 0x3f, 0xa4, 0x1a, 0x17, 0xe1, 0x55, 0xe2, 0x30, - 0xb0, 0x12, 0xef, 0x03, 0x90, 0x8e, 0x44, 0x19, 0x83, 0xbf, 0x88, 0x43, 0x7e, 0xa3, 0x67, 0xb7, - 0xa2, 0x19, 0x65, 0x55, 0x80, 0x6e, 0xcf, 0x6e, 0x61, 0x4b, 0x76, 0x76, 0x0c, 0xde, 0xc9, 0x31, - 0x87, 0xae, 0x6e, 0x2f, 0x99, 0x5d, 0x7d, 0xc7, 0x40, 0xf7, 0x38, 0x08, 0x96, 0x07, 0x27, 0xb7, - 0x97, 0x3d, 0x20, 0xfc, 0x94, 0xb9, 0xcc, 0x8e, 0x97, 0xcb, 0xee, 0x29, 0x73, 0xb9, 0xbe, 0x63, - 0xdc, 0xc5, 0x8e, 0xe2, 0x03, 0xc4, 0x04, 0xf0, 0x1d, 0x48, 0x91, 0x1f, 0xb2, 0x63, 0xbe, 0x4a, - 0x78, 0x27, 0x89, 0x4d, 0xdd, 0x74, 0x33, 0x27, 0xf9, 0x6a, 0x99, 0x43, 0xc2, 0xcd, 0x2a, 0xdd, - 0xed, 0xe2, 0xe2, 0xe4, 0x82, 0x70, 0x31, 0x1f, 0xe8, 0x09, 0xee, 0xfb, 0xfa, 0x6e, 0xd7, 0xdd, - 0xe3, 0xa5, 0x69, 0xbd, 0xbb, 0x5d, 0x2c, 0xfe, 0xa5, 0x00, 0xd3, 0xfd, 0xd8, 0x44, 0x39, 0xf1, - 0x55, 0x7d, 0x1e, 0x7e, 0xf5, 0x30, 0x11, 0xaf, 0x8a, 0x7f, 0x10, 0x83, 0x59, 0xce, 0x7f, 0xd8, - 0x6c, 0x1e, 0xc1, 0xf8, 0xb9, 0x07, 0xc0, 0x09, 0xe4, 0xa0, 0x61, 0x87, 0x08, 0x3d, 0xc3, 0x20, - 0xa1, 0xaf, 0x90, 0xbd, 0x8f, 0xe2, 0xf4, 0xd8, 0x32, 0x94, 0x5f, 0x3a, 0xbb, 0x7f, 0x2f, 0x37, - 0xa9, 0xae, 0x3b, 0x00, 0x98, 0x25, 0x21, 0xe4, 0x5d, 0x53, 0xb7, 0x4d, 0xc3, 0xb7, 0x44, 0x71, - 0x99, 0xf8, 0x9b, 0x70, 0x74, 0xc8, 0x0b, 0x51, 0xa6, 0xe7, 0xe7, 0x31, 0x38, 0xe1, 0x87, 0x8f, - 0xe8, 0xc4, 0xea, 0x67, 0xe8, 0xe9, 0x3c, 0x64, 0xd7, 0x4d, 0xb3, 0xcf, 0x01, 0xc4, 0x1c, 0x64, - 0xd8, 0x6f, 0xea, 0x0c, 0xc2, 0xaa, 0x82, 0x3c, 0x15, 0x2d, 0x73, 0xcc, 0x46, 0xc4, 0x6f, 0x0f, - 0x79, 0x46, 0x5d, 0x87, 0xdc, 0x8f, 0x40, 0x88, 0xff, 0x5a, 0x00, 0x54, 0xb7, 0x7a, 0x86, 0xaa, - 0x38, 0x78, 0xcd, 0x6c, 0x46, 0xd0, 0xbb, 0x39, 0x48, 0xea, 0x86, 0x86, 0x77, 0x68, 0xef, 0x12, - 0x6e, 0x1f, 0xa8, 0x08, 0x5d, 0x87, 0x34, 0x25, 0x4a, 0xb2, 0xae, 0xd1, 0xa1, 0x12, 0xaf, 0xcc, - 0x91, 0xe2, 0x17, 0x7b, 0xa5, 0x14, 0x0d, 0x59, 0x6d, 0xf9, 0xe5, 0xe0, 0x4f, 0x29, 0x45, 0x75, - 0x6b, 0x9a, 0xf8, 0x18, 0x66, 0x7c, 0x6d, 0x8c, 0xd2, 0x01, 0x7f, 0x48, 0x0f, 0xf9, 0x68, 0xaf, - 0xa3, 0xda, 0x0c, 0xfc, 0x02, 0x92, 0x6d, 0x02, 0xb5, 0x4f, 0x7c, 0x69, 0x55, 0xae, 0x6f, 0xa8, - 0x32, 0x21, 0x7e, 0xb3, 0x51, 0x6f, 0x4b, 0x0e, 0xd7, 0x92, 0x0f, 0xc9, 0xe4, 0xee, 0xf5, 0x48, - 0x94, 0xfe, 0xfe, 0x1f, 0x01, 0x8e, 0x55, 0xcd, 0x4e, 0xb7, 0xe7, 0x60, 0x7a, 0x9e, 0x68, 0xf7, - 0x3a, 0x11, 0x74, 0x74, 0x1e, 0x52, 0xee, 0x31, 0x1e, 0xe9, 0x6a, 0xce, 0xdd, 0x4b, 0x70, 0x21, - 0x6a, 0x40, 0x46, 0xe5, 0xb5, 0xb9, 0x63, 0x2f, 0x5b, 0x59, 0x21, 0x3a, 0xff, 0xb6, 0x57, 0x5a, - 0x6c, 0xea, 0x4e, 0xab, 0xf7, 0xa4, 0xac, 0x9a, 0x9d, 0xc5, 0x7e, 0x8d, 0xda, 0x93, 0xc5, 0xa1, - 0xbb, 0xe8, 0x5e, 0x4f, 0xd7, 0xca, 0x5b, 0x5b, 0xb5, 0xe5, 0x17, 0x7b, 0x25, 0x70, 0xdb, 0x5e, - 0x5b, 0x96, 0xc0, 0x45, 0xae, 0x69, 0x68, 0x01, 0xd2, 0xb6, 0xa1, 0x74, 0xed, 0x96, 0xe9, 0x3f, - 0x03, 0xe8, 0x4b, 0xc5, 0x8f, 0xe1, 0xf8, 0x48, 0xf7, 0xa3, 0xf4, 0xef, 0x37, 0x31, 0x38, 0xfa, - 0x00, 0x5b, 0x7a, 0x63, 0xf7, 0x97, 0xd0, 0xbd, 0x73, 0x90, 0x76, 0x7f, 0x51, 0xf7, 0x66, 0xa5, - 0xfe, 0x6f, 0xf4, 0x1b, 0x1e, 0xd7, 0x33, 0xc2, 0xf6, 0x5a, 0xe0, 0x36, 0xac, 0xe1, 0x6c, 0x72, - 0xb5, 0x65, 0xc5, 0x51, 0x3c, 0x91, 0xf9, 0x08, 0x8e, 0x0d, 0x3b, 0x2e, 0xca, 0xc0, 0xfc, 0x43, - 0x01, 0xb2, 0x3c, 0x14, 0x5b, 0x06, 0x71, 0xda, 0x22, 0xc4, 0x9b, 0xd8, 0xe1, 0x90, 0xa7, 0x83, - 0x36, 0x2e, 0xfd, 0xf7, 0x02, 0x12, 0xd1, 0x24, 0x06, 0xdd, 0x9e, 0x13, 0xb0, 0x7f, 0x18, 0x10, - 0xca, 0x81, 0x41, 0xb7, 0xe7, 0xa0, 0xfb, 0x40, 0x36, 0xdd, 0xee, 0xcd, 0xad, 0x4c, 0x8c, 0xe3, - 0xa1, 0xa7, 0x7d, 0x81, 0x17, 0xd8, 0x52, 0x5e, 0xf5, 0x89, 0x09, 0xb5, 0x1d, 0x5c, 0x41, 0x26, - 0x42, 0xdd, 0x3c, 0x7c, 0xeb, 0xe9, 0xb9, 0xa1, 0x44, 0x6f, 0xc1, 0xa4, 0x46, 0xef, 0xc0, 0x78, - 0x98, 0x16, 0x02, 0xec, 0x7d, 0xb7, 0x88, 0x12, 0xd7, 0x47, 0x77, 0x20, 0xcb, 0xfe, 0x62, 0xdb, - 0x6d, 0x4a, 0xad, 0x33, 0x4b, 0xe7, 0xc2, 0xed, 0x3d, 0x84, 0x49, 0xca, 0x68, 0x03, 0x19, 0x5a, - 0x82, 0x84, 0xad, 0x2a, 0x46, 0x31, 0x15, 0xca, 0x7f, 0x3d, 0x37, 0x49, 0x12, 0xd5, 0x45, 0x0f, - 0xe1, 0xc8, 0x13, 0xdc, 0xd4, 0x0d, 0xd9, 0x19, 0x50, 0x99, 0x62, 0x7a, 0x84, 0x3d, 0xb9, 0x00, - 0x21, 0x87, 0xda, 0x52, 0xe1, 0xc9, 0x50, 0x01, 0x09, 0x13, 0x36, 0x34, 0x1f, 0xec, 0x54, 0x68, - 0x98, 0x02, 0xcf, 0x9c, 0xa5, 0x3c, 0xf6, 0x89, 0xd1, 0x0a, 0x64, 0x14, 0x8d, 0xde, 0x13, 0x74, - 0xdb, 0xba, 0x53, 0x04, 0x0a, 0x17, 0x44, 0xcb, 0x46, 0x4e, 0x22, 0x25, 0x50, 0xfa, 0xa2, 0x01, - 0x4c, 0x87, 0x30, 0x8f, 0x62, 0x66, 0x7f, 0x18, 0x2f, 0x3f, 0xe2, 0x30, 0x54, 0x84, 0x56, 0x21, - 0xd7, 0x72, 0x4f, 0x12, 0x28, 0xe7, 0xcc, 0x52, 0xa0, 0xf3, 0x01, 0x40, 0x01, 0x47, 0x1f, 0x52, - 0xb6, 0xe5, 0x11, 0xa2, 0xab, 0x10, 0x6b, 0xaa, 0xc5, 0x1c, 0x45, 0x38, 0xb5, 0xdf, 0x76, 0x5f, - 0x8a, 0x35, 0x55, 0xf4, 0x0e, 0xa4, 0xd9, 0x56, 0x6c, 0xc7, 0x28, 0xe6, 0x43, 0x93, 0xd7, 0xbf, - 0x0b, 0x96, 0xe8, 0x96, 0x91, 0xd4, 0x75, 0x07, 0xb2, 0x8c, 0xaf, 0xb4, 0xe9, 0x11, 0x54, 0x71, - 0x3a, 0x74, 0xc0, 0x8d, 0x1e, 0xb8, 0x49, 0x19, 0x6b, 0x20, 0x43, 0xeb, 0x90, 0xe7, 0x47, 0xc9, - 0xfc, 0x70, 0xac, 0x58, 0xa0, 0x58, 0x17, 0x82, 0xa7, 0x92, 0x91, 0x9d, 0x95, 0x94, 0xb3, 0xbc, - 0x52, 0xf4, 0x31, 0xcc, 0xfa, 0xf1, 0x78, 0x4a, 0x1c, 0xa1, 0xa8, 0x57, 0xc7, 0xa2, 0x7a, 0x33, - 0x03, 0x59, 0x23, 0x45, 0xe8, 0x3a, 0x24, 0x59, 0xcc, 0x11, 0x05, 0x2c, 0x05, 0x00, 0xfa, 0xc2, - 0xcd, 0xb4, 0x89, 0xc3, 0x1c, 0xce, 0xd4, 0xe4, 0xb6, 0xd9, 0x2c, 0xce, 0x84, 0x3a, 0x6c, 0x94, - 0x74, 0x4a, 0x19, 0x67, 0x20, 0x23, 0x63, 0xc6, 0x62, 0x72, 0x99, 0x51, 0x98, 0xd9, 0xd0, 0x31, - 0x13, 0x40, 0xdf, 0xa4, 0xac, 0xe5, 0x11, 0xd2, 0x38, 0xb2, 0x53, 0x45, 0x99, 0xa6, 0xfd, 0xd1, - 0xf0, 0x38, 0x8e, 0xdc, 0x23, 0x4b, 0x19, 0x6b, 0x20, 0x43, 0x75, 0x28, 0xa8, 0x6c, 0xf9, 0x96, - 0xfb, 0x2b, 0xd1, 0x31, 0x8a, 0x76, 0x29, 0x70, 0x4e, 0x0d, 0x22, 0x3a, 0xd2, 0xb4, 0xea, 0x97, - 0x93, 0x19, 0xe0, 0x19, 0x5d, 0x7a, 0x06, 0xa0, 0xc7, 0x43, 0x67, 0x80, 0xc0, 0xd5, 0x5d, 0xca, - 0x3f, 0xf3, 0x89, 0xc9, 0x6c, 0x45, 0xb1, 0x64, 0x75, 0x70, 0x61, 0x5b, 0x2c, 0x86, 0xce, 0x56, - 0x21, 0x97, 0xca, 0x52, 0x41, 0x1d, 0x2a, 0x20, 0x53, 0xa7, 0x61, 0x9a, 0xdd, 0xe2, 0x89, 0xd0, - 0xa9, 0xd3, 0xb3, 0x33, 0x93, 0xa8, 0x2e, 0xc9, 0x42, 0xdd, 0xd0, 0x1d, 0xba, 0x02, 0xcd, 0x85, - 0x66, 0xa1, 0xff, 0x15, 0x90, 0x94, 0xd2, 0xd9, 0x6f, 0x32, 0x14, 0x54, 0x7a, 0x47, 0x29, 0xf3, - 0xdb, 0xdc, 0x93, 0xa1, 0x43, 0x21, 0xe0, 0x02, 0x59, 0xca, 0xaa, 0x1e, 0x21, 0x49, 0x44, 0x87, - 0xb3, 0x6c, 0x3e, 0xb0, 0x4e, 0x85, 0x26, 0x62, 0x10, 0x1d, 0x97, 0x72, 0x8e, 0x57, 0x4a, 0x12, - 0x91, 0x4d, 0x91, 0x43, 0xa8, 0xa7, 0x43, 0x13, 0x31, 0xf4, 0x02, 0x42, 0x42, 0xca, 0x48, 0xd1, - 0xdb, 0x89, 0xe7, 0x5f, 0x97, 0x04, 0xf1, 0xcb, 0x02, 0xe4, 0x5c, 0x86, 0xc1, 0xd8, 0xc3, 0xeb, - 0x5e, 0xf6, 0x30, 0x1f, 0xc6, 0x1e, 0x98, 0x05, 0xa3, 0x0f, 0xaf, 0x7b, 0xe9, 0xc3, 0x7c, 0x18, - 0x7d, 0x70, 0x2d, 0x08, 0x7f, 0x90, 0xc2, 0xf8, 0xc3, 0xa5, 0x03, 0xf0, 0x07, 0x0e, 0x34, 0x4c, - 0x20, 0x2a, 0xa3, 0x04, 0xe2, 0xec, 0xfe, 0x04, 0x82, 0x03, 0x79, 0x18, 0xc4, 0x8d, 0x21, 0x06, - 0x71, 0x66, 0x1f, 0x06, 0xc1, 0xad, 0x5d, 0x0a, 0x51, 0x0b, 0xa4, 0x10, 0xe7, 0xc7, 0x51, 0x08, - 0x8e, 0xe2, 0xe3, 0x10, 0x6f, 0xf8, 0x38, 0x44, 0x29, 0x94, 0x43, 0x70, 0x5b, 0x46, 0x22, 0x1e, - 0x85, 0x93, 0x88, 0x2b, 0x07, 0x22, 0x11, 0x1c, 0x6d, 0x94, 0x45, 0x48, 0x61, 0x2c, 0xe2, 0xd2, - 0x01, 0x58, 0x84, 0x1b, 0xac, 0x21, 0x1a, 0x71, 0x2b, 0x88, 0x46, 0x9c, 0x1b, 0x43, 0x23, 0x38, - 0x96, 0x97, 0x47, 0xdc, 0x0a, 0xe2, 0x11, 0xe7, 0xc6, 0xf0, 0x08, 0x1f, 0x0e, 0x23, 0x12, 0x6b, - 0xc1, 0x44, 0xe2, 0xc2, 0x58, 0x22, 0xc1, 0xb1, 0xfc, 0x4c, 0xe2, 0x9a, 0x87, 0x49, 0x9c, 0x0e, - 0x61, 0x12, 0xdc, 0x90, 0x50, 0x89, 0x77, 0x47, 0xa8, 0x84, 0xb8, 0x1f, 0x95, 0xe0, 0x96, 0x7d, - 0x2e, 0x51, 0x0b, 0xe4, 0x12, 0xe7, 0xc7, 0x71, 0x09, 0x77, 0xe4, 0x79, 0xc9, 0xc4, 0xbd, 0x10, - 0x32, 0x71, 0x71, 0x3c, 0x99, 0xe0, 0x70, 0x43, 0x6c, 0x42, 0xde, 0x97, 0x4d, 0x5c, 0x3b, 0x20, - 0x9b, 0xe0, 0xd8, 0x41, 0x74, 0xe2, 0x57, 0xfd, 0x74, 0x62, 0x21, 0x9c, 0x4e, 0x70, 0x10, 0xce, - 0x27, 0x6a, 0x81, 0x7c, 0xe2, 0xfc, 0x38, 0x3e, 0xe1, 0x3a, 0xcd, 0x4b, 0x28, 0xd6, 0x82, 0x09, - 0xc5, 0x85, 0xb1, 0x84, 0xc2, 0x1d, 0x3b, 0x3e, 0x46, 0x51, 0x0b, 0x64, 0x14, 0xe7, 0xc7, 0x31, - 0x8a, 0x7e, 0x34, 0x3d, 0x94, 0x62, 0x2b, 0x94, 0x52, 0x5c, 0x3e, 0x08, 0xa5, 0xe0, 0x90, 0x23, - 0x9c, 0x42, 0x0a, 0xe3, 0x14, 0x97, 0x0e, 0xc0, 0x29, 0xdc, 0xf9, 0x60, 0x88, 0x54, 0x3c, 0x0a, - 0x27, 0x15, 0x57, 0x0e, 0x44, 0x2a, 0xdc, 0xd9, 0x6b, 0x84, 0x55, 0xbc, 0xe1, 0x63, 0x15, 0xa5, - 0x50, 0x56, 0xe1, 0x4e, 0xa6, 0x94, 0x56, 0xbc, 0x3b, 0x42, 0x2b, 0xc4, 0xfd, 0x68, 0x85, 0x9b, - 0x91, 0x2e, 0xaf, 0x58, 0x0b, 0xe6, 0x15, 0x17, 0x0e, 0xf8, 0x46, 0x6a, 0x88, 0x58, 0xc8, 0xfb, - 0x12, 0x81, 0x6b, 0x07, 0x24, 0x02, 0x6e, 0x0e, 0x85, 0x31, 0x81, 0xf7, 0x13, 0xe9, 0x53, 0x85, - 0xd3, 0xe2, 0xdf, 0x26, 0x60, 0x92, 0x7f, 0xe5, 0xe0, 0xbb, 0x5b, 0x14, 0x0e, 0x73, 0xb7, 0x88, - 0x96, 0x21, 0x65, 0xe1, 0x6e, 0x5b, 0x57, 0x15, 0xce, 0x0e, 0xce, 0x06, 0x8e, 0x63, 0xaa, 0x31, - 0x72, 0x85, 0xed, 0x9a, 0x1e, 0xf2, 0x70, 0x17, 0xdd, 0x80, 0x5c, 0xcf, 0xc6, 0x96, 0xdc, 0xb5, - 0x74, 0xd3, 0xd2, 0x9d, 0x5d, 0x4a, 0x0a, 0x84, 0xca, 0x2c, 0x7f, 0x41, 0x91, 0xdd, 0xb2, 0xb1, - 0xb5, 0xc1, 0xcb, 0xa4, 0x6c, 0xcf, 0xf3, 0xcb, 0xfd, 0xc0, 0x23, 0x79, 0xf0, 0x0f, 0x3c, 0x1e, - 0x42, 0xc1, 0xc2, 0x8a, 0xe6, 0x1b, 0xbf, 0xec, 0x82, 0x2e, 0x38, 0x75, 0x15, 0xcd, 0x33, 0x48, - 0x3d, 0x17, 0x75, 0xd3, 0x96, 0xbf, 0x08, 0x2d, 0x41, 0xd2, 0xb1, 0x14, 0x15, 0x73, 0x36, 0x70, - 0x6a, 0x38, 0x02, 0xfc, 0x5b, 0x17, 0xf6, 0xe1, 0x08, 0x53, 0x45, 0x6f, 0xc2, 0xd1, 0x8e, 0xb2, - 0x43, 0xdf, 0x4b, 0xc9, 0xee, 0xd4, 0x44, 0xef, 0xb2, 0xd3, 0x9e, 0xa7, 0x49, 0xa8, 0xa3, 0xec, - 0x50, 0x23, 0xa6, 0xb0, 0x8a, 0x77, 0x6d, 0x74, 0x05, 0xf2, 0x9a, 0x6e, 0x3b, 0xba, 0xa1, 0xba, - 0xaf, 0xad, 0xa6, 0x3c, 0x67, 0x8d, 0x39, 0xb7, 0x8c, 0x3d, 0xab, 0xfa, 0x53, 0x01, 0xb2, 0x15, - 0xc5, 0x51, 0x5b, 0xee, 0x39, 0xe0, 0xaf, 0x0d, 0x9d, 0x66, 0x9d, 0x08, 0x5e, 0x3d, 0x83, 0xaf, - 0x0f, 0x6f, 0x42, 0x9a, 0x37, 0xd5, 0x7d, 0x39, 0x51, 0x0a, 0x9f, 0x40, 0x29, 0x53, 0x75, 0x4f, - 0x40, 0x5d, 0xb3, 0xb7, 0x13, 0x7f, 0xfe, 0x75, 0x69, 0x42, 0xfc, 0xfb, 0x38, 0xe4, 0x78, 0xb3, - 0xf8, 0x29, 0x5b, 0x6d, 0xa8, 0x5d, 0x41, 0x79, 0xe8, 0xb3, 0x08, 0x6f, 0xe5, 0x32, 0x4c, 0x59, - 0x5c, 0xc9, 0x6d, 0xe6, 0xc2, 0x3e, 0x67, 0x76, 0xde, 0x76, 0x0e, 0x0c, 0xe7, 0xbe, 0x8c, 0xf5, - 0x93, 0xac, 0x0c, 0x49, 0xfa, 0x05, 0x15, 0x6f, 0x5a, 0xd0, 0x41, 0xfa, 0x0a, 0x29, 0x97, 0x98, - 0x1a, 0x49, 0xca, 0xfa, 0x0f, 0xbb, 0xf0, 0x3f, 0xc4, 0xd7, 0x4b, 0x17, 0x08, 0x5d, 0x6f, 0xb7, - 0xe9, 0x3b, 0x51, 0x3e, 0x2e, 0x12, 0xf4, 0xd5, 0x5a, 0xbe, 0x2f, 0xa6, 0x43, 0xe2, 0x90, 0xd7, - 0xda, 0x3c, 0x70, 0xff, 0x2b, 0x40, 0x46, 0x52, 0x1a, 0x4e, 0xd5, 0xec, 0x74, 0x14, 0x43, 0xf3, - 0xa5, 0xbd, 0x70, 0xf0, 0xb4, 0xbf, 0x0f, 0x79, 0xd3, 0xd2, 0x09, 0x13, 0x3e, 0xfc, 0xd4, 0x93, - 0x63, 0x08, 0xbc, 0x18, 0xbd, 0x09, 0x71, 0xb5, 0xa3, 0x71, 0x8f, 0x95, 0xc2, 0x47, 0x0f, 0x1d, - 0x87, 0x6e, 0xc7, 0xd4, 0x8e, 0x86, 0xae, 0xc2, 0x34, 0x49, 0x44, 0x3a, 0x5f, 0xcb, 0xec, 0xf2, - 0x2a, 0xe1, 0xb9, 0xbc, 0xca, 0x75, 0x94, 0x1d, 0x3a, 0x05, 0xd7, 0x48, 0x91, 0xf8, 0xbb, 0x80, - 0xe8, 0xab, 0x2e, 0x0e, 0xc4, 0x47, 0xc8, 0xaf, 0x40, 0xca, 0x30, 0xb5, 0xbe, 0x17, 0x92, 0x95, - 0x22, 0xf7, 0x02, 0x7f, 0x2a, 0xfb, 0x72, 0x6f, 0xf0, 0x68, 0x96, 0x28, 0xd6, 0xa8, 0xe7, 0xe8, - 0xf3, 0x59, 0x62, 0xc3, 0x1e, 0x55, 0xf5, 0x3d, 0xc7, 0x9f, 0x8d, 0x79, 0x5f, 0x90, 0xa5, 0xa8, - 0x6e, 0x4d, 0x13, 0x3f, 0x17, 0xe0, 0xc8, 0x86, 0xd9, 0x6e, 0xfb, 0x9f, 0x49, 0xdf, 0x1e, 0xca, - 0x9e, 0x20, 0x76, 0x3d, 0xda, 0xec, 0x80, 0xdc, 0xb9, 0x02, 0xee, 0x70, 0x91, 0x03, 0x1e, 0x4f, - 0xe7, 0x78, 0x19, 0xab, 0x5c, 0x7c, 0x0c, 0xc8, 0xdb, 0x14, 0x9e, 0xc9, 0x74, 0x3d, 0xb1, 0x7b, - 0x6d, 0xc7, 0x2e, 0x0a, 0x34, 0xf9, 0x5e, 0x71, 0x3d, 0xa1, 0xa6, 0xe2, 0x3f, 0xc6, 0x00, 0x49, - 0xd8, 0xc6, 0xd6, 0x33, 0xc5, 0xfb, 0xbc, 0x36, 0xb2, 0x8e, 0xfe, 0x3a, 0x64, 0x1b, 0x96, 0xd9, - 0x91, 0xdd, 0xb0, 0xb1, 0x10, 0x9c, 0xe2, 0x21, 0x80, 0x5b, 0x96, 0xd9, 0x19, 0x09, 0x1d, 0x34, - 0x5c, 0xa9, 0x86, 0x2a, 0x90, 0xa3, 0xf6, 0xfd, 0x18, 0xc6, 0x29, 0xc0, 0x3c, 0x07, 0xc8, 0x10, - 0x80, 0x80, 0x38, 0x66, 0x1a, 0x7d, 0xb9, 0x3f, 0x79, 0x12, 0x07, 0x4f, 0x9e, 0xd7, 0x00, 0x98, - 0x99, 0xad, 0x7f, 0x8a, 0x7d, 0xdf, 0x1b, 0x4e, 0x51, 0xf9, 0xa6, 0xfe, 0x29, 0x16, 0x1f, 0xc1, - 0x8c, 0xcf, 0x7d, 0x3c, 0x38, 0x0b, 0x64, 0x06, 0x27, 0x62, 0xcc, 0x46, 0x6a, 0x7a, 0x30, 0x41, - 0x33, 0x29, 0x2a, 0x01, 0xdb, 0x6d, 0xc8, 0xaa, 0xd9, 0xe3, 0x1f, 0x1a, 0x25, 0x25, 0x56, 0x61, - 0x95, 0x48, 0x2e, 0xaf, 0x11, 0xe4, 0x91, 0xa5, 0x11, 0xe5, 0x01, 0xaa, 0xf7, 0xd6, 0x37, 0x6b, - 0x9b, 0xf5, 0x95, 0xf5, 0x7a, 0x61, 0x02, 0xe5, 0x60, 0x8a, 0xfc, 0x5e, 0x59, 0xdf, 0xdc, 0xda, - 0x2c, 0x08, 0xa8, 0x00, 0xd9, 0xda, 0xba, 0x47, 0x21, 0x36, 0x97, 0xf8, 0xe3, 0xbf, 0x99, 0x9f, - 0xb8, 0xfc, 0x10, 0x32, 0x9e, 0x97, 0x30, 0x08, 0x41, 0x7e, 0x63, 0x6b, 0xf3, 0x8e, 0x5c, 0xaf, - 0xdd, 0x5d, 0xd9, 0xac, 0xdf, 0xbc, 0xbb, 0x51, 0x98, 0x20, 0xc8, 0x54, 0x76, 0xb3, 0x72, 0x4f, - 0xaa, 0x17, 0x84, 0xfe, 0xef, 0xfa, 0xbd, 0xad, 0xea, 0x9d, 0x42, 0xac, 0xff, 0xfb, 0xfe, 0xd6, - 0x8a, 0xf4, 0x41, 0x21, 0xce, 0x80, 0x97, 0xbe, 0x8a, 0x41, 0xda, 0x7d, 0xc3, 0x8c, 0xd6, 0x20, - 0x49, 0xd3, 0x1f, 0x8d, 0x9b, 0x18, 0xe6, 0x16, 0xc6, 0xad, 0x3b, 0xe2, 0x04, 0xfa, 0x10, 0x60, - 0x30, 0xee, 0x51, 0xd0, 0xf0, 0x1e, 0xc9, 0xd0, 0xb9, 0x73, 0x63, 0xb4, 0xfa, 0xe0, 0x8f, 0x21, - 0xc5, 0x02, 0x87, 0x51, 0xf0, 0x11, 0xe5, 0x70, 0x4e, 0xcc, 0x9d, 0x1f, 0xa7, 0xe6, 0x62, 0x2f, - 0x3d, 0x82, 0xf4, 0xca, 0xce, 0x8f, 0xe1, 0x92, 0xa5, 0x7f, 0xa6, 0xdf, 0xf1, 0x31, 0x68, 0xf6, - 0x2d, 0xc0, 0xcf, 0xd6, 0x4b, 0x95, 0x33, 0xcf, 0xff, 0x63, 0x7e, 0xe2, 0xf9, 0x8b, 0x79, 0xe1, - 0xdb, 0x17, 0xf3, 0xc2, 0xbf, 0xbe, 0x98, 0x17, 0xfe, 0xfd, 0xc5, 0xbc, 0xf0, 0x27, 0xff, 0x39, - 0x3f, 0xf1, 0x38, 0xc5, 0x0d, 0x1f, 0xa5, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xa2, 0x65, 0xe1, - 0x11, 0xb4, 0x3d, 0x00, 0x00, + // 3414 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xdc, 0x9b, 0xdb, 0x6f, 0xdb, 0xd6, + 0x1d, 0xc7, 0x43, 0x49, 0xb6, 0xe5, 0x9f, 0x2e, 0x56, 0x8e, 0x9d, 0x44, 0x71, 0x12, 0xcb, 0x61, + 0x73, 0x6f, 0x22, 0x17, 0x6e, 0xb3, 0x36, 0x5d, 0x8b, 0x35, 0x92, 0xdd, 0x44, 0xb5, 0xe3, 0x24, + 0xb4, 0x9c, 0xa4, 0xed, 0x5a, 0x8e, 0x21, 0x8f, 0x24, 0x22, 0x12, 0xa9, 0x92, 0x54, 0x2c, 0x6d, + 0x03, 0x86, 0x15, 0xc3, 0x2e, 0x05, 0x0a, 0x6c, 0xc0, 0x80, 0x6d, 0x18, 0x06, 0x14, 0xdb, 0xcb, + 0x9e, 0xf6, 0xb8, 0x02, 0x7b, 0x1f, 0x90, 0xb7, 0xf5, 0x71, 0x58, 0x01, 0x77, 0xcb, 0xb0, 0xbf, + 0x60, 0x6f, 0x01, 0x36, 0x0c, 0xe7, 0x42, 0x89, 0x94, 0x48, 0xd9, 0x71, 0x59, 0x74, 0xdb, 0x4b, + 0x62, 0x9e, 0xcb, 0x97, 0xe7, 0xf7, 0x3b, 0xe7, 0xfc, 0xce, 0xe7, 0x9c, 0x43, 0xc1, 0x31, 0xd5, + 0x54, 0x1f, 0x58, 0xa6, 0xa2, 0x36, 0x96, 0xe8, 0xbf, 0xed, 0xfb, 0x4b, 0x4a, 0x5b, 0x2f, 0xb6, + 0x2d, 0xd3, 0x31, 0xd1, 0xc1, 0x7e, 0x66, 0x91, 0x67, 0xce, 0x1f, 0x1f, 0x2d, 0xaf, 0x29, 0x8e, + 0xc2, 0x2a, 0xcc, 0x2f, 0x8c, 0xe6, 0x62, 0xcb, 0x32, 0x2d, 0x9b, 0xe7, 0x9f, 0x1e, 0xcd, 0xd7, + 0x0d, 0x07, 0x5b, 0x86, 0xd2, 0x94, 0x2d, 0xa5, 0xe6, 0xf0, 0x62, 0x8b, 0xa3, 0xc5, 0x5a, 0xd8, + 0x51, 0x3c, 0x2f, 0xba, 0x38, 0x28, 0x61, 0x3b, 0xa6, 0xa5, 0xd4, 0xf1, 0x12, 0x36, 0xea, 0xba, + 0xe1, 0xfe, 0x47, 0x6a, 0x3c, 0x54, 0x55, 0x5e, 0xfa, 0xe4, 0xa0, 0x74, 0xc7, 0xd1, 0x9b, 0x4b, + 0x8e, 0xa5, 0xa8, 0xba, 0x51, 0x5f, 0xb2, 0xdb, 0x8a, 0xc1, 0x8b, 0x88, 0x43, 0x45, 0x1a, 0x4d, + 0x75, 0xc9, 0xd1, 0x5b, 0xd8, 0x76, 0x94, 0x56, 0x9b, 0x97, 0x99, 0xab, 0x9b, 0x75, 0x93, 0xfe, + 0xb9, 0x44, 0xfe, 0x62, 0xa9, 0xe2, 0xaf, 0x04, 0xc8, 0x4a, 0xd8, 0x6e, 0x9b, 0x86, 0x8d, 0xaf, + 0x63, 0x45, 0xc3, 0x16, 0x7a, 0x0e, 0xe2, 0x4e, 0xd7, 0xc8, 0xc7, 0x17, 0x85, 0x73, 0xa9, 0xe5, + 0x85, 0xe2, 0x88, 0x17, 0x8b, 0x55, 0x4b, 0x31, 0x6c, 0x45, 0x75, 0x74, 0xd3, 0x90, 0x48, 0x51, + 0xf4, 0x12, 0xa4, 0x2c, 0x6c, 0x77, 0x5a, 0x58, 0x26, 0x6d, 0xca, 0x27, 0x68, 0xcd, 0x23, 0x01, + 0x35, 0x37, 0xdb, 0x8a, 0x21, 0x01, 0x2b, 0x4b, 0xfe, 0x46, 0x05, 0x48, 0x1a, 0x9d, 0x96, 0xfc, + 0x00, 0xf7, 0xec, 0xfc, 0xc4, 0xa2, 0x70, 0x2e, 0x5e, 0x4a, 0x3c, 0xda, 0x29, 0x1c, 0x90, 0xa6, + 0x8c, 0x4e, 0x6b, 0x0d, 0xf7, 0x6c, 0xf1, 0x1a, 0xc0, 0x35, 0xec, 0x48, 0xf8, 0xbd, 0x0e, 0xb6, + 0x1d, 0x74, 0x05, 0x26, 0x1b, 0xb4, 0x91, 0x79, 0x61, 0xec, 0x3b, 0x4a, 0x49, 0xa2, 0xf2, 0xc9, + 0x4e, 0x41, 0x90, 0x78, 0x05, 0xf1, 0x7d, 0x01, 0x52, 0x54, 0x89, 0xd9, 0x8a, 0xca, 0x43, 0x52, + 0x27, 0x03, 0xa4, 0xfc, 0x8e, 0x19, 0x15, 0x45, 0x45, 0x98, 0x78, 0xa8, 0x34, 0x3b, 0x38, 0x1f, + 0xa3, 0x1a, 0xf9, 0x00, 0x8d, 0x3b, 0x24, 0x5f, 0x62, 0xc5, 0xc4, 0x8f, 0x05, 0x80, 0x5b, 0x9d, + 0x08, 0xcc, 0x41, 0x2f, 0xec, 0xf1, 0xcd, 0xdc, 0x9f, 0xac, 0x30, 0x3a, 0x0e, 0x93, 0xba, 0xd1, + 0xd4, 0x0d, 0x4c, 0x7b, 0x37, 0xc9, 0x33, 0x79, 0x1a, 0x9a, 0x87, 0x89, 0xfb, 0x4d, 0xdd, 0xd0, + 0x68, 0x07, 0xba, 0x99, 0x2c, 0x49, 0x94, 0x20, 0x45, 0x1b, 0x1e, 0xa1, 0xf7, 0xc4, 0x4f, 0x05, + 0x38, 0x54, 0x36, 0x0d, 0x4d, 0x27, 0x23, 0x49, 0x69, 0x7e, 0x99, 0x8e, 0xb9, 0x0c, 0xd3, 0xb8, + 0xdb, 0x96, 0x59, 0xcd, 0xf8, 0x2e, 0x9d, 0x99, 0xc4, 0xdd, 0x36, 0xfd, 0x6b, 0xac, 0xc7, 0xde, + 0x81, 0xc3, 0xc3, 0xc6, 0x45, 0xe9, 0xbc, 0xef, 0x0a, 0x90, 0xad, 0x18, 0xba, 0xf3, 0x25, 0x7a, + 0x4d, 0xbc, 0x03, 0x33, 0xfd, 0x26, 0x44, 0x69, 0xdb, 0x7b, 0x90, 0xab, 0x18, 0xaa, 0x85, 0x5b, + 0xd8, 0x88, 0xc2, 0x38, 0x11, 0xa6, 0x75, 0x57, 0x8e, 0x1a, 0xe8, 0x46, 0x99, 0x41, 0xb2, 0xf8, + 0x2d, 0x38, 0xe8, 0x79, 0x65, 0x94, 0x31, 0xe2, 0x24, 0x4c, 0x1b, 0x78, 0x5b, 0x1e, 0xb8, 0xd7, + 0x7d, 0x7b, 0xd2, 0xc0, 0xdb, 0xd4, 0xa9, 0xe2, 0x1b, 0x90, 0x59, 0xc1, 0x4d, 0xec, 0xe0, 0x08, + 0xe2, 0xdc, 0x16, 0x64, 0x5d, 0xad, 0x28, 0xbb, 0xe4, 0xdb, 0x80, 0xb8, 0xac, 0x62, 0xd4, 0x23, + 0x68, 0x27, 0x3a, 0x4d, 0xd6, 0x0c, 0xa7, 0x63, 0x19, 0x2c, 0xf8, 0x7b, 0xe3, 0x11, 0xb0, 0x0c, + 0x12, 0xff, 0xdf, 0x48, 0x24, 0x63, 0xb9, 0xb8, 0xb8, 0x0d, 0xb3, 0xbe, 0xb7, 0x47, 0xd9, 0x3f, + 0xc7, 0x20, 0x41, 0x5b, 0x10, 0x5b, 0x8c, 0x9f, 0x4b, 0x97, 0xa6, 0x9e, 0xec, 0x14, 0xe2, 0x6b, + 0xb8, 0x27, 0xd1, 0x44, 0x71, 0x03, 0x52, 0x9b, 0xaa, 0x62, 0x7c, 0x7e, 0x7b, 0xb9, 0x21, 0x1f, + 0x08, 0x90, 0x66, 0x82, 0x51, 0x9a, 0x70, 0x19, 0x12, 0x96, 0xb9, 0xcd, 0x4c, 0x48, 0x2d, 0x1f, + 0x0b, 0x90, 0x58, 0xc3, 0x3d, 0xef, 0xfc, 0xa5, 0xc5, 0xc5, 0x2d, 0x40, 0x12, 0x7e, 0x88, 0x2d, + 0x1b, 0x47, 0x6a, 0xe3, 0x4f, 0x04, 0x98, 0xf5, 0xe9, 0xfe, 0x17, 0x98, 0xba, 0x0d, 0x47, 0xca, + 0x0d, 0xac, 0x3e, 0x28, 0x9b, 0x86, 0xad, 0xdb, 0x0e, 0x36, 0xd4, 0x5e, 0x04, 0x63, 0xf8, 0x24, + 0x4c, 0x6f, 0xeb, 0x4e, 0x43, 0xd6, 0xf4, 0x5a, 0x8d, 0x4e, 0x6d, 0x77, 0x04, 0x27, 0x49, 0xf2, + 0x8a, 0x5e, 0xab, 0x89, 0x32, 0xe4, 0x47, 0x5f, 0x1c, 0xe5, 0xc4, 0xfc, 0x99, 0x00, 0xb3, 0xe5, + 0x06, 0x99, 0x16, 0xaf, 0x5b, 0xe6, 0x37, 0x71, 0x04, 0xdd, 0x48, 0x28, 0xa1, 0x46, 0xb5, 0x7c, + 0x36, 0xf1, 0x34, 0x74, 0x16, 0xd2, 0xad, 0x8e, 0xed, 0xc8, 0xa4, 0x83, 0x75, 0x93, 0x71, 0xe2, + 0x34, 0x2f, 0x93, 0x22, 0x39, 0x77, 0x58, 0x86, 0xf8, 0x69, 0x0c, 0xe6, 0xfc, 0x2d, 0x8b, 0x72, + 0x20, 0x5c, 0x82, 0x19, 0x8b, 0x68, 0xdb, 0xb2, 0x52, 0xab, 0x61, 0xd5, 0xc1, 0x9a, 0x2f, 0xb8, + 0x66, 0x59, 0xe6, 0x55, 0x9e, 0x87, 0x2e, 0x42, 0xa6, 0xa5, 0x1b, 0xb2, 0xed, 0x28, 0x96, 0x43, + 0x22, 0x0e, 0x6d, 0x76, 0xba, 0x94, 0x7c, 0xb2, 0x53, 0x48, 0x48, 0x64, 0xbe, 0xa7, 0x5a, 0xba, + 0xb1, 0x49, 0x72, 0xd7, 0x70, 0x0f, 0xd5, 0x60, 0x92, 0x80, 0x39, 0xb6, 0xf3, 0x09, 0x3a, 0xce, + 0x9e, 0x0f, 0x68, 0x61, 0x90, 0x69, 0xc5, 0x4d, 0x5a, 0x6b, 0xd5, 0x70, 0xac, 0x5e, 0xe9, 0x28, + 0x69, 0xc8, 0xfb, 0x9f, 0x15, 0xa6, 0x68, 0x62, 0x65, 0xe5, 0x83, 0xcf, 0x0a, 0x93, 0x1b, 0xa6, + 0x86, 0x2b, 0x2b, 0x12, 0x57, 0x9f, 0xbf, 0x02, 0x29, 0x4f, 0x0d, 0x94, 0x83, 0x38, 0x69, 0x1a, + 0xf1, 0xca, 0x84, 0x44, 0xfe, 0x44, 0x73, 0xde, 0x75, 0x79, 0x82, 0xaf, 0xbb, 0x2f, 0xc7, 0x5e, + 0x12, 0xc4, 0x2a, 0x1c, 0x29, 0xe1, 0xba, 0x6e, 0x78, 0x61, 0xfc, 0xf3, 0xaf, 0x1e, 0x32, 0xe4, + 0x47, 0x55, 0xa3, 0x1c, 0xae, 0x7f, 0x8a, 0xc1, 0xa1, 0x55, 0x43, 0x8b, 0xb4, 0xd5, 0x64, 0xc0, + 0xaa, 0x66, 0xab, 0xa5, 0x3b, 0xfe, 0x01, 0xcb, 0xd2, 0xd0, 0x15, 0x48, 0x6a, 0x58, 0xd1, 0xfa, + 0xd8, 0x9b, 0x5a, 0x3e, 0xe1, 0x91, 0x26, 0xfb, 0xa5, 0x62, 0xa3, 0xa9, 0x16, 0xab, 0xee, 0x7e, + 0x49, 0xea, 0x17, 0x47, 0xdf, 0x80, 0x23, 0xfd, 0x1d, 0x1e, 0x53, 0x93, 0x1d, 0x4b, 0xaf, 0xd7, + 0xb1, 0xc5, 0x37, 0x39, 0xe7, 0x02, 0x1a, 0x59, 0xe1, 0x35, 0xca, 0xb4, 0x42, 0x95, 0x95, 0x97, + 0x0e, 0xe9, 0x41, 0xc9, 0xe8, 0x35, 0x48, 0x93, 0x0c, 0xc3, 0xa1, 0x5b, 0x27, 0xb2, 0x09, 0x8a, + 0x8f, 0xb3, 0x9d, 0x4f, 0x33, 0x56, 0x85, 0xa4, 0xd8, 0xe2, 0x3f, 0x04, 0x38, 0x3c, 0xec, 0xd1, + 0x28, 0x27, 0xda, 0x69, 0x48, 0x71, 0xd3, 0xb7, 0x15, 0xdd, 0xcf, 0x4f, 0xc0, 0x32, 0xee, 0x2a, + 0xba, 0x83, 0x96, 0x60, 0x76, 0x65, 0xf5, 0x96, 0xb4, 0x5a, 0xbe, 0x5a, 0x5d, 0x5d, 0x91, 0x2d, + 0x6c, 0x9b, 0xcd, 0x87, 0x58, 0xcb, 0xc7, 0xc9, 0xaa, 0x2a, 0x21, 0xad, 0x9f, 0x25, 0xf1, 0x1c, + 0x54, 0x84, 0x9c, 0x69, 0x60, 0xb9, 0xdd, 0x50, 0x6c, 0xcc, 0x9d, 0xeb, 0xc3, 0xe8, 0xac, 0x69, + 0xe0, 0x5b, 0x24, 0x93, 0x39, 0x4c, 0x74, 0xe0, 0xe0, 0x55, 0x8d, 0x4c, 0xd2, 0x76, 0x53, 0x8f, + 0x82, 0x0a, 0x4f, 0xc1, 0xb4, 0x4d, 0xa4, 0x68, 0x34, 0x88, 0xd1, 0x68, 0xd0, 0x5f, 0xfc, 0x93, + 0x34, 0x67, 0x0d, 0xf7, 0xc4, 0x37, 0x01, 0x79, 0xdf, 0x1a, 0xe5, 0x54, 0xd8, 0xe0, 0x06, 0xdd, + 0xc0, 0x56, 0x14, 0x44, 0xd5, 0x6f, 0x2a, 0xd7, 0x8b, 0xb2, 0xa9, 0xdf, 0x81, 0xa3, 0x54, 0x9a, + 0x0e, 0xb2, 0x1a, 0xb6, 0xd6, 0xb1, 0x62, 0x47, 0x01, 0x81, 0x67, 0x61, 0xd2, 0x51, 0xac, 0x3a, + 0x66, 0xc3, 0x6a, 0xa2, 0x34, 0x43, 0x4a, 0x3c, 0xd9, 0xe9, 0x87, 0x4c, 0x89, 0x67, 0x8b, 0x0a, + 0xcc, 0x07, 0x35, 0x20, 0x4a, 0x1b, 0xff, 0x28, 0x00, 0xa2, 0x78, 0xb9, 0x6e, 0x9a, 0x0f, 0x3a, + 0xed, 0x08, 0xac, 0x7b, 0x06, 0xa0, 0xa5, 0x74, 0x65, 0xb6, 0x12, 0x71, 0x0b, 0xf9, 0xc6, 0xa3, + 0xa5, 0x74, 0xe9, 0xbb, 0x6c, 0xb4, 0x04, 0x39, 0x95, 0xb0, 0x81, 0x86, 0x2d, 0x99, 0x4d, 0x6b, + 0x3f, 0x0c, 0xcf, 0xb8, 0xb9, 0x15, 0x96, 0x89, 0x16, 0x60, 0xca, 0x62, 0x74, 0xe5, 0x9b, 0x2e, + 0x6e, 0xa2, 0xf8, 0x4f, 0x82, 0x5f, 0x5e, 0x3b, 0xa2, 0x0c, 0x06, 0xaf, 0xc1, 0x64, 0xdf, 0x1c, + 0x12, 0xa8, 0xc4, 0x20, 0x11, 0x52, 0x60, 0x05, 0xdb, 0xaa, 0xa5, 0xb7, 0x1d, 0xd3, 0x72, 0xa3, + 0x31, 0xab, 0x87, 0xb6, 0xe0, 0x60, 0xdb, 0xc2, 0x35, 0xec, 0xa8, 0x0d, 0xac, 0xb9, 0xbe, 0x89, + 0x3f, 0xa5, 0x58, 0x6e, 0x20, 0xc1, 0xdc, 0x28, 0xfe, 0x40, 0x80, 0xd9, 0xeb, 0x58, 0xb1, 0x9c, + 0xfb, 0x58, 0x71, 0xaa, 0xdd, 0x28, 0x56, 0x95, 0xcb, 0x10, 0x37, 0xcc, 0x6d, 0xbe, 0x23, 0x1e, + 0xbf, 0x64, 0xf0, 0x66, 0x91, 0xf2, 0xe2, 0xdb, 0x30, 0xe7, 0x6f, 0x48, 0x94, 0x83, 0xf4, 0x77, + 0x31, 0x98, 0xbe, 0x56, 0x8e, 0xc0, 0xb8, 0x57, 0xf8, 0xae, 0x27, 0xdc, 0xf3, 0xfd, 0xd7, 0x14, + 0xaf, 0x95, 0xd7, 0x70, 0xcf, 0xc5, 0x69, 0x52, 0x0b, 0x5d, 0x85, 0x69, 0xa7, 0x61, 0x61, 0xbb, + 0x61, 0x36, 0x35, 0xbe, 0x12, 0xee, 0xc9, 0x41, 0x83, 0x5a, 0xf3, 0x18, 0x26, 0xa8, 0x2e, 0x3a, + 0x3a, 0x80, 0x1e, 0x4f, 0x04, 0xa6, 0xf4, 0x43, 0x5e, 0xe3, 0x2a, 0x3c, 0x4d, 0x3f, 0x0c, 0x6a, + 0x89, 0xb7, 0x01, 0x88, 0x21, 0x51, 0xf6, 0xc1, 0x2f, 0xe2, 0x90, 0xbd, 0xd5, 0xb1, 0x1b, 0xd1, + 0x8c, 0xb2, 0x32, 0x40, 0xbb, 0x63, 0x37, 0xb0, 0x25, 0x3b, 0x5d, 0x83, 0x1b, 0xb9, 0xcb, 0xa1, + 0xab, 0x6b, 0x25, 0xab, 0x57, 0xed, 0x1a, 0xe8, 0x26, 0x17, 0xc1, 0xf2, 0xe0, 0xe4, 0xf6, 0x82, + 0x47, 0x84, 0x9f, 0x32, 0x17, 0xd9, 0xf1, 0x72, 0xd1, 0x3d, 0x65, 0x2e, 0x56, 0xbb, 0xc6, 0x0d, + 0xec, 0x28, 0x3e, 0x41, 0x4c, 0x04, 0x5f, 0x81, 0x29, 0xf2, 0x20, 0x3b, 0xe6, 0xd3, 0x74, 0xef, + 0x24, 0xa9, 0x53, 0x35, 0xdd, 0x99, 0x33, 0xf1, 0x74, 0x33, 0x87, 0x74, 0x37, 0x7b, 0x69, 0xaf, + 0x8d, 0xf3, 0x93, 0x8b, 0xc2, 0xb9, 0x6c, 0xa0, 0x27, 0xb8, 0xef, 0xab, 0xbd, 0xb6, 0xbb, 0xc7, + 0x4b, 0xd2, 0xf7, 0xf6, 0xda, 0x58, 0xfc, 0xa5, 0x00, 0x33, 0xfd, 0xbe, 0x89, 0x32, 0xf0, 0x95, + 0x7d, 0x1e, 0x7e, 0xfa, 0x6e, 0x22, 0x5e, 0x15, 0xbf, 0x17, 0x83, 0x39, 0xce, 0x3f, 0x2c, 0x9a, + 0x47, 0x30, 0x7e, 0x6e, 0x02, 0x70, 0x80, 0x1c, 0x34, 0x6c, 0x1f, 0x5d, 0xcf, 0x34, 0x48, 0xd7, + 0x97, 0xc8, 0xde, 0x47, 0x71, 0x3a, 0x6c, 0x19, 0xca, 0x2e, 0x9f, 0x1a, 0x6f, 0xe5, 0x26, 0x2d, + 0xeb, 0x0e, 0x00, 0x56, 0x93, 0x00, 0x79, 0xdb, 0xd4, 0x6d, 0xd3, 0xf0, 0x2d, 0x51, 0x3c, 0x4d, + 0xfc, 0x3a, 0x1c, 0x1a, 0xf2, 0x42, 0x94, 0xd3, 0xf3, 0x47, 0x31, 0x38, 0xea, 0x97, 0x8f, 0xe8, + 0xc4, 0xea, 0x7f, 0xd0, 0xd3, 0x59, 0x48, 0x6f, 0x98, 0x66, 0x9f, 0x01, 0xc4, 0x0c, 0xa4, 0xd8, + 0x33, 0x75, 0x06, 0xa1, 0xaa, 0x20, 0x4f, 0x45, 0x4b, 0x8e, 0xe9, 0x88, 0xf8, 0x76, 0x9f, 0x67, + 0xd4, 0x55, 0xc8, 0x7c, 0x01, 0x40, 0xfc, 0x6b, 0x01, 0x50, 0xd5, 0xea, 0x18, 0xaa, 0xe2, 0xe0, + 0x75, 0xb3, 0x1e, 0x81, 0x75, 0xf3, 0x30, 0xa1, 0x1b, 0x1a, 0xee, 0x52, 0xeb, 0x12, 0xae, 0x0d, + 0x34, 0x09, 0x5d, 0x86, 0x24, 0x05, 0x25, 0x59, 0xd7, 0xe8, 0x50, 0x89, 0x97, 0xe6, 0x49, 0xf6, + 0xe3, 0x9d, 0xc2, 0x14, 0xed, 0xb2, 0xca, 0xca, 0x93, 0xc1, 0x9f, 0xd2, 0x14, 0x2d, 0x5b, 0xd1, + 0xc4, 0xb7, 0x60, 0xd6, 0xd7, 0xc6, 0x28, 0x1d, 0xf0, 0x7d, 0x7a, 0xc8, 0x47, 0xad, 0x8e, 0x6a, + 0x33, 0xf0, 0x02, 0x4c, 0x34, 0x89, 0xd4, 0x98, 0xfe, 0xa5, 0xaf, 0x72, 0x7d, 0x43, 0x0b, 0x13, + 0xf0, 0x9b, 0x8b, 0x7a, 0x5b, 0xb2, 0xbf, 0x96, 0xbc, 0x4d, 0x82, 0xbb, 0xd7, 0x23, 0x51, 0xfa, + 0xfb, 0x5f, 0x02, 0x1c, 0x2e, 0x9b, 0xad, 0x76, 0xc7, 0xc1, 0xf4, 0x3c, 0xd1, 0xee, 0xb4, 0x22, + 0x30, 0x74, 0x01, 0xa6, 0xdc, 0x63, 0x3c, 0x62, 0x6a, 0xc6, 0xdd, 0x4b, 0xf0, 0x44, 0x54, 0x83, + 0x94, 0xca, 0xdf, 0xe6, 0x8e, 0xbd, 0x74, 0x69, 0x95, 0x94, 0xf9, 0xcb, 0x4e, 0x61, 0xa9, 0xae, + 0x3b, 0x8d, 0xce, 0xfd, 0xa2, 0x6a, 0xb6, 0x96, 0xfa, 0x6f, 0xd4, 0xee, 0x2f, 0x0d, 0xdd, 0x45, + 0x77, 0x3a, 0xba, 0x56, 0xdc, 0xda, 0xaa, 0xac, 0x3c, 0xde, 0x29, 0x80, 0xdb, 0xf6, 0xca, 0x8a, + 0x04, 0xae, 0x72, 0x45, 0x43, 0x8b, 0x90, 0xb4, 0x0d, 0xa5, 0x6d, 0x37, 0x4c, 0xff, 0x19, 0x40, + 0x3f, 0x55, 0x7c, 0x17, 0x8e, 0x8c, 0x98, 0x1f, 0xa5, 0x7f, 0x3f, 0x8e, 0xc1, 0xa1, 0x3b, 0xd8, + 0xd2, 0x6b, 0xbd, 0xff, 0x43, 0xf7, 0xce, 0x43, 0xd2, 0x7d, 0xa2, 0xee, 0x4d, 0x4b, 0xfd, 0x67, + 0xf4, 0x35, 0x8f, 0xeb, 0x19, 0xb0, 0x3d, 0x13, 0xb8, 0x0d, 0xab, 0x39, 0x9b, 0xbc, 0xd8, 0x8a, + 0xe2, 0x28, 0x9e, 0x9e, 0x79, 0x07, 0x0e, 0x0f, 0x3b, 0x2e, 0xca, 0x8e, 0xf9, 0x43, 0x0e, 0xd2, + 0xbc, 0x2b, 0xb6, 0x0c, 0xe2, 0xb4, 0x25, 0x88, 0xd7, 0xb1, 0xc3, 0x25, 0x4f, 0x04, 0x6d, 0x5c, + 0xfa, 0xdf, 0x0b, 0x48, 0xa4, 0x24, 0xa9, 0xd0, 0xee, 0x38, 0x01, 0xfb, 0x87, 0x01, 0x50, 0x0e, + 0x2a, 0xb4, 0x3b, 0x0e, 0xba, 0x0d, 0x64, 0xd3, 0xed, 0xde, 0xdc, 0xca, 0xa4, 0x72, 0x3c, 0xf4, + 0xb4, 0x2f, 0xf0, 0x02, 0x5b, 0xca, 0xaa, 0xbe, 0x64, 0x82, 0xb6, 0x83, 0x2b, 0xc8, 0x44, 0xa8, + 0x9b, 0x87, 0x6f, 0x3d, 0x3d, 0x37, 0x94, 0xe8, 0x25, 0x98, 0xd4, 0xe8, 0x1d, 0x18, 0xef, 0xa6, + 0xc5, 0x80, 0xfa, 0xbe, 0x5b, 0x44, 0x89, 0x97, 0x47, 0xd7, 0x21, 0xcd, 0xfe, 0x62, 0xdb, 0x6d, + 0x8a, 0xd6, 0xa9, 0xe5, 0xd3, 0xe1, 0xf5, 0x3d, 0xc0, 0x24, 0xa5, 0xb4, 0x41, 0x1a, 0x5a, 0x86, + 0x84, 0xad, 0x2a, 0x46, 0x7e, 0x2a, 0x94, 0x7f, 0x3d, 0x37, 0x49, 0x12, 0x2d, 0x8b, 0xee, 0xc2, + 0xc1, 0xfb, 0xb8, 0xae, 0x1b, 0xb2, 0x33, 0x40, 0x99, 0x7c, 0x72, 0x84, 0x9e, 0x5c, 0x81, 0x90, + 0x43, 0x6d, 0x29, 0x77, 0x7f, 0x28, 0x83, 0x74, 0x13, 0x36, 0x34, 0x9f, 0xec, 0x74, 0x68, 0x37, + 0x05, 0x9e, 0x39, 0x4b, 0x59, 0xec, 0x4b, 0x46, 0xab, 0x90, 0x52, 0x34, 0x7a, 0x4f, 0xd0, 0x6e, + 0xea, 0x4e, 0x1e, 0xa8, 0x5c, 0x10, 0x96, 0x8d, 0x9c, 0x44, 0x4a, 0xa0, 0xf4, 0x93, 0x06, 0x32, + 0x2d, 0x42, 0x1e, 0xf9, 0xd4, 0x78, 0x19, 0x2f, 0x1f, 0x71, 0x19, 0x9a, 0x84, 0xd6, 0x20, 0xd3, + 0x70, 0x4f, 0x12, 0x28, 0x73, 0xa6, 0xa9, 0xd0, 0x99, 0x00, 0xa1, 0x80, 0xa3, 0x0f, 0x29, 0xdd, + 0xf0, 0x24, 0xa2, 0x8b, 0x10, 0xab, 0xab, 0xf9, 0x0c, 0x55, 0x38, 0x3e, 0x6e, 0xbb, 0x2f, 0xc5, + 0xea, 0x2a, 0x7a, 0x05, 0x92, 0x6c, 0x2b, 0xd6, 0x35, 0xf2, 0xd9, 0xd0, 0xc9, 0xeb, 0xdf, 0x05, + 0x4b, 0x74, 0xcb, 0x48, 0xde, 0x75, 0x1d, 0xd2, 0x8c, 0x57, 0x9a, 0xf4, 0x08, 0x2a, 0x3f, 0x13, + 0x3a, 0xe0, 0x46, 0x0f, 0xdc, 0xa4, 0x94, 0x35, 0x48, 0x43, 0x1b, 0x90, 0xe5, 0x47, 0xc9, 0xfc, + 0x70, 0x2c, 0x9f, 0xa3, 0x5a, 0x67, 0x83, 0x43, 0xc9, 0xc8, 0xce, 0x4a, 0xca, 0x58, 0xde, 0x54, + 0xf4, 0x2e, 0xcc, 0xf9, 0xf5, 0xf8, 0x94, 0x38, 0x48, 0x55, 0x2f, 0xee, 0xaa, 0xea, 0x9d, 0x19, + 0xc8, 0x1a, 0xc9, 0x42, 0x97, 0x61, 0x82, 0xf5, 0x39, 0xa2, 0x82, 0x85, 0x00, 0x41, 0x5f, 0x77, + 0xb3, 0xd2, 0xc4, 0x61, 0x0e, 0x27, 0x35, 0xb9, 0x69, 0xd6, 0xf3, 0xb3, 0xa1, 0x0e, 0x1b, 0x85, + 0x4e, 0x29, 0xe5, 0x0c, 0xd2, 0xc8, 0x98, 0xb1, 0x58, 0xba, 0xcc, 0x10, 0x66, 0x2e, 0x74, 0xcc, + 0x04, 0xe0, 0x9b, 0x94, 0xb6, 0x3c, 0x89, 0xb4, 0x1f, 0xd9, 0xa9, 0xa2, 0x4c, 0xa7, 0xfd, 0xa1, + 0xf0, 0x7e, 0x1c, 0xb9, 0x47, 0x96, 0x52, 0xd6, 0x20, 0x0d, 0x55, 0x21, 0xa7, 0xb2, 0xe5, 0x5b, + 0xee, 0xaf, 0x44, 0x87, 0xa9, 0xda, 0xf9, 0xc0, 0x98, 0x1a, 0x04, 0x3a, 0xd2, 0x8c, 0xea, 0x4f, + 0x27, 0x11, 0xe0, 0x21, 0x5d, 0x7a, 0x06, 0xa2, 0x47, 0x42, 0x23, 0x40, 0xe0, 0xea, 0x2e, 0x65, + 0x1f, 0xfa, 0x92, 0x49, 0xb4, 0xa2, 0x5a, 0xb2, 0x3a, 0xb8, 0xb0, 0xcd, 0xe7, 0x43, 0xa3, 0x55, + 0xc8, 0xa5, 0xb2, 0x94, 0x53, 0x87, 0x32, 0x48, 0xe8, 0x34, 0x4c, 0xb3, 0x9d, 0x3f, 0x1a, 0x1a, + 0x3a, 0x3d, 0x3b, 0x33, 0x89, 0x96, 0x25, 0xb3, 0x50, 0x37, 0x74, 0x87, 0xae, 0x40, 0xf3, 0xa1, + 0xb3, 0xd0, 0xff, 0x15, 0x90, 0x34, 0xa5, 0xb3, 0x67, 0x32, 0x14, 0x54, 0x7a, 0x47, 0x29, 0xf3, + 0xdb, 0xdc, 0x63, 0xa1, 0x43, 0x21, 0xe0, 0x02, 0x59, 0x4a, 0xab, 0x9e, 0x44, 0x32, 0x11, 0x1d, + 0x4e, 0xd9, 0x7c, 0x60, 0x1d, 0x0f, 0x9d, 0x88, 0x41, 0x38, 0x2e, 0x65, 0x1c, 0x6f, 0x2a, 0x99, + 0x88, 0x2c, 0x44, 0x0e, 0xa9, 0x9e, 0x08, 0x9d, 0x88, 0xa1, 0x17, 0x10, 0x12, 0x52, 0x46, 0xb2, + 0x5e, 0x4e, 0x3c, 0xfa, 0xa8, 0x20, 0x88, 0x1f, 0xe6, 0x20, 0xe3, 0x12, 0x06, 0xa3, 0x87, 0xe7, + 0xbc, 0xf4, 0xb0, 0x10, 0x46, 0x0f, 0xac, 0x06, 0xc3, 0x87, 0xe7, 0xbc, 0xf8, 0xb0, 0x10, 0x86, + 0x0f, 0x6e, 0x0d, 0xc2, 0x0f, 0x52, 0x18, 0x3f, 0x9c, 0xdf, 0x03, 0x3f, 0x70, 0xa1, 0x61, 0x80, + 0x28, 0x8d, 0x02, 0xc4, 0xa9, 0xf1, 0x00, 0xc1, 0x85, 0x3c, 0x04, 0x71, 0x65, 0x88, 0x20, 0x4e, + 0x8e, 0x21, 0x08, 0x5e, 0xdb, 0x45, 0x88, 0x4a, 0x20, 0x42, 0x9c, 0xd9, 0x0d, 0x21, 0xb8, 0x8a, + 0x8f, 0x21, 0x9e, 0xf7, 0x31, 0x44, 0x21, 0x94, 0x21, 0x78, 0x5d, 0x06, 0x11, 0xf7, 0xc2, 0x21, + 0xe2, 0xd9, 0x3d, 0x41, 0x04, 0x57, 0x1b, 0xa5, 0x08, 0x29, 0x8c, 0x22, 0xce, 0xef, 0x81, 0x22, + 0xdc, 0xce, 0x1a, 0xc2, 0x88, 0xd7, 0x83, 0x30, 0xe2, 0xf4, 0x2e, 0x18, 0xc1, 0xb5, 0xbc, 0x1c, + 0xf1, 0x7a, 0x10, 0x47, 0x9c, 0xde, 0x85, 0x23, 0x7c, 0x3a, 0x0c, 0x24, 0xd6, 0x83, 0x41, 0xe2, + 0xec, 0xae, 0x20, 0xc1, 0xb5, 0xfc, 0x24, 0x71, 0xc9, 0x43, 0x12, 0x27, 0x42, 0x48, 0x82, 0x57, + 0x24, 0x28, 0xf1, 0xea, 0x08, 0x4a, 0x88, 0xe3, 0x50, 0x82, 0xd7, 0xec, 0xb3, 0x44, 0x25, 0x90, + 0x25, 0xce, 0xec, 0xc6, 0x12, 0xee, 0xc8, 0xf3, 0xc2, 0xc4, 0xcd, 0x10, 0x98, 0x38, 0xb7, 0x3b, + 0x4c, 0x70, 0xb9, 0x21, 0x9a, 0x90, 0xc7, 0xd2, 0xc4, 0xa5, 0x3d, 0xd2, 0x04, 0xd7, 0x0e, 0xc2, + 0x89, 0xaf, 0xf8, 0x71, 0x62, 0x31, 0x1c, 0x27, 0xb8, 0x08, 0xe7, 0x89, 0x4a, 0x20, 0x4f, 0x9c, + 0xd9, 0x8d, 0x27, 0x5c, 0xa7, 0x79, 0x81, 0x62, 0x3d, 0x18, 0x28, 0xce, 0xee, 0x0a, 0x14, 0xee, + 0xd8, 0xf1, 0x11, 0x45, 0x25, 0x90, 0x28, 0xce, 0xec, 0x46, 0x14, 0xfd, 0xde, 0xf4, 0x20, 0xc5, + 0x56, 0x28, 0x52, 0x5c, 0xd8, 0x0b, 0x52, 0x70, 0xc9, 0x11, 0xa6, 0x90, 0xc2, 0x98, 0xe2, 0xfc, + 0x1e, 0x98, 0xc2, 0x8d, 0x07, 0x43, 0x50, 0x71, 0x2f, 0x1c, 0x2a, 0x9e, 0xdd, 0x13, 0x54, 0xb8, + 0xd1, 0x6b, 0x84, 0x2a, 0x9e, 0xf7, 0x51, 0x45, 0x21, 0x94, 0x2a, 0xdc, 0x60, 0x4a, 0xb1, 0xe2, + 0xd5, 0x11, 0xac, 0x10, 0xc7, 0x61, 0x85, 0x3b, 0x23, 0x5d, 0xae, 0x58, 0x0f, 0xe6, 0x8a, 0xb3, + 0x7b, 0xfc, 0x46, 0x6a, 0x08, 0x2c, 0xe4, 0xb1, 0x20, 0x70, 0x69, 0x8f, 0x20, 0xe0, 0xce, 0xa1, + 0x30, 0x12, 0x78, 0x23, 0x91, 0x3c, 0x9e, 0x3b, 0x21, 0xfe, 0x36, 0x01, 0x93, 0xfc, 0x57, 0x0e, + 0xbe, 0xbb, 0x45, 0x61, 0x3f, 0x77, 0x8b, 0x68, 0x05, 0xa6, 0x2c, 0xdc, 0x6e, 0xea, 0xaa, 0xc2, + 0xe9, 0xe0, 0x54, 0xe0, 0x38, 0xa6, 0x25, 0x46, 0xae, 0xb0, 0xdd, 0xaa, 0xfb, 0x3c, 0xdc, 0x45, + 0x57, 0x20, 0xd3, 0xb1, 0xb1, 0x25, 0xb7, 0x2d, 0xdd, 0xb4, 0x74, 0xa7, 0x47, 0xa1, 0x40, 0x28, + 0xcd, 0xf1, 0x2f, 0x28, 0xd2, 0x5b, 0x36, 0xb6, 0x6e, 0xf1, 0x3c, 0x29, 0xdd, 0xf1, 0x3c, 0xb9, + 0x3f, 0xf0, 0x98, 0xd8, 0xfb, 0x0f, 0x3c, 0xee, 0x42, 0xce, 0xc2, 0x8a, 0xe6, 0x1b, 0xbf, 0xec, + 0x82, 0x2e, 0x78, 0xea, 0x2a, 0x9a, 0x67, 0x90, 0x7a, 0x2e, 0xea, 0x66, 0x2c, 0x7f, 0x16, 0x5a, + 0x86, 0x09, 0xc7, 0x52, 0x54, 0xcc, 0x69, 0xe0, 0xf8, 0x70, 0x0f, 0xf0, 0xdf, 0xba, 0xb0, 0x1f, + 0x8e, 0xb0, 0xa2, 0xe8, 0x45, 0x38, 0xd4, 0x52, 0xba, 0xf4, 0x7b, 0x29, 0xd9, 0x0d, 0x4d, 0xf4, + 0x2e, 0x3b, 0xe9, 0xf9, 0x34, 0x09, 0xb5, 0x94, 0x2e, 0xad, 0xc4, 0x0a, 0xac, 0xe1, 0x9e, 0x8d, + 0x9e, 0x85, 0xac, 0xa6, 0xdb, 0x8e, 0x6e, 0xa8, 0xee, 0xd7, 0x56, 0xd3, 0x9e, 0xb3, 0xc6, 0x8c, + 0x9b, 0xc7, 0x3e, 0xab, 0xfa, 0xa9, 0x00, 0xe9, 0x92, 0xe2, 0xa8, 0x0d, 0xf7, 0x1c, 0xf0, 0xab, + 0x43, 0xa7, 0x59, 0x47, 0x83, 0x57, 0xcf, 0xe0, 0xeb, 0xc3, 0xab, 0x90, 0xe4, 0x4d, 0x75, 0xbf, + 0x9c, 0x28, 0x84, 0x07, 0x50, 0x4a, 0xaa, 0xee, 0x09, 0xa8, 0x5b, 0xed, 0xe5, 0xc4, 0xcf, 0x3f, + 0x2a, 0x1c, 0x10, 0x7f, 0x1f, 0x87, 0x0c, 0x6f, 0x16, 0x3f, 0x65, 0xab, 0x0c, 0xb5, 0x2b, 0x68, + 0x1e, 0xfa, 0x6a, 0x84, 0xb7, 0x72, 0x05, 0xa6, 0x2d, 0x5e, 0xc8, 0x6d, 0xe6, 0xe2, 0x98, 0x33, + 0x3b, 0x6f, 0x3b, 0x07, 0x15, 0xe7, 0x3f, 0x8c, 0xf5, 0x27, 0x59, 0x11, 0x26, 0xe8, 0x2f, 0xa8, + 0x78, 0xd3, 0x82, 0x0e, 0xd2, 0x57, 0x49, 0xbe, 0xc4, 0x8a, 0x91, 0x49, 0x59, 0xfd, 0x7c, 0x17, + 0xfe, 0xfb, 0xf8, 0xf5, 0xd2, 0x59, 0x82, 0xeb, 0xcd, 0x26, 0xfd, 0x4e, 0x94, 0x8f, 0x8b, 0x04, + 0xfd, 0x6a, 0x2d, 0xdb, 0x4f, 0xa6, 0x43, 0x62, 0x9f, 0xd7, 0xda, 0xbc, 0xe3, 0xfe, 0x2d, 0x40, + 0x4a, 0x52, 0x6a, 0x4e, 0xd9, 0x6c, 0xb5, 0x14, 0x43, 0xf3, 0x4d, 0x7b, 0x61, 0xef, 0xd3, 0xfe, + 0x36, 0x64, 0x4d, 0x4b, 0x27, 0x24, 0xbc, 0xff, 0xd0, 0x93, 0x61, 0x0a, 0x3c, 0x1b, 0xbd, 0x08, + 0x71, 0xb5, 0xa5, 0x71, 0x8f, 0x15, 0xc2, 0x47, 0x0f, 0x1d, 0x87, 0xae, 0x61, 0x6a, 0x4b, 0x43, + 0x17, 0x61, 0x86, 0x4c, 0x44, 0x1a, 0xaf, 0x65, 0x76, 0x79, 0x95, 0xf0, 0x5c, 0x5e, 0x65, 0x5a, + 0x4a, 0x97, 0x86, 0xe0, 0x0a, 0xc9, 0xba, 0xb0, 0x0e, 0xb3, 0x01, 0x81, 0x01, 0x65, 0x01, 0xca, + 0x37, 0x37, 0x36, 0x2b, 0x9b, 0xd5, 0xd5, 0x8d, 0x6a, 0xee, 0x00, 0xca, 0xc0, 0x34, 0x79, 0x5e, + 0xdd, 0xd8, 0xdc, 0xda, 0xcc, 0x09, 0x28, 0x07, 0xe9, 0xca, 0x86, 0xa7, 0x40, 0x6c, 0x3e, 0xf1, + 0xc3, 0xdf, 0x2c, 0x1c, 0xb8, 0x70, 0x17, 0x52, 0x9e, 0xef, 0x00, 0x10, 0x82, 0xec, 0xad, 0xad, + 0xcd, 0xeb, 0x72, 0xb5, 0x72, 0x63, 0x75, 0xb3, 0x7a, 0xf5, 0xc6, 0xad, 0xdc, 0x01, 0xa2, 0x4c, + 0xd3, 0xae, 0x96, 0x6e, 0x4a, 0xd5, 0x9c, 0xd0, 0x7f, 0xae, 0xde, 0xdc, 0x2a, 0x5f, 0xcf, 0xc5, + 0xfa, 0xcf, 0xb7, 0xb7, 0x56, 0xa5, 0x37, 0x73, 0x71, 0x26, 0xbc, 0x7c, 0x0f, 0x92, 0xee, 0x07, + 0x9c, 0x68, 0x1d, 0x26, 0xa8, 0xed, 0x68, 0x37, 0xaf, 0xcc, 0x2f, 0xee, 0x36, 0xe9, 0x44, 0xaa, + 0xbc, 0xda, 0xfd, 0x22, 0x94, 0x4b, 0x27, 0x1f, 0xfd, 0x6d, 0xe1, 0xc0, 0xa3, 0xc7, 0x0b, 0xc2, + 0x27, 0x8f, 0x17, 0x84, 0x3f, 0x3f, 0x5e, 0x10, 0xfe, 0xfa, 0x78, 0x41, 0xf8, 0xf1, 0xdf, 0x17, + 0x0e, 0xbc, 0x35, 0xc5, 0xab, 0xdc, 0x9b, 0xfa, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x17, 0xcf, + 0x73, 0x9f, 0x2c, 0x39, 0x00, 0x00, } diff --git a/roachpb/api.proto b/roachpb/api.proto index c3f354838bf0..9e9910e62411 100644 --- a/roachpb/api.proto +++ b/roachpb/api.proto @@ -878,51 +878,6 @@ message RaftCommand { optional uint64 max_lease_index = 4 [(gogoproto.nullable) = false]; } -// StoreRequestHeader locates a Store on a Node. -message StoreRequestHeader { - optional int32 node_id = 1 [(gogoproto.nullable) = false, - (gogoproto.customname) = "NodeID", (gogoproto.casttype) = "NodeID"]; - optional int32 store_id = 2 [(gogoproto.nullable) = false, - (gogoproto.customname) = "StoreID", (gogoproto.casttype) = "StoreID"]; -} - -// A PollFrozenRequest asks the addressed Store for its frozen or thawed -// Replicas. -message PollFrozenRequest { - optional StoreRequestHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; - // When true, collect the frozen Replicas, and the thawed ones otherwise. - optional bool collect_frozen = 2 [(gogoproto.nullable) = false]; -} - -// A PollFrozenResponse is the response returned from a PollFrozenRequest. -message PollFrozenResponse { - repeated ReplicaDescriptor results = 1 [(gogoproto.nullable) = false]; -} - -// A ReservationRequest asks the addressed Store to reserve the space for a new -// replica for the Range of RangeID reserving RangeSize bytes. -message ReservationRequest { - optional StoreRequestHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; - optional int32 from_node_id = 2 [(gogoproto.nullable) = false, - (gogoproto.customname) = "FromNodeID", (gogoproto.casttype) = "NodeID"]; - optional int32 from_store_id = 3 [(gogoproto.nullable) = false, - (gogoproto.customname) = "FromStoreID", (gogoproto.casttype) = "StoreID"]; - optional int64 range_id = 4 [(gogoproto.nullable) = false, - (gogoproto.customname) = "RangeID", (gogoproto.casttype) = "RangeID"]; - optional int64 range_size = 5 [(gogoproto.nullable) = false]; -} - -// A ReservationResponse is the repoonse returned from a ReservationRequest. -message ReservationResponse { - optional bool reserved = 1 [(gogoproto.nullable) = false]; - // The current number of ranges and reservations on the target - // store. This is returned even if the reservation isn't filled. - // - // NB: Nullable so we can detect if the field isn't set as will be - // the case when talking to older servers. - optional int32 range_count = 2; -} - // The two Batch services below are identical, except that some internal // Request types are not permitted in batches processed by External.Batch. This // distinction exists e.g. to prevent command-line tools from accessing @@ -930,21 +885,8 @@ message ReservationResponse { service Internal { rpc Batch (BatchRequest) returns (BatchResponse) {} - - // TODO(wiz): These methods have been split out into the InternalStores - // service, but remain here until we determine that a breaking RPC change is - // acceptable. - rpc PollFrozen (PollFrozenRequest) returns (PollFrozenResponse) {} - rpc Reserve(ReservationRequest) returns (ReservationResponse) {} } service External { rpc Batch (BatchRequest) returns (BatchResponse) {} } - -// InternalStores is a wrapper for internal RPCs that operate only on the stores -// of a node. -service InternalStores { - rpc PollFrozen (PollFrozenRequest) returns (PollFrozenResponse) {} - rpc Reserve(ReservationRequest) returns (ReservationResponse) {} -} diff --git a/server/admin.go b/server/admin.go index b861f7f40340..7bf6b2ac345d 100644 --- a/server/admin.go +++ b/server/admin.go @@ -44,6 +44,7 @@ import ( "github.com/cockroachdb/cockroach/sql" "github.com/cockroachdb/cockroach/sql/parser" "github.com/cockroachdb/cockroach/sql/sqlbase" + "github.com/cockroachdb/cockroach/storage" "github.com/cockroachdb/cockroach/util" "github.com/cockroachdb/cockroach/util/log" "github.com/cockroachdb/cockroach/util/retry" @@ -865,7 +866,7 @@ func (s *adminServer) waitForStoreFrozen( } mu.oks[storeID] = false // mark as inflight action := func() (err error) { - var resp *roachpb.PollFrozenResponse + var resp *storage.PollFrozenResponse defer func() { message := fmt.Sprintf("node %d, store %d: ", nodeID, storeID) @@ -902,10 +903,10 @@ func (s *adminServer) waitForStoreFrozen( if err != nil { return err } - client := roachpb.NewInternalStoresClient(conn) + client := storage.NewStoresClient(conn) resp, err = client.PollFrozen(context.Background(), - &roachpb.PollFrozenRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + &storage.PollFrozenRequest{ + StoreRequestHeader: storage.StoreRequestHeader{ NodeID: nodeID, StoreID: storeID, }, diff --git a/server/node.go b/server/node.go index 55334965bd36..d39c477c89e7 100644 --- a/server/node.go +++ b/server/node.go @@ -131,7 +131,7 @@ type Node struct { initialBoot bool // True if this is the first time this node has started. txnMetrics *kv.TxnMetrics - storage.InternalStoresServer + storesServer storage.StoresServer } // allocateNodeID increments the node id generator key to allocate @@ -263,7 +263,7 @@ func NewNode( txnMetrics: txnMetrics, eventLogger: eventLogger, } - n.InternalStoresServer = storage.MakeInternalStoresServer(&n.Descriptor, n.stores) + n.storesServer = storage.MakeServer(&n.Descriptor, n.stores) return n } diff --git a/server/server.go b/server/server.go index 30c7719396e1..7f9e266df023 100644 --- a/server/server.go +++ b/server/server.go @@ -241,7 +241,7 @@ func NewServer(ctx Context, stopper *stop.Stopper) (*Server, error) { s.node = NewNode(nCtx, s.recorder, s.registry, s.stopper, txnMetrics, sql.MakeEventLogger(s.leaseMgr)) roachpb.RegisterInternalServer(s.grpc, s.node) - roachpb.RegisterInternalStoresServer(s.grpc, s.node.InternalStoresServer) + storage.RegisterStoresServer(s.grpc, s.node.storesServer) s.tsDB = ts.NewDB(s.db) s.tsServer = ts.MakeServer(s.tsDB) diff --git a/sql/distsql/data.pb.go b/sql/distsql/data.pb.go index ab950ccae230..5faf0449f6a2 100644 --- a/sql/distsql/data.pb.go +++ b/sql/distsql/data.pb.go @@ -2268,64 +2268,64 @@ var ( func init() { proto.RegisterFile("cockroach/sql/distsql/data.proto", fileDescriptorData) } var fileDescriptorData = []byte{ - // 931 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x55, 0xcd, 0x6e, 0x23, 0x45, - 0x17, 0x4d, 0x25, 0x1e, 0xff, 0x5c, 0xc7, 0x19, 0xab, 0xf4, 0x7d, 0x92, 0x15, 0x06, 0x27, 0xd3, - 0x40, 0x98, 0x48, 0x4c, 0x07, 0xbc, 0x83, 0x41, 0x80, 0x1d, 0xdb, 0xc4, 0x82, 0x24, 0x52, 0x3b, - 0x48, 0x0c, 0x9b, 0x56, 0xa7, 0xab, 0xe2, 0xb4, 0x68, 0x77, 0x75, 0xaa, 0xca, 0xc4, 0x79, 0x01, - 0xd6, 0x6c, 0x58, 0xc2, 0x82, 0xa7, 0xe0, 0x11, 0xc2, 0x8e, 0x25, 0x62, 0x11, 0x81, 0x79, 0x03, - 0x96, 0x48, 0x48, 0xa8, 0x7e, 0xda, 0x69, 0x4f, 0xc6, 0x03, 0xd2, 0x6c, 0xec, 0xea, 0xbe, 0xe7, - 0xdc, 0x7b, 0xee, 0xa9, 0x5b, 0xd5, 0xb0, 0x1d, 0xb2, 0xf0, 0x4b, 0xce, 0x82, 0xf0, 0x7c, 0x4f, - 0x5c, 0xc4, 0x7b, 0x24, 0x12, 0x52, 0xff, 0x07, 0x32, 0x70, 0x53, 0xce, 0x24, 0xc3, 0xff, 0x9f, - 0x23, 0x5c, 0x71, 0x11, 0xbb, 0x16, 0xb1, 0xf9, 0xe0, 0x96, 0xa8, 0x7f, 0xd3, 0xd3, 0x1c, 0x69, - 0xb3, 0x79, 0x37, 0x4a, 0x39, 0x67, 0x5c, 0xd8, 0xf8, 0xce, 0x62, 0x59, 0x71, 0x11, 0x9f, 0x06, - 0x82, 0xee, 0x09, 0xc9, 0x27, 0xa1, 0x9c, 0x70, 0x4a, 0x2c, 0x6e, 0xf7, 0xf9, 0x38, 0x9a, 0x84, - 0x8c, 0x50, 0xe2, 0x93, 0x40, 0x4e, 0xc6, 0x16, 0xfa, 0xbf, 0x11, 0x1b, 0x31, 0xbd, 0xdc, 0x53, - 0x2b, 0xf3, 0xd6, 0xe9, 0x03, 0xf4, 0xa6, 0x29, 0xa7, 0x42, 0x44, 0x2c, 0xc1, 0x4d, 0x28, 0x7d, - 0x45, 0xb9, 0x5a, 0x36, 0xd0, 0x36, 0x7a, 0x54, 0xe9, 0x14, 0xae, 0x6f, 0xb6, 0x56, 0xbc, 0xec, - 0x25, 0x6e, 0x40, 0x81, 0x4e, 0x53, 0xde, 0x58, 0xcd, 0x05, 0xf5, 0x1b, 0xe7, 0x4f, 0x04, 0xe5, - 0x63, 0x4e, 0x28, 0x8f, 0x92, 0x11, 0xee, 0x43, 0x29, 0x64, 0xf1, 0x64, 0x9c, 0x88, 0x06, 0xda, - 0x5e, 0x7b, 0x54, 0x6d, 0xed, 0xb8, 0xcf, 0x35, 0xc9, 0xcd, 0x18, 0xee, 0xbe, 0x86, 0x67, 0xe5, - 0x2c, 0x79, 0xf3, 0x3b, 0x04, 0x45, 0x13, 0xc1, 0xaf, 0xea, 0x94, 0x7e, 0x44, 0xa6, 0x5a, 0x59, - 0xcd, 0x42, 0x8b, 0x21, 0x8b, 0x07, 0x64, 0x8a, 0x4f, 0xa0, 0x42, 0x22, 0x4e, 0x43, 0xa9, 0xa4, - 0x2b, 0x75, 0x1b, 0xad, 0xb7, 0xff, 0x5b, 0x4d, 0xb7, 0x9b, 0xf1, 0x6c, 0xca, 0xdb, 0x44, 0x4e, - 0x13, 0x2a, 0xf3, 0x28, 0x2e, 0xc1, 0x5a, 0x7b, 0xb8, 0x5f, 0x5f, 0xc1, 0x65, 0x28, 0x74, 0x7b, - 0xc3, 0xfd, 0x3a, 0x72, 0xbe, 0x47, 0x50, 0x3d, 0x0c, 0xa2, 0xf8, 0x94, 0x4d, 0x87, 0x29, 0x0d, - 0xf1, 0x63, 0xb8, 0x2f, 0xa2, 0x71, 0x1a, 0x53, 0x9f, 0x53, 0x91, 0xb2, 0x44, 0x50, 0x2d, 0xb6, - 0x6c, 0x33, 0x6f, 0x98, 0xa0, 0x67, 0x63, 0xf8, 0x5d, 0xa8, 0x08, 0xc9, 0x69, 0x30, 0xf6, 0x23, - 0xa2, 0x45, 0xdf, 0xeb, 0x3c, 0x50, 0xc0, 0xd9, 0xcd, 0x56, 0x79, 0xa8, 0x03, 0x83, 0xee, 0x5f, - 0xb9, 0xb5, 0x57, 0x36, 0xf0, 0x01, 0xc1, 0x6f, 0x40, 0x55, 0x06, 0x7c, 0x44, 0xa5, 0x1f, 0x10, - 0xc2, 0x1b, 0x6b, 0xb9, 0xfd, 0x00, 0x13, 0x68, 0x13, 0xc2, 0x9d, 0x1f, 0x10, 0x60, 0xc3, 0xee, - 0x25, 0x24, 0x65, 0x51, 0x22, 0xb5, 0xce, 0x23, 0xb8, 0x1f, 0xb3, 0x30, 0x88, 0xfd, 0xdb, 0xf2, - 0x48, 0x97, 0xdf, 0xb1, 0xe5, 0x6b, 0x9f, 0xaa, 0x70, 0x4e, 0xc3, 0xe2, 0x0b, 0xaf, 0x16, 0xe7, - 0x1e, 0x09, 0x7e, 0x1f, 0x4a, 0x63, 0x63, 0x83, 0x6e, 0xa3, 0xda, 0x72, 0x96, 0x78, 0x9f, 0x33, - 0xcb, 0xcb, 0x28, 0xce, 0xd7, 0xab, 0x50, 0x1b, 0x24, 0xe9, 0x44, 0x0e, 0xaf, 0x92, 0x50, 0xeb, - 0xdb, 0x87, 0x82, 0xbc, 0x4a, 0x8d, 0x79, 0x1b, 0xad, 0xdd, 0x25, 0xc9, 0x16, 0x38, 0xee, 0xc9, - 0x55, 0x4a, 0xb3, 0x89, 0x54, 0x64, 0xdc, 0x86, 0x32, 0xb3, 0x5b, 0x6d, 0x55, 0x6d, 0xfd, 0xcb, - 0x44, 0x58, 0xfa, 0x9c, 0x86, 0x07, 0x50, 0x32, 0x0e, 0x89, 0xc6, 0x9a, 0x9e, 0xe3, 0x65, 0x52, - 0xee, 0x7a, 0x9c, 0x8d, 0xb2, 0xe5, 0x3b, 0x0e, 0x14, 0x94, 0x42, 0x5c, 0x83, 0xca, 0x67, 0x47, - 0xc7, 0x5e, 0xb7, 0xe7, 0xf5, 0xba, 0xf5, 0x15, 0x5c, 0x85, 0x52, 0xf6, 0x80, 0x9c, 0xbf, 0x11, - 0xd4, 0x8f, 0x27, 0x32, 0x9d, 0x48, 0x8f, 0x4d, 0x24, 0xe5, 0xda, 0x8b, 0xfe, 0x82, 0x17, 0x6f, - 0x2d, 0x6b, 0xe1, 0x19, 0xda, 0x5d, 0x3b, 0x72, 0xbd, 0xac, 0xbe, 0x5c, 0x2f, 0xf8, 0x4d, 0x58, - 0x3f, 0x0f, 0xc4, 0xb9, 0x9f, 0x9d, 0x71, 0xe5, 0x4d, 0x76, 0x20, 0xab, 0x2a, 0x62, 0x4e, 0x96, - 0x70, 0x1e, 0xdb, 0xa6, 0x01, 0x8a, 0x87, 0x03, 0xcf, 0x3b, 0xf6, 0x4c, 0xc7, 0x9d, 0xa7, 0xfe, - 0x41, 0x7b, 0x78, 0x50, 0x47, 0x78, 0x1d, 0xca, 0x9d, 0xa7, 0xbe, 0xd7, 0x3e, 0xfa, 0xb8, 0x57, - 0x5f, 0x75, 0xbe, 0x45, 0x50, 0xe9, 0xaa, 0x1b, 0x6b, 0x90, 0x9c, 0x31, 0xdc, 0x87, 0xb2, 0xbe, - 0xc6, 0xd4, 0xfe, 0x99, 0xe6, 0x5f, 0x7f, 0x46, 0xb1, 0xbd, 0xed, 0x5c, 0xcd, 0xe9, 0x59, 0x6c, - 0xb6, 0x89, 0x19, 0x17, 0x7f, 0x64, 0x0d, 0x34, 0xb7, 0xc2, 0xce, 0x92, 0x1c, 0x46, 0xb2, 0x52, - 0xeb, 0x7e, 0x12, 0x25, 0x24, 0x6f, 0x9d, 0xf3, 0x23, 0x82, 0x75, 0xe3, 0xca, 0x01, 0x0d, 0x08, - 0xe5, 0xf8, 0x1d, 0x28, 0x9d, 0xc5, 0xec, 0x32, 0x3b, 0x37, 0xeb, 0x9d, 0x86, 0x42, 0xff, 0x7a, - 0xb3, 0x55, 0xec, 0xc7, 0xec, 0x72, 0xd0, 0x9d, 0xcd, 0x57, 0x5e, 0x51, 0x01, 0x07, 0xe4, 0x65, - 0xce, 0xfa, 0x7b, 0x50, 0x88, 0x92, 0x33, 0x66, 0x47, 0x70, 0x7b, 0xc9, 0xb6, 0xcd, 0x8d, 0xcb, - 0xa4, 0x2b, 0x8e, 0xb3, 0x0b, 0x60, 0x32, 0x76, 0x03, 0x19, 0xe0, 0x57, 0xa0, 0xc2, 0x83, 0x4b, - 0xff, 0xf4, 0x4a, 0x52, 0x61, 0x94, 0x7b, 0x65, 0x1e, 0x5c, 0x76, 0xd4, 0xb3, 0xf3, 0x21, 0xd4, - 0x0c, 0xf4, 0x84, 0x07, 0x51, 0x4c, 0x39, 0x76, 0xe1, 0x9e, 0xfe, 0x26, 0x69, 0x64, 0xb5, 0xd5, - 0xc8, 0x15, 0xb6, 0xdf, 0x2c, 0xb7, 0xa7, 0xe2, 0x9e, 0x81, 0x39, 0x3f, 0xa1, 0x2c, 0xc3, 0x21, - 0x15, 0x22, 0x18, 0x51, 0xfc, 0x04, 0x8a, 0xe7, 0xda, 0x31, 0x9b, 0xe2, 0xb5, 0x17, 0x8e, 0x9c, - 0x31, 0xd7, 0xb3, 0x14, 0xfc, 0x04, 0x0a, 0xea, 0x83, 0x69, 0xcf, 0xee, 0xc3, 0x17, 0x52, 0x55, - 0x77, 0x59, 0xdf, 0x8a, 0x84, 0x3f, 0x80, 0x92, 0x34, 0x6d, 0xe8, 0xbb, 0xb1, 0x7a, 0x67, 0x76, - 0x16, 0xf9, 0xb6, 0x65, 0x2f, 0x23, 0x75, 0x1e, 0x5e, 0xff, 0xde, 0x5c, 0xb9, 0x9e, 0x35, 0xd1, - 0xcf, 0xb3, 0x26, 0xfa, 0x65, 0xd6, 0x44, 0xbf, 0xcd, 0x9a, 0xe8, 0x9b, 0x3f, 0x9a, 0x2b, 0x5f, - 0x94, 0x2c, 0xf3, 0xf3, 0xc2, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x93, 0x56, 0xa0, 0x3e, 0x1c, - 0x08, 0x00, 0x00, + // 929 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x55, 0x4d, 0x6f, 0x23, 0x35, + 0x18, 0xae, 0xdb, 0x6c, 0x3e, 0xde, 0x34, 0xbb, 0x91, 0x05, 0x52, 0x54, 0x96, 0xb4, 0x1d, 0xa0, + 0xda, 0x4a, 0xec, 0x14, 0x72, 0x83, 0x45, 0x40, 0xd2, 0x24, 0x34, 0x82, 0xb6, 0xd2, 0xa4, 0x48, + 0x2c, 0x97, 0xd1, 0x74, 0xec, 0xa6, 0x23, 0x26, 0xe3, 0xa9, 0xed, 0xd0, 0xf4, 0x0f, 0x70, 0xe6, + 0xc2, 0x11, 0x0e, 0xfc, 0x0a, 0x7e, 0x42, 0xb9, 0x71, 0x44, 0x1c, 0x2a, 0x08, 0xff, 0x80, 0x0b, + 0x12, 0x27, 0xe4, 0x8f, 0x49, 0x27, 0xdb, 0xcd, 0x82, 0xb4, 0x97, 0xc4, 0xe3, 0xf7, 0x79, 0x5e, + 0x3f, 0xef, 0xe3, 0xd7, 0x36, 0x6c, 0x85, 0x2c, 0xfc, 0x8a, 0xb3, 0x20, 0x3c, 0xdf, 0x13, 0x17, + 0xf1, 0x1e, 0x89, 0x84, 0xd4, 0xff, 0x81, 0x0c, 0xdc, 0x94, 0x33, 0xc9, 0xf0, 0xab, 0x73, 0x84, + 0x2b, 0x2e, 0x62, 0xd7, 0x22, 0x36, 0x1e, 0xde, 0x12, 0xf5, 0x6f, 0x7a, 0x9a, 0x23, 0x6d, 0x34, + 0xef, 0x46, 0x29, 0xe7, 0x8c, 0x0b, 0x1b, 0xdf, 0x59, 0x5c, 0x56, 0x5c, 0xc4, 0xa7, 0x81, 0xa0, + 0x7b, 0x42, 0xf2, 0x49, 0x28, 0x27, 0x9c, 0x12, 0x8b, 0xdb, 0x7d, 0x3e, 0x8e, 0x26, 0x21, 0x23, + 0x94, 0xf8, 0x24, 0x90, 0x93, 0xb1, 0x85, 0xbe, 0x32, 0x62, 0x23, 0xa6, 0x87, 0x7b, 0x6a, 0x64, + 0x66, 0x9d, 0x3e, 0x40, 0x6f, 0x9a, 0x72, 0x2a, 0x44, 0xc4, 0x12, 0xdc, 0x84, 0xd2, 0xd7, 0x94, + 0xab, 0x61, 0x03, 0x6d, 0xa1, 0x47, 0x95, 0x4e, 0xe1, 0xfa, 0x66, 0x73, 0xc5, 0xcb, 0x26, 0x71, + 0x03, 0x0a, 0x74, 0x9a, 0xf2, 0xc6, 0x6a, 0x2e, 0xa8, 0x67, 0x9c, 0xbf, 0x10, 0x94, 0x8f, 0x39, + 0xa1, 0x3c, 0x4a, 0x46, 0xb8, 0x0f, 0xa5, 0x90, 0xc5, 0x93, 0x71, 0x22, 0x1a, 0x68, 0x6b, 0xed, + 0x51, 0xb5, 0xb5, 0xe3, 0x3e, 0xd7, 0x24, 0x37, 0x63, 0xb8, 0xfb, 0x1a, 0x9e, 0x2d, 0x67, 0xc9, + 0x1b, 0xdf, 0x23, 0x28, 0x9a, 0x08, 0x7e, 0x5d, 0xa7, 0xf4, 0x23, 0x32, 0xd5, 0xca, 0x6a, 0x16, + 0x5a, 0x0c, 0x59, 0x3c, 0x20, 0x53, 0x7c, 0x02, 0x15, 0x12, 0x71, 0x1a, 0x4a, 0x25, 0x5d, 0xa9, + 0xbb, 0xdf, 0x7a, 0xe7, 0xff, 0xad, 0xe9, 0x76, 0x33, 0x9e, 0x4d, 0x79, 0x9b, 0xc8, 0x69, 0x42, + 0x65, 0x1e, 0xc5, 0x25, 0x58, 0x6b, 0x0f, 0xf7, 0xeb, 0x2b, 0xb8, 0x0c, 0x85, 0x6e, 0x6f, 0xb8, + 0x5f, 0x47, 0xce, 0x0f, 0x08, 0xaa, 0x87, 0x41, 0x14, 0x9f, 0xb2, 0xe9, 0x30, 0xa5, 0x21, 0x7e, + 0x0c, 0x0f, 0x44, 0x34, 0x4e, 0x63, 0xea, 0x73, 0x2a, 0x52, 0x96, 0x08, 0xaa, 0xc5, 0x96, 0x6d, + 0xe6, 0xfb, 0x26, 0xe8, 0xd9, 0x18, 0x7e, 0x0f, 0x2a, 0x42, 0x72, 0x1a, 0x8c, 0xfd, 0x88, 0x68, + 0xd1, 0xf7, 0x3a, 0x0f, 0x15, 0x70, 0x76, 0xb3, 0x59, 0x1e, 0xea, 0xc0, 0xa0, 0xfb, 0x4f, 0x6e, + 0xec, 0x95, 0x0d, 0x7c, 0x40, 0xf0, 0x5b, 0x50, 0x95, 0x01, 0x1f, 0x51, 0xe9, 0x07, 0x84, 0xf0, + 0xc6, 0x5a, 0x6e, 0x3f, 0xc0, 0x04, 0xda, 0x84, 0x70, 0xe7, 0x47, 0x04, 0xd8, 0xb0, 0x7b, 0x09, + 0x49, 0x59, 0x94, 0x48, 0xad, 0xf3, 0x08, 0x1e, 0xc4, 0x2c, 0x0c, 0x62, 0xff, 0x76, 0x79, 0xa4, + 0x97, 0xdf, 0xb1, 0xcb, 0xd7, 0x3e, 0x53, 0xe1, 0x9c, 0x86, 0xc5, 0x09, 0xaf, 0x16, 0xe7, 0x3e, + 0x09, 0xfe, 0x00, 0x4a, 0x63, 0x63, 0x83, 0x2e, 0xa3, 0xda, 0x72, 0x96, 0x78, 0x9f, 0x33, 0xcb, + 0xcb, 0x28, 0xce, 0x37, 0xab, 0x50, 0x1b, 0x24, 0xe9, 0x44, 0x0e, 0xaf, 0x92, 0x50, 0xeb, 0xdb, + 0x87, 0x82, 0xbc, 0x4a, 0x8d, 0x79, 0xf7, 0x5b, 0xbb, 0x4b, 0x92, 0x2d, 0x70, 0xdc, 0x93, 0xab, + 0x94, 0x66, 0x1d, 0xa9, 0xc8, 0xb8, 0x0d, 0x65, 0x66, 0xb7, 0xda, 0xaa, 0xda, 0xfc, 0x8f, 0x8e, + 0xb0, 0xf4, 0x39, 0x0d, 0x0f, 0xa0, 0x64, 0x1c, 0x12, 0x8d, 0x35, 0xdd, 0xc7, 0xcb, 0xa4, 0xdc, + 0xf5, 0x38, 0x6b, 0x65, 0xcb, 0x77, 0x1c, 0x28, 0x28, 0x85, 0xb8, 0x06, 0x95, 0xcf, 0x8f, 0x8e, + 0xbd, 0x6e, 0xcf, 0xeb, 0x75, 0xeb, 0x2b, 0xb8, 0x0a, 0xa5, 0xec, 0x03, 0x39, 0x7f, 0x23, 0xa8, + 0x1f, 0x4f, 0x64, 0x3a, 0x91, 0x1e, 0x9b, 0x48, 0xca, 0xb5, 0x17, 0xfd, 0x05, 0x2f, 0xde, 0x5e, + 0x56, 0xc2, 0x33, 0xb4, 0xbb, 0x76, 0xe4, 0x6a, 0x59, 0x7d, 0xb9, 0x5a, 0xf0, 0x36, 0xac, 0x9f, + 0x07, 0xe2, 0xdc, 0xcf, 0xce, 0xb8, 0xf2, 0xa6, 0xe6, 0x55, 0xd5, 0x9c, 0x39, 0x53, 0xc2, 0x79, + 0x6c, 0xcb, 0x05, 0x28, 0x1e, 0x0e, 0x3c, 0xef, 0xd8, 0x33, 0xb5, 0x76, 0x9e, 0xfa, 0x07, 0xed, + 0xe1, 0x41, 0x1d, 0xe1, 0x75, 0x28, 0x77, 0x9e, 0xfa, 0x5e, 0xfb, 0xe8, 0x93, 0x5e, 0x7d, 0xd5, + 0xf9, 0x0e, 0x41, 0xa5, 0xab, 0xee, 0xaa, 0x41, 0x72, 0xc6, 0x70, 0x1f, 0xca, 0xfa, 0x02, 0x53, + 0x3b, 0x67, 0xca, 0x7e, 0xf3, 0x19, 0xad, 0xf6, 0x9e, 0x73, 0x35, 0xa7, 0x67, 0xb1, 0xd9, 0xf6, + 0x65, 0x5c, 0xfc, 0xb1, 0xb5, 0xce, 0xdc, 0x07, 0x3b, 0x4b, 0x72, 0x18, 0xc9, 0x4a, 0xad, 0xfb, + 0x69, 0x94, 0x90, 0xbc, 0x69, 0xce, 0x4f, 0x08, 0xd6, 0x8d, 0x1f, 0x07, 0x34, 0x20, 0x94, 0xe3, + 0x77, 0xa1, 0x74, 0x16, 0xb3, 0xcb, 0xec, 0xc4, 0xac, 0x77, 0x1a, 0x0a, 0xfd, 0xdb, 0xcd, 0x66, + 0xb1, 0x1f, 0xb3, 0xcb, 0x41, 0x77, 0x36, 0x1f, 0x79, 0x45, 0x05, 0x1c, 0x90, 0x97, 0x39, 0xe5, + 0xef, 0x43, 0x21, 0x4a, 0xce, 0x98, 0x6d, 0xbe, 0xad, 0x25, 0x1b, 0x36, 0x37, 0x2e, 0x93, 0xae, + 0x38, 0xce, 0x2e, 0x80, 0xc9, 0xd8, 0x0d, 0x64, 0x80, 0x5f, 0x83, 0x0a, 0x0f, 0x2e, 0xfd, 0xd3, + 0x2b, 0x49, 0x85, 0x51, 0xee, 0x95, 0x79, 0x70, 0xd9, 0x51, 0xdf, 0xce, 0x47, 0x50, 0x33, 0xd0, + 0x13, 0x1e, 0x44, 0x31, 0xe5, 0xd8, 0x85, 0x7b, 0xfa, 0x35, 0xd2, 0xc8, 0x6a, 0xab, 0x91, 0x5b, + 0xd8, 0xbe, 0x56, 0x6e, 0x4f, 0xc5, 0x3d, 0x03, 0x73, 0x7e, 0x46, 0x59, 0x86, 0x43, 0x2a, 0x44, + 0x30, 0xa2, 0xf8, 0x09, 0x14, 0xcf, 0xb5, 0x63, 0x36, 0xc5, 0x1b, 0x2f, 0x6c, 0x36, 0x63, 0xae, + 0x67, 0x29, 0xf8, 0x09, 0x14, 0xd4, 0x53, 0x69, 0x4f, 0xed, 0xf6, 0x0b, 0xa9, 0xaa, 0xba, 0xac, + 0x6e, 0x45, 0xc2, 0x1f, 0x42, 0x49, 0x9a, 0x32, 0xf4, 0xad, 0x58, 0xbd, 0xd3, 0x3b, 0x8b, 0x7c, + 0x5b, 0xb2, 0x97, 0x91, 0x3a, 0xdb, 0xd7, 0x7f, 0x34, 0x57, 0xae, 0x67, 0x4d, 0xf4, 0xcb, 0xac, + 0x89, 0x7e, 0x9d, 0x35, 0xd1, 0xef, 0xb3, 0x26, 0xfa, 0xf6, 0xcf, 0xe6, 0xca, 0x97, 0x25, 0xcb, + 0xfc, 0xa2, 0xf0, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, 0x1e, 0x57, 0xa1, 0x16, 0x08, 0x00, + 0x00, } diff --git a/sql/distsql/data.proto b/sql/distsql/data.proto index 1e2cb4549be7..71d4991062b6 100644 --- a/sql/distsql/data.proto +++ b/sql/distsql/data.proto @@ -120,7 +120,7 @@ message OutputRouterSpec { // Only used for the BY_HASH type; these are the indexes of the columns we are // hashing. - repeated uint32 hash_columns = 3 [(gogoproto.nullable) = false]; + repeated uint32 hash_columns = 3; } message DatumInfo { diff --git a/storage/api.pb.go b/storage/api.pb.go new file mode 100644 index 000000000000..337fa0aa076d --- /dev/null +++ b/storage/api.pb.go @@ -0,0 +1,1165 @@ +// Code generated by protoc-gen-gogo. +// source: cockroach/storage/api.proto +// DO NOT EDIT! + +/* + Package storage is a generated protocol buffer package. + + It is generated from these files: + cockroach/storage/api.proto + cockroach/storage/raft.proto + + It has these top-level messages: + StoreRequestHeader + PollFrozenRequest + PollFrozenResponse + ReservationRequest + ReservationResponse + RaftMessageRequest + RaftMessageResponseUnion + RaftMessageResponse + ConfChangeContext +*/ +package storage + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" +import cockroach_roachpb "github.com/cockroachdb/cockroach/roachpb" + +// skipping weak import gogoproto "github.com/cockroachdb/gogoproto" + +import github_com_cockroachdb_cockroach_roachpb "github.com/cockroachdb/cockroach/roachpb" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +// StoreRequestHeader locates a Store on a Node. +type StoreRequestHeader struct { + NodeID github_com_cockroachdb_cockroach_roachpb.NodeID `protobuf:"varint,1,opt,name=node_id,json=nodeId,proto3,casttype=github.com/cockroachdb/cockroach/roachpb.NodeID" json:"node_id,omitempty"` + StoreID github_com_cockroachdb_cockroach_roachpb.StoreID `protobuf:"varint,2,opt,name=store_id,json=storeId,proto3,casttype=github.com/cockroachdb/cockroach/roachpb.StoreID" json:"store_id,omitempty"` +} + +func (m *StoreRequestHeader) Reset() { *m = StoreRequestHeader{} } +func (m *StoreRequestHeader) String() string { return proto.CompactTextString(m) } +func (*StoreRequestHeader) ProtoMessage() {} +func (*StoreRequestHeader) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{0} } + +// A PollFrozenRequest asks the addressed Store for its frozen or thawed +// Replicas. +type PollFrozenRequest struct { + StoreRequestHeader `protobuf:"bytes,1,opt,name=header,embedded=header" json:"header"` + // When true, collect the frozen Replicas, and the thawed ones otherwise. + CollectFrozen bool `protobuf:"varint,2,opt,name=collect_frozen,json=collectFrozen,proto3" json:"collect_frozen,omitempty"` +} + +func (m *PollFrozenRequest) Reset() { *m = PollFrozenRequest{} } +func (m *PollFrozenRequest) String() string { return proto.CompactTextString(m) } +func (*PollFrozenRequest) ProtoMessage() {} +func (*PollFrozenRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{1} } + +// A PollFrozenResponse is the response returned from a PollFrozenRequest. +type PollFrozenResponse struct { + Results []cockroach_roachpb.ReplicaDescriptor `protobuf:"bytes,1,rep,name=results" json:"results"` +} + +func (m *PollFrozenResponse) Reset() { *m = PollFrozenResponse{} } +func (m *PollFrozenResponse) String() string { return proto.CompactTextString(m) } +func (*PollFrozenResponse) ProtoMessage() {} +func (*PollFrozenResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{2} } + +// A ReservationRequest asks the addressed Store to reserve the space for a new +// replica for the Range of RangeID reserving RangeSize bytes. +type ReservationRequest struct { + StoreRequestHeader `protobuf:"bytes,1,opt,name=header,embedded=header" json:"header"` + FromNodeID github_com_cockroachdb_cockroach_roachpb.NodeID `protobuf:"varint,2,opt,name=from_node_id,json=fromNodeId,proto3,casttype=github.com/cockroachdb/cockroach/roachpb.NodeID" json:"from_node_id,omitempty"` + FromStoreID github_com_cockroachdb_cockroach_roachpb.StoreID `protobuf:"varint,3,opt,name=from_store_id,json=fromStoreId,proto3,casttype=github.com/cockroachdb/cockroach/roachpb.StoreID" json:"from_store_id,omitempty"` + RangeID github_com_cockroachdb_cockroach_roachpb.RangeID `protobuf:"varint,4,opt,name=range_id,json=rangeId,proto3,casttype=github.com/cockroachdb/cockroach/roachpb.RangeID" json:"range_id,omitempty"` + RangeSize int64 `protobuf:"varint,5,opt,name=range_size,json=rangeSize,proto3" json:"range_size,omitempty"` +} + +func (m *ReservationRequest) Reset() { *m = ReservationRequest{} } +func (m *ReservationRequest) String() string { return proto.CompactTextString(m) } +func (*ReservationRequest) ProtoMessage() {} +func (*ReservationRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{3} } + +// A ReservationResponse is the repoonse returned from a ReservationRequest. +type ReservationResponse struct { + Reserved bool `protobuf:"varint,1,opt,name=reserved,proto3" json:"reserved,omitempty"` + // The current number of ranges and reservations on the target + // store. This is returned even if the reservation isn't filled. + RangeCount int32 `protobuf:"varint,2,opt,name=range_count,json=rangeCount,proto3" json:"range_count,omitempty"` +} + +func (m *ReservationResponse) Reset() { *m = ReservationResponse{} } +func (m *ReservationResponse) String() string { return proto.CompactTextString(m) } +func (*ReservationResponse) ProtoMessage() {} +func (*ReservationResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{4} } + +func init() { + proto.RegisterType((*StoreRequestHeader)(nil), "cockroach.storage.StoreRequestHeader") + proto.RegisterType((*PollFrozenRequest)(nil), "cockroach.storage.PollFrozenRequest") + proto.RegisterType((*PollFrozenResponse)(nil), "cockroach.storage.PollFrozenResponse") + proto.RegisterType((*ReservationRequest)(nil), "cockroach.storage.ReservationRequest") + proto.RegisterType((*ReservationResponse)(nil), "cockroach.storage.ReservationResponse") +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion3 + +// Client API for Stores service + +type StoresClient interface { + PollFrozen(ctx context.Context, in *PollFrozenRequest, opts ...grpc.CallOption) (*PollFrozenResponse, error) + Reserve(ctx context.Context, in *ReservationRequest, opts ...grpc.CallOption) (*ReservationResponse, error) +} + +type storesClient struct { + cc *grpc.ClientConn +} + +func NewStoresClient(cc *grpc.ClientConn) StoresClient { + return &storesClient{cc} +} + +func (c *storesClient) PollFrozen(ctx context.Context, in *PollFrozenRequest, opts ...grpc.CallOption) (*PollFrozenResponse, error) { + out := new(PollFrozenResponse) + err := grpc.Invoke(ctx, "/cockroach.storage.Stores/PollFrozen", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *storesClient) Reserve(ctx context.Context, in *ReservationRequest, opts ...grpc.CallOption) (*ReservationResponse, error) { + out := new(ReservationResponse) + err := grpc.Invoke(ctx, "/cockroach.storage.Stores/Reserve", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Stores service + +type StoresServer interface { + PollFrozen(context.Context, *PollFrozenRequest) (*PollFrozenResponse, error) + Reserve(context.Context, *ReservationRequest) (*ReservationResponse, error) +} + +func RegisterStoresServer(s *grpc.Server, srv StoresServer) { + s.RegisterService(&_Stores_serviceDesc, srv) +} + +func _Stores_PollFrozen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PollFrozenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StoresServer).PollFrozen(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cockroach.storage.Stores/PollFrozen", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StoresServer).PollFrozen(ctx, req.(*PollFrozenRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Stores_Reserve_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReservationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StoresServer).Reserve(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cockroach.storage.Stores/Reserve", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StoresServer).Reserve(ctx, req.(*ReservationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Stores_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cockroach.storage.Stores", + HandlerType: (*StoresServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "PollFrozen", + Handler: _Stores_PollFrozen_Handler, + }, + { + MethodName: "Reserve", + Handler: _Stores_Reserve_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: fileDescriptorApi, +} + +func (m *StoreRequestHeader) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *StoreRequestHeader) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.NodeID != 0 { + data[i] = 0x8 + i++ + i = encodeVarintApi(data, i, uint64(m.NodeID)) + } + if m.StoreID != 0 { + data[i] = 0x10 + i++ + i = encodeVarintApi(data, i, uint64(m.StoreID)) + } + return i, nil +} + +func (m *PollFrozenRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PollFrozenRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintApi(data, i, uint64(m.StoreRequestHeader.Size())) + n1, err := m.StoreRequestHeader.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + if m.CollectFrozen { + data[i] = 0x10 + i++ + if m.CollectFrozen { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + return i, nil +} + +func (m *PollFrozenResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PollFrozenResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Results) > 0 { + for _, msg := range m.Results { + data[i] = 0xa + i++ + i = encodeVarintApi(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ReservationRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReservationRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintApi(data, i, uint64(m.StoreRequestHeader.Size())) + n2, err := m.StoreRequestHeader.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + if m.FromNodeID != 0 { + data[i] = 0x10 + i++ + i = encodeVarintApi(data, i, uint64(m.FromNodeID)) + } + if m.FromStoreID != 0 { + data[i] = 0x18 + i++ + i = encodeVarintApi(data, i, uint64(m.FromStoreID)) + } + if m.RangeID != 0 { + data[i] = 0x20 + i++ + i = encodeVarintApi(data, i, uint64(m.RangeID)) + } + if m.RangeSize != 0 { + data[i] = 0x28 + i++ + i = encodeVarintApi(data, i, uint64(m.RangeSize)) + } + return i, nil +} + +func (m *ReservationResponse) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReservationResponse) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Reserved { + data[i] = 0x8 + i++ + if m.Reserved { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + if m.RangeCount != 0 { + data[i] = 0x10 + i++ + i = encodeVarintApi(data, i, uint64(m.RangeCount)) + } + return i, nil +} + +func encodeFixed64Api(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Api(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintApi(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *StoreRequestHeader) Size() (n int) { + var l int + _ = l + if m.NodeID != 0 { + n += 1 + sovApi(uint64(m.NodeID)) + } + if m.StoreID != 0 { + n += 1 + sovApi(uint64(m.StoreID)) + } + return n +} + +func (m *PollFrozenRequest) Size() (n int) { + var l int + _ = l + l = m.StoreRequestHeader.Size() + n += 1 + l + sovApi(uint64(l)) + if m.CollectFrozen { + n += 2 + } + return n +} + +func (m *PollFrozenResponse) Size() (n int) { + var l int + _ = l + if len(m.Results) > 0 { + for _, e := range m.Results { + l = e.Size() + n += 1 + l + sovApi(uint64(l)) + } + } + return n +} + +func (m *ReservationRequest) Size() (n int) { + var l int + _ = l + l = m.StoreRequestHeader.Size() + n += 1 + l + sovApi(uint64(l)) + if m.FromNodeID != 0 { + n += 1 + sovApi(uint64(m.FromNodeID)) + } + if m.FromStoreID != 0 { + n += 1 + sovApi(uint64(m.FromStoreID)) + } + if m.RangeID != 0 { + n += 1 + sovApi(uint64(m.RangeID)) + } + if m.RangeSize != 0 { + n += 1 + sovApi(uint64(m.RangeSize)) + } + return n +} + +func (m *ReservationResponse) Size() (n int) { + var l int + _ = l + if m.Reserved { + n += 2 + } + if m.RangeCount != 0 { + n += 1 + sovApi(uint64(m.RangeCount)) + } + return n +} + +func sovApi(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozApi(x uint64) (n int) { + return sovApi(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *StoreRequestHeader) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StoreRequestHeader: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StoreRequestHeader: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) + } + m.NodeID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.NodeID |= (github_com_cockroachdb_cockroach_roachpb.NodeID(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreID", wireType) + } + m.StoreID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.StoreID |= (github_com_cockroachdb_cockroach_roachpb.StoreID(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipApi(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PollFrozenRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PollFrozenRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PollFrozenRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreRequestHeader", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StoreRequestHeader.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectFrozen", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CollectFrozen = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipApi(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PollFrozenResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PollFrozenResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PollFrozenResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Results = append(m.Results, cockroach_roachpb.ReplicaDescriptor{}) + if err := m.Results[len(m.Results)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReservationRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReservationRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReservationRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreRequestHeader", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StoreRequestHeader.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FromNodeID", wireType) + } + m.FromNodeID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.FromNodeID |= (github_com_cockroachdb_cockroach_roachpb.NodeID(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FromStoreID", wireType) + } + m.FromStoreID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.FromStoreID |= (github_com_cockroachdb_cockroach_roachpb.StoreID(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RangeID", wireType) + } + m.RangeID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.RangeID |= (github_com_cockroachdb_cockroach_roachpb.RangeID(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RangeSize", wireType) + } + m.RangeSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.RangeSize |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipApi(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReservationResponse) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReservationResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReservationResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Reserved", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Reserved = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RangeCount", wireType) + } + m.RangeCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.RangeCount |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipApi(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipApi(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowApi + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowApi + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowApi + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthApi + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowApi + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipApi(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthApi = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowApi = fmt.Errorf("proto: integer overflow") +) + +func init() { proto.RegisterFile("cockroach/storage/api.proto", fileDescriptorApi) } + +var fileDescriptorApi = []byte{ + // 560 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x8f, 0xd2, 0x40, + 0x14, 0x67, 0x64, 0x97, 0xe2, 0xc3, 0x35, 0xd9, 0xd1, 0x03, 0xc1, 0xd8, 0x62, 0xb3, 0x18, 0x4e, + 0xad, 0xc1, 0xb3, 0x31, 0xb2, 0x64, 0x95, 0x8b, 0x31, 0xb3, 0x89, 0x31, 0x78, 0x20, 0xa5, 0x7d, + 0x94, 0xc6, 0xc2, 0xd4, 0xe9, 0xe0, 0x81, 0xab, 0x5f, 0xc0, 0x4f, 0xe1, 0xf7, 0xf0, 0xc6, 0x71, + 0x8f, 0x9e, 0x1a, 0xad, 0xdf, 0xc2, 0x93, 0xe9, 0x4c, 0x61, 0xd7, 0xb0, 0xc9, 0xfa, 0x67, 0x2f, + 0x64, 0x78, 0x33, 0xbf, 0x3f, 0x6f, 0xde, 0x6f, 0x0a, 0xf7, 0x7c, 0xee, 0xbf, 0x13, 0xdc, 0xf3, + 0x67, 0x6e, 0x2a, 0xb9, 0xf0, 0x42, 0x74, 0xbd, 0x24, 0x72, 0x12, 0xc1, 0x25, 0xa7, 0x87, 0xdb, + 0x4d, 0xa7, 0xdc, 0x6c, 0xb5, 0xcf, 0xcf, 0xab, 0xdf, 0x64, 0xe2, 0xce, 0x51, 0x7a, 0x81, 0x27, + 0x3d, 0x0d, 0x6a, 0xdd, 0x0d, 0x79, 0xc8, 0xd5, 0xd2, 0x2d, 0x56, 0xba, 0x6a, 0xaf, 0x09, 0xd0, + 0x53, 0xc9, 0x05, 0x32, 0x7c, 0xbf, 0xc4, 0x54, 0xbe, 0x40, 0x2f, 0x40, 0x41, 0x5f, 0x83, 0xb1, + 0xe0, 0x01, 0x8e, 0xa3, 0xa0, 0x49, 0xda, 0xa4, 0xbb, 0xdf, 0x7f, 0x92, 0x67, 0x56, 0xed, 0x25, + 0x0f, 0x70, 0x38, 0xf8, 0x99, 0x59, 0x6e, 0x18, 0xc9, 0xd9, 0x72, 0xe2, 0xf8, 0x7c, 0xee, 0x6e, + 0x85, 0x83, 0x89, 0xbb, 0x63, 0xc2, 0xd1, 0x10, 0x56, 0x2b, 0xd8, 0x86, 0x01, 0x1d, 0x41, 0xbd, + 0x70, 0xac, 0x88, 0x6f, 0x28, 0xe2, 0xa7, 0x79, 0x66, 0x19, 0xca, 0x81, 0x62, 0x7e, 0xf4, 0xc7, + 0xcc, 0x25, 0x86, 0x19, 0x8a, 0x70, 0x18, 0xd8, 0x1f, 0x09, 0x1c, 0xbe, 0xe2, 0x71, 0x7c, 0x22, + 0xf8, 0x0a, 0x17, 0x65, 0x3f, 0xf4, 0x39, 0xd4, 0x66, 0xaa, 0x27, 0xd5, 0x48, 0xa3, 0xd7, 0x71, + 0x76, 0x2e, 0xcf, 0xd9, 0xbd, 0x80, 0x7e, 0x7d, 0x9d, 0x59, 0x95, 0xb3, 0xcc, 0x22, 0xac, 0x84, + 0xd3, 0x0e, 0xdc, 0xf6, 0x79, 0x1c, 0xa3, 0x2f, 0xc7, 0x53, 0xa5, 0xa0, 0x1a, 0xa8, 0xb3, 0x83, + 0xb2, 0xaa, 0x65, 0xed, 0x11, 0xd0, 0x8b, 0x26, 0xd2, 0x84, 0x2f, 0x52, 0xa4, 0x03, 0x30, 0x04, + 0xa6, 0xcb, 0x58, 0xa6, 0x4d, 0xd2, 0xae, 0x76, 0x1b, 0xbd, 0xa3, 0x0b, 0x36, 0x36, 0x1d, 0x31, + 0x4c, 0xe2, 0xc8, 0xf7, 0x06, 0x98, 0xfa, 0x22, 0x4a, 0x24, 0x17, 0xfd, 0xbd, 0xc2, 0x05, 0xdb, + 0x40, 0xed, 0xcf, 0x55, 0xa0, 0x0c, 0x53, 0x14, 0x1f, 0x3c, 0x19, 0xf1, 0xeb, 0x6f, 0xd1, 0x87, + 0x5b, 0x53, 0xc1, 0xe7, 0xe3, 0xcd, 0xe8, 0xf5, 0x84, 0x9e, 0xe5, 0x99, 0x05, 0x27, 0x82, 0xcf, + 0xff, 0x7d, 0xfc, 0x30, 0xdd, 0xc0, 0x03, 0x1a, 0xc2, 0x81, 0x12, 0xd9, 0xe6, 0xa0, 0xaa, 0x54, + 0x8e, 0xf3, 0xcc, 0x6a, 0x14, 0x2a, 0xff, 0x93, 0x85, 0xc6, 0x74, 0x4b, 0xa0, 0xb2, 0x26, 0xbc, + 0x45, 0xa8, 0x34, 0xf6, 0xda, 0xa4, 0x5b, 0xd5, 0x59, 0x63, 0x45, 0xed, 0x2f, 0xf9, 0x4b, 0x0c, + 0x33, 0x14, 0xe1, 0x30, 0xa0, 0xf7, 0x01, 0x34, 0x77, 0x1a, 0xad, 0xb0, 0xb9, 0x5f, 0xb0, 0xb3, + 0x9b, 0xaa, 0x72, 0x1a, 0xad, 0xd0, 0x66, 0x70, 0xe7, 0xb7, 0x39, 0x95, 0x29, 0x68, 0x41, 0x5d, + 0xa8, 0x32, 0xea, 0x67, 0x55, 0x67, 0xdb, 0xff, 0xd4, 0x82, 0x86, 0x66, 0xf4, 0xf9, 0x72, 0x21, + 0xf5, 0xd5, 0x33, 0x2d, 0x72, 0x5c, 0x54, 0x7a, 0x5f, 0x08, 0xd4, 0x54, 0x6b, 0x29, 0x7d, 0x0b, + 0x70, 0x9e, 0x31, 0x7a, 0x74, 0xc9, 0xb8, 0x77, 0xde, 0x41, 0xab, 0x73, 0xc5, 0x29, 0x6d, 0xd1, + 0xae, 0xd0, 0x11, 0x18, 0xda, 0x3b, 0xd2, 0xcb, 0x30, 0xbb, 0xf9, 0x6b, 0x3d, 0xbc, 0xea, 0xd8, + 0x86, 0xbb, 0xff, 0x60, 0xfd, 0xdd, 0xac, 0xac, 0x73, 0x93, 0x9c, 0xe5, 0x26, 0xf9, 0x9a, 0x9b, + 0xe4, 0x5b, 0x6e, 0x92, 0x4f, 0x3f, 0xcc, 0xca, 0xc8, 0x28, 0x81, 0x6f, 0xc8, 0xa4, 0xa6, 0xbe, + 0x4c, 0x8f, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x42, 0x3a, 0xb4, 0x03, 0x05, 0x00, 0x00, +} diff --git a/storage/api.proto b/storage/api.proto new file mode 100644 index 000000000000..6cfca5e21495 --- /dev/null +++ b/storage/api.proto @@ -0,0 +1,71 @@ +// Copyright 2016 The Cockroach Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. +// +// Author: Tobias Schottdorf (tobias@cockroachlabs.com) + +syntax = "proto3"; +package cockroach.storage; +option go_package = "storage"; + +import "cockroach/roachpb/metadata.proto"; +import weak "gogoproto/gogo.proto"; + +// StoreRequestHeader locates a Store on a Node. +message StoreRequestHeader { + int32 node_id = 1 [(gogoproto.customname) = "NodeID", + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/roachpb.NodeID"]; + int32 store_id = 2 [(gogoproto.customname) = "StoreID", + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/roachpb.StoreID"]; +} + +// A PollFrozenRequest asks the addressed Store for its frozen or thawed +// Replicas. +message PollFrozenRequest { + StoreRequestHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; + // When true, collect the frozen Replicas, and the thawed ones otherwise. + bool collect_frozen = 2; +} + +// A PollFrozenResponse is the response returned from a PollFrozenRequest. +message PollFrozenResponse { + repeated cockroach.roachpb.ReplicaDescriptor results = 1 [(gogoproto.nullable) = false]; +} + +// A ReservationRequest asks the addressed Store to reserve the space for a new +// replica for the Range of RangeID reserving RangeSize bytes. +message ReservationRequest { + StoreRequestHeader header = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; + int32 from_node_id = 2 [(gogoproto.customname) = "FromNodeID", + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/roachpb.NodeID"]; + int32 from_store_id = 3 [(gogoproto.customname) = "FromStoreID", + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/roachpb.StoreID"]; + int64 range_id = 4 [(gogoproto.customname) = "RangeID", + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/roachpb.RangeID"]; + int64 range_size = 5; +} + +// A ReservationResponse is the repoonse returned from a ReservationRequest. +message ReservationResponse { + bool reserved = 1; + // The current number of ranges and reservations on the target + // store. This is returned even if the reservation isn't filled. + int32 range_count = 2; +} + +// Stores is a wrapper for internal RPCs that operate only on the stores of a +// node. +service Stores { + rpc PollFrozen (PollFrozenRequest) returns (PollFrozenResponse) {} + rpc Reserve(ReservationRequest) returns (ReservationResponse) {} +} diff --git a/storage/client_replica_gc_test.go b/storage/client_replica_gc_test.go index 757de573d3cf..84a415dc1b50 100644 --- a/storage/client_replica_gc_test.go +++ b/storage/client_replica_gc_test.go @@ -20,13 +20,14 @@ import ( "testing" "time" + "github.com/pkg/errors" + "github.com/cockroachdb/cockroach/roachpb" "github.com/cockroachdb/cockroach/storage" "github.com/cockroachdb/cockroach/storage/storagebase" "github.com/cockroachdb/cockroach/testutils" "github.com/cockroachdb/cockroach/util" "github.com/cockroachdb/cockroach/util/leaktest" - "github.com/pkg/errors" ) // TestReplicaGCQueueDropReplica verifies that a removed replica is diff --git a/storage/client_test.go b/storage/client_test.go index f6e3c2f9bb09..8b00de975137 100644 --- a/storage/client_test.go +++ b/storage/client_test.go @@ -628,7 +628,7 @@ func (m *multiTestContext) addStore(idx int) { stores := storage.NewStores(clock) stores.AddStore(store) - roachpb.RegisterInternalStoresServer(grpcServer, storage.MakeInternalStoresServer(m.nodeDesc(nodeID), stores)) + storage.RegisterStoresServer(grpcServer, storage.MakeServer(m.nodeDesc(nodeID), stores)) // Add newly created objects to the multiTestContext's collections. // (these must be populated before the store is started so that diff --git a/storage/raft.pb.go b/storage/raft.pb.go index 61b4fcb3ec48..85e54c911b85 100644 --- a/storage/raft.pb.go +++ b/storage/raft.pb.go @@ -2,18 +2,6 @@ // source: cockroach/storage/raft.proto // DO NOT EDIT! -/* - Package storage is a generated protocol buffer package. - - It is generated from these files: - cockroach/storage/raft.proto - - It has these top-level messages: - RaftMessageRequest - RaftMessageResponseUnion - RaftMessageResponse - ConfChangeContext -*/ package storage import proto "github.com/gogo/protobuf/proto" @@ -39,12 +27,6 @@ var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package - // RaftMessageRequest is the request used to send raft messages using our // protobuf-based RPC codec. type RaftMessageRequest struct { diff --git a/storage/replica_test.go b/storage/replica_test.go index 6d85c5ef4e4e..16fefb76f418 100644 --- a/storage/replica_test.go +++ b/storage/replica_test.go @@ -6308,8 +6308,8 @@ func TestReserveAndApplySnapshot(t *testing.T) { // designed to test the filling of the reservation specifically and in // normal operation there should not be a reservation for an existing // replica. - req := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + req := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: tc.store.StoreID(), NodeID: tc.store.nodeDesc.NodeID, }, diff --git a/storage/reservation.go b/storage/reservation.go index 1e1ab83f9038..da0392fa2764 100644 --- a/storage/reservation.go +++ b/storage/reservation.go @@ -17,7 +17,6 @@ package storage import ( "time" - "github.com/gogo/protobuf/proto" "golang.org/x/net/context" "github.com/cockroachdb/cockroach/roachpb" @@ -40,7 +39,7 @@ const ( // reservation is an item in both the reservationQ and the used in bookie's // reservation map. type reservation struct { - roachpb.ReservationRequest + ReservationRequest expireAt hlc.Timestamp } @@ -112,15 +111,15 @@ func newBookie( // outstanding reservations already or not having enough free disk space. // Accepted reservations return a ReservationResponse with Reserved set to true. func (b *bookie) Reserve( - ctx context.Context, req roachpb.ReservationRequest, deadReplicas []roachpb.ReplicaIdent, -) roachpb.ReservationResponse { + ctx context.Context, req ReservationRequest, deadReplicas []roachpb.ReplicaIdent, +) ReservationResponse { b.mu.Lock() defer b.mu.Unlock() - resp := roachpb.ReservationResponse{ + resp := ReservationResponse{ Reserved: false, - RangeCount: proto.Int32(int32(b.metrics.ReplicaCount.Count()) + - int32(len(b.mu.reservationsByRangeID))), + RangeCount: int32(b.metrics.ReplicaCount.Count()) + + int32(len(b.mu.reservationsByRangeID)), } if olderReservation, ok := b.mu.reservationsByRangeID[req.RangeID]; ok { @@ -177,7 +176,7 @@ func (b *bookie) Reserve( // Make sure that we don't add back a destroyed replica. for _, rep := range deadReplicas { if req.RangeID == rep.RangeID { - return roachpb.ReservationResponse{Reserved: false} + return ReservationResponse{Reserved: false} } } diff --git a/storage/reservation_test.go b/storage/reservation_test.go index 5b774d970ffc..f9d6cf3902b1 100644 --- a/storage/reservation_test.go +++ b/storage/reservation_test.go @@ -110,8 +110,8 @@ func TestBookieReserve(t *testing.T) { for i, testCase := range testCases { if testCase.reserve { // Try to reserve the range. - req := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + req := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(i), NodeID: roachpb.NodeID(i), }, @@ -141,8 +141,8 @@ func TestBookieReserve(t *testing.T) { // Test that repeated requests with the same store and node number extend // the timeout of the pre-existing reservation. - repeatReq := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + repeatReq := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: 100, NodeID: 100, }, @@ -159,8 +159,8 @@ func TestBookieReserve(t *testing.T) { queueLen = bookieQueueLen(b) // Test rejecting a reservation due to disk space constraints. - overfilledReq := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + overfilledReq := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: 200, NodeID: 200, }, @@ -191,8 +191,8 @@ func TestBookieReserveMaxRanges(t *testing.T) { // Load up reservations. for i := 1; i <= previousReserved; i++ { - req := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + req := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(i), NodeID: roachpb.NodeID(i), }, @@ -205,8 +205,8 @@ func TestBookieReserveMaxRanges(t *testing.T) { verifyBookie(t, b, i, i, int64(i)) } - overbookedReq := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + overbookedReq := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(previousReserved + 1), NodeID: roachpb.NodeID(previousReserved + 1), }, @@ -232,8 +232,8 @@ func TestBookieReserveMaxBytes(t *testing.T) { // Load up reservations with a size of 1 each. for i := 1; i <= previousReservedBytes; i++ { - req := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + req := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(i), NodeID: roachpb.NodeID(i), }, @@ -246,8 +246,8 @@ func TestBookieReserveMaxBytes(t *testing.T) { verifyBookie(t, b, i, i, int64(i)) } - overbookedReq := roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + overbookedReq := ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(previousReservedBytes + 1), NodeID: roachpb.NodeID(previousReservedBytes + 1), }, @@ -301,8 +301,8 @@ func TestReservationQueue(t *testing.T) { for i := 1; i <= 10; i++ { // Ensure all the reservations expire 100 nanoseconds apart. mc.Increment(100) - if !b.Reserve(context.Background(), roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + if !b.Reserve(context.Background(), ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(i), NodeID: roachpb.NodeID(i), }, @@ -346,8 +346,8 @@ func TestReservationQueue(t *testing.T) { // timed out, and 6, which has been filled by not timed out. Only increment // by 10 here to ensure we don't expire any of the other reservations. mc.Increment(10) - if !b.Reserve(context.Background(), roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + if !b.Reserve(context.Background(), ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(11), NodeID: roachpb.NodeID(11), }, @@ -359,8 +359,8 @@ func TestReservationQueue(t *testing.T) { verifyBookie(t, b, 6 /*reservations*/, 7 /*queue*/, 6*bytesPerReservation /*bytes*/) mc.Increment(10) - if !b.Reserve(context.Background(), roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + if !b.Reserve(context.Background(), ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(12), NodeID: roachpb.NodeID(12), }, @@ -372,8 +372,8 @@ func TestReservationQueue(t *testing.T) { verifyBookie(t, b, 7 /*reservations*/, 8 /*queue*/, 7*bytesPerReservation /*bytes*/) mc.Increment(10) - if !b.Reserve(context.Background(), roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + if !b.Reserve(context.Background(), ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ StoreID: roachpb.StoreID(13), NodeID: roachpb.NodeID(13), }, diff --git a/storage/store.go b/storage/store.go index ccc7f14c2e3b..1924853e3bc8 100644 --- a/storage/store.go +++ b/storage/store.go @@ -2296,19 +2296,15 @@ func (s *Store) HandleRaftResponse(ctx context.Context, resp *RaftMessageRespons case *roachpb.Error: switch val.GetDetail().(type) { case *roachpb.ReplicaTooOldError: - if err := s.stopper.RunTask(func() { - s.mu.Lock() - rep, ok := s.mu.replicas[resp.RangeID] - s.mu.Unlock() - if ok { - log.Infof(ctx, "%s: replica %s too old, adding to replica GC queue", rep, resp.ToReplica) + s.mu.Lock() + rep, ok := s.mu.replicas[resp.RangeID] + s.mu.Unlock() + if ok { + log.Infof(ctx, "%s: replica %s too old, adding to replica GC queue", rep, resp.ToReplica) - if err := s.replicaGCQueue.Add(rep, 1.0); err != nil { - log.Errorf(ctx, "%s: unable to add replica %d to GC queue: %s", rep, resp.ToReplica, err) - } + if err := s.replicaGCQueue.Add(rep, 1.0); err != nil { + log.Errorf(ctx, "%s: unable to add replica %d to GC queue: %s", rep, resp.ToReplica, err) } - }); err != nil { - log.Errorf(ctx, "%s: %s", s, err) } default: @@ -2686,7 +2682,7 @@ func (s *Store) FrozenStatus(collectFrozen bool) (repDescs []roachpb.ReplicaDesc } // Reserve requests a reservation from the store's bookie. -func (s *Store) Reserve(ctx context.Context, req roachpb.ReservationRequest) roachpb.ReservationResponse { +func (s *Store) Reserve(ctx context.Context, req ReservationRequest) ReservationResponse { return s.bookie.Reserve(ctx, req, s.deadReplicas().Replicas) } diff --git a/storage/store_pool.go b/storage/store_pool.go index b5c8901f039b..7b8363f010d6 100644 --- a/storage/store_pool.go +++ b/storage/store_pool.go @@ -534,9 +534,9 @@ func (sp *StorePool) reserve( return errors.Wrapf(err, "failed to dial store %+v, addr %q, node %+v", toStoreID, addr, detail.desc.Node) } - client := roachpb.NewInternalStoresClient(conn) - req := &roachpb.ReservationRequest{ - StoreRequestHeader: roachpb.StoreRequestHeader{ + client := NewStoresClient(conn) + req := &ReservationRequest{ + StoreRequestHeader: StoreRequestHeader{ NodeID: detail.desc.Node.NodeID, StoreID: toStoreID, }, @@ -567,9 +567,7 @@ func (sp *StorePool) reserve( return errors.Wrapf(err, "reservation failed:%+v", req) } - if resp.RangeCount != nil { - detail.desc.Capacity.RangeCount = *resp.RangeCount - } + detail.desc.Capacity.RangeCount = resp.RangeCount if !resp.Reserved { detail.throttledUntil = sp.clock.Now().GoTime().Add(sp.declinedReservationsTimeout) if log.V(2) { diff --git a/storage/store_pool_test.go b/storage/store_pool_test.go index 7da7d388608f..15a93804bef3 100644 --- a/storage/store_pool_test.go +++ b/storage/store_pool_test.go @@ -447,14 +447,14 @@ type fakeStoresServer struct { reservationErr error } -var _ roachpb.InternalStoresServer = fakeStoresServer{} +var _ StoresServer = fakeStoresServer{} -func (f fakeStoresServer) PollFrozen(_ context.Context, _ *roachpb.PollFrozenRequest) (*roachpb.PollFrozenResponse, error) { +func (f fakeStoresServer) PollFrozen(_ context.Context, _ *PollFrozenRequest) (*PollFrozenResponse, error) { panic("unimplemented") } -func (f fakeStoresServer) Reserve(_ context.Context, _ *roachpb.ReservationRequest) (*roachpb.ReservationResponse, error) { - return &roachpb.ReservationResponse{Reserved: f.reservationResponse}, f.reservationErr +func (f fakeStoresServer) Reserve(_ context.Context, _ *ReservationRequest) (*ReservationResponse, error) { + return &ReservationResponse{Reserved: f.reservationResponse}, f.reservationErr } // newFakeNodeServer returns a fakeStoresServer designed to handle internal @@ -469,7 +469,7 @@ func newFakeNodeServer(stopper *stop.Stopper) (*fakeStoresServer, *rpc.Context, } stopper.AddCloser(stop.CloserFn(func() { _ = ln.Close() })) f := &fakeStoresServer{} - roachpb.RegisterInternalStoresServer(s, f) + RegisterStoresServer(s, f) return f, ctx, ln.Addr().String(), nil } diff --git a/storage/internal_server.go b/storage/stores_server.go similarity index 60% rename from storage/internal_server.go rename to storage/stores_server.go index 0923ed9ba60b..53c33c43f921 100644 --- a/storage/internal_server.go +++ b/storage/stores_server.go @@ -17,30 +17,29 @@ package storage import ( - "github.com/cockroachdb/cockroach/roachpb" "github.com/pkg/errors" "golang.org/x/net/context" + + "github.com/cockroachdb/cockroach/roachpb" ) -// InternalStoresServer implements the storage parts of the -// roachpb.InternalStoresServer -// interface. -type InternalStoresServer struct { +// Server implements the storage parts of the StoresServer interface. +type Server struct { descriptor *roachpb.NodeDescriptor stores *Stores } -var _ roachpb.InternalStoresServer = InternalStoresServer{} +var _ StoresServer = Server{} -// MakeInternalStoresServer returns a new instance of InternalStoresServer. -func MakeInternalStoresServer( +// MakeServer returns a new instance of Server. +func MakeServer( descriptor *roachpb.NodeDescriptor, stores *Stores, -) InternalStoresServer { - return InternalStoresServer{descriptor, stores} +) Server { + return Server{descriptor, stores} } -func (is InternalStoresServer) execStoreCommand( - h roachpb.StoreRequestHeader, f func(*Store) error, +func (is Server) execStoreCommand( + h StoreRequestHeader, f func(*Store) error, ) error { if h.NodeID != is.descriptor.NodeID { return errors.Errorf("request for NodeID %d cannot be served by NodeID %d", @@ -53,11 +52,11 @@ func (is InternalStoresServer) execStoreCommand( return f(store) } -// PollFrozen implements the roachpb.InternalStoresServer interface. -func (is InternalStoresServer) PollFrozen( - ctx context.Context, args *roachpb.PollFrozenRequest, -) (*roachpb.PollFrozenResponse, error) { - resp := &roachpb.PollFrozenResponse{} +// PollFrozen implements the StoresServer interface. +func (is Server) PollFrozen( + ctx context.Context, args *PollFrozenRequest, +) (*PollFrozenResponse, error) { + resp := &PollFrozenResponse{} err := is.execStoreCommand(args.StoreRequestHeader, func(s *Store) error { resp.Results = s.FrozenStatus(args.CollectFrozen) @@ -66,11 +65,11 @@ func (is InternalStoresServer) PollFrozen( return resp, err } -// Reserve implements the roachpb.InternalStoresServer interface. -func (is InternalStoresServer) Reserve( - ctx context.Context, req *roachpb.ReservationRequest, -) (*roachpb.ReservationResponse, error) { - resp := &roachpb.ReservationResponse{} +// Reserve implements the StoresServer interface. +func (is Server) Reserve( + ctx context.Context, req *ReservationRequest, +) (*ReservationResponse, error) { + resp := &ReservationResponse{} err := is.execStoreCommand(req.StoreRequestHeader, func(s *Store) error { *resp = s.Reserve(ctx, *req)