From c445e52a24e0b203fc5c08e68bc54cb8a854a050 Mon Sep 17 00:00:00 2001 From: Michael Berlin Date: Wed, 8 Jun 2016 01:09:46 -0700 Subject: [PATCH] proto: Add a throttler service. --- go/vt/proto/throttlerdata/throttlerdata.pb.go | 66 ++++++++++ .../throttlerservice/throttlerservice.pb.go | 119 ++++++++++++++++++ proto/throttlerdata.proto | 16 +++ proto/throttlerservice.proto | 16 +++ py/vtproto/throttlerdata_pb2.py | 112 +++++++++++++++++ py/vtproto/throttlerservice_pb2.py | 81 ++++++++++++ 6 files changed, 410 insertions(+) create mode 100644 go/vt/proto/throttlerdata/throttlerdata.pb.go create mode 100644 go/vt/proto/throttlerservice/throttlerservice.pb.go create mode 100644 proto/throttlerdata.proto create mode 100644 proto/throttlerservice.proto create mode 100644 py/vtproto/throttlerdata_pb2.py create mode 100644 py/vtproto/throttlerservice_pb2.py diff --git a/go/vt/proto/throttlerdata/throttlerdata.pb.go b/go/vt/proto/throttlerdata/throttlerdata.pb.go new file mode 100644 index 0000000000..5c49e8d993 --- /dev/null +++ b/go/vt/proto/throttlerdata/throttlerdata.pb.go @@ -0,0 +1,66 @@ +// Code generated by protoc-gen-go. +// source: throttlerdata.proto +// DO NOT EDIT! + +/* +Package throttlerdata is a generated protocol buffer package. + +It is generated from these files: + throttlerdata.proto + +It has these top-level messages: + SetMaxRateRequest + SetMaxRateResponse +*/ +package throttlerdata + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" + +// 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. +const _ = proto.ProtoPackageIsVersion1 + +// SetMaxRateRequest is the payload for the SetMaxRate RPC. +type SetMaxRateRequest struct { + Rate int64 `protobuf:"varint,1,opt,name=rate" json:"rate,omitempty"` +} + +func (m *SetMaxRateRequest) Reset() { *m = SetMaxRateRequest{} } +func (m *SetMaxRateRequest) String() string { return proto.CompactTextString(m) } +func (*SetMaxRateRequest) ProtoMessage() {} +func (*SetMaxRateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +// SetMaxRateResponse is returned by the SetMaxRate RPC. +type SetMaxRateResponse struct { + // names is the list of throttler names which were updated. + Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` +} + +func (m *SetMaxRateResponse) Reset() { *m = SetMaxRateResponse{} } +func (m *SetMaxRateResponse) String() string { return proto.CompactTextString(m) } +func (*SetMaxRateResponse) ProtoMessage() {} +func (*SetMaxRateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +func init() { + proto.RegisterType((*SetMaxRateRequest)(nil), "throttlerdata.SetMaxRateRequest") + proto.RegisterType((*SetMaxRateResponse)(nil), "throttlerdata.SetMaxRateResponse") +} + +var fileDescriptor0 = []byte{ + // 118 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x12, 0x2e, 0xc9, 0x28, 0xca, + 0x2f, 0x29, 0xc9, 0x49, 0x2d, 0x4a, 0x49, 0x2c, 0x49, 0xd4, 0x2b, 0x00, 0x72, 0xf2, 0x85, 0x78, + 0x51, 0x04, 0x95, 0xd4, 0xb9, 0x04, 0x83, 0x53, 0x4b, 0x7c, 0x13, 0x2b, 0x82, 0x12, 0x4b, 0x52, + 0x83, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0x84, 0xb8, 0x58, 0x8a, 0x80, 0x5c, 0x09, 0x46, + 0x05, 0x46, 0x0d, 0xe6, 0x20, 0x30, 0x5b, 0x49, 0x8b, 0x4b, 0x08, 0x59, 0x61, 0x71, 0x41, 0x7e, + 0x5e, 0x71, 0xaa, 0x90, 0x08, 0x17, 0x6b, 0x5e, 0x62, 0x6e, 0x6a, 0x31, 0x50, 0x29, 0xb3, 0x06, + 0x67, 0x10, 0x84, 0x93, 0xc4, 0x06, 0xb6, 0xca, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xc5, 0x18, + 0x3f, 0xb5, 0x81, 0x00, 0x00, 0x00, +} diff --git a/go/vt/proto/throttlerservice/throttlerservice.pb.go b/go/vt/proto/throttlerservice/throttlerservice.pb.go new file mode 100644 index 0000000000..a7d5ee26ce --- /dev/null +++ b/go/vt/proto/throttlerservice/throttlerservice.pb.go @@ -0,0 +1,119 @@ +// Code generated by protoc-gen-go. +// source: throttlerservice.proto +// DO NOT EDIT! + +/* +Package throttlerservice is a generated protocol buffer package. + +It is generated from these files: + throttlerservice.proto + +It has these top-level messages: +*/ +package throttlerservice + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import throttlerdata "github.com/youtube/vitess/go/vt/proto/throttlerdata" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// 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. +const _ = proto.ProtoPackageIsVersion1 + +// 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.SupportPackageIsVersion2 + +// Client API for Throttler service + +type ThrottlerClient interface { + // SetMaxRate allows to change the current max rate for all throttlers + // of the process. + SetMaxRate(ctx context.Context, in *throttlerdata.SetMaxRateRequest, opts ...grpc.CallOption) (*throttlerdata.SetMaxRateResponse, error) +} + +type throttlerClient struct { + cc *grpc.ClientConn +} + +func NewThrottlerClient(cc *grpc.ClientConn) ThrottlerClient { + return &throttlerClient{cc} +} + +func (c *throttlerClient) SetMaxRate(ctx context.Context, in *throttlerdata.SetMaxRateRequest, opts ...grpc.CallOption) (*throttlerdata.SetMaxRateResponse, error) { + out := new(throttlerdata.SetMaxRateResponse) + err := grpc.Invoke(ctx, "/throttlerservice.Throttler/SetMaxRate", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Throttler service + +type ThrottlerServer interface { + // SetMaxRate allows to change the current max rate for all throttlers + // of the process. + SetMaxRate(context.Context, *throttlerdata.SetMaxRateRequest) (*throttlerdata.SetMaxRateResponse, error) +} + +func RegisterThrottlerServer(s *grpc.Server, srv ThrottlerServer) { + s.RegisterService(&_Throttler_serviceDesc, srv) +} + +func _Throttler_SetMaxRate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(throttlerdata.SetMaxRateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ThrottlerServer).SetMaxRate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/throttlerservice.Throttler/SetMaxRate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ThrottlerServer).SetMaxRate(ctx, req.(*throttlerdata.SetMaxRateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Throttler_serviceDesc = grpc.ServiceDesc{ + ServiceName: "throttlerservice.Throttler", + HandlerType: (*ThrottlerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SetMaxRate", + Handler: _Throttler_SetMaxRate_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, +} + +var fileDescriptor0 = []byte{ + // 113 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x12, 0x2b, 0xc9, 0x28, 0xca, + 0x2f, 0x29, 0xc9, 0x49, 0x2d, 0x2a, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x00, 0xf2, + 0xf3, 0x85, 0x04, 0xd0, 0xc5, 0xa5, 0x84, 0xe1, 0x22, 0x29, 0x89, 0x25, 0x89, 0x10, 0x65, 0x46, + 0x09, 0x5c, 0x9c, 0x21, 0x30, 0x61, 0xa1, 0x60, 0x2e, 0xae, 0xe0, 0xd4, 0x12, 0xdf, 0xc4, 0x8a, + 0xa0, 0xc4, 0x92, 0x54, 0x21, 0x05, 0x3d, 0x54, 0x0d, 0x08, 0xa9, 0xa0, 0xd4, 0xc2, 0xd2, 0xd4, + 0xe2, 0x12, 0x29, 0x45, 0x3c, 0x2a, 0x8a, 0x0b, 0xf2, 0xf3, 0x8a, 0x53, 0x95, 0x18, 0x92, 0xd8, + 0xc0, 0x16, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xb9, 0xc8, 0x95, 0xa9, 0x00, 0x00, + 0x00, +} diff --git a/proto/throttlerdata.proto b/proto/throttlerdata.proto new file mode 100644 index 0000000000..9991b416fc --- /dev/null +++ b/proto/throttlerdata.proto @@ -0,0 +1,16 @@ +// Data structures for the throttler RPC interface. + +syntax = "proto3"; + +package throttlerdata; + +// SetMaxRateRequest is the payload for the SetMaxRate RPC. +message SetMaxRateRequest { + int64 rate = 1; +} + +// SetMaxRateResponse is returned by the SetMaxRate RPC. +message SetMaxRateResponse { + // names is the list of throttler names which were updated. + repeated string names = 1; +} diff --git a/proto/throttlerservice.proto b/proto/throttlerservice.proto new file mode 100644 index 0000000000..4d534de39b --- /dev/null +++ b/proto/throttlerservice.proto @@ -0,0 +1,16 @@ +// RPC interface for the internal resharding throttler (go/vt/throttler) which +// is used by the resharding clone process (vtworker) and filtered replication +// (vttablet). + +syntax = "proto3"; + +package throttlerservice; + +import "throttlerdata.proto"; + +// Throttler defines the throttler RPC calls. +service Throttler { + // SetMaxRate allows to change the current max rate for all throttlers + // of the process. + rpc SetMaxRate (throttlerdata.SetMaxRateRequest) returns (throttlerdata.SetMaxRateResponse) {}; +} diff --git a/py/vtproto/throttlerdata_pb2.py b/py/vtproto/throttlerdata_pb2.py new file mode 100644 index 0000000000..8e3dc1a25a --- /dev/null +++ b/py/vtproto/throttlerdata_pb2.py @@ -0,0 +1,112 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: throttlerdata.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='throttlerdata.proto', + package='throttlerdata', + syntax='proto3', + serialized_pb=_b('\n\x13throttlerdata.proto\x12\rthrottlerdata\"!\n\x11SetMaxRateRequest\x12\x0c\n\x04rate\x18\x01 \x01(\x03\"#\n\x12SetMaxRateResponse\x12\r\n\x05names\x18\x01 \x03(\tb\x06proto3') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_SETMAXRATEREQUEST = _descriptor.Descriptor( + name='SetMaxRateRequest', + full_name='throttlerdata.SetMaxRateRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='rate', full_name='throttlerdata.SetMaxRateRequest.rate', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=38, + serialized_end=71, +) + + +_SETMAXRATERESPONSE = _descriptor.Descriptor( + name='SetMaxRateResponse', + full_name='throttlerdata.SetMaxRateResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='names', full_name='throttlerdata.SetMaxRateResponse.names', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=73, + serialized_end=108, +) + +DESCRIPTOR.message_types_by_name['SetMaxRateRequest'] = _SETMAXRATEREQUEST +DESCRIPTOR.message_types_by_name['SetMaxRateResponse'] = _SETMAXRATERESPONSE + +SetMaxRateRequest = _reflection.GeneratedProtocolMessageType('SetMaxRateRequest', (_message.Message,), dict( + DESCRIPTOR = _SETMAXRATEREQUEST, + __module__ = 'throttlerdata_pb2' + # @@protoc_insertion_point(class_scope:throttlerdata.SetMaxRateRequest) + )) +_sym_db.RegisterMessage(SetMaxRateRequest) + +SetMaxRateResponse = _reflection.GeneratedProtocolMessageType('SetMaxRateResponse', (_message.Message,), dict( + DESCRIPTOR = _SETMAXRATERESPONSE, + __module__ = 'throttlerdata_pb2' + # @@protoc_insertion_point(class_scope:throttlerdata.SetMaxRateResponse) + )) +_sym_db.RegisterMessage(SetMaxRateResponse) + + +import abc +from grpc.beta import implementations as beta_implementations +from grpc.framework.common import cardinality +from grpc.framework.interfaces.face import utilities as face_utilities +# @@protoc_insertion_point(module_scope) diff --git a/py/vtproto/throttlerservice_pb2.py b/py/vtproto/throttlerservice_pb2.py new file mode 100644 index 0000000000..6f599bc460 --- /dev/null +++ b/py/vtproto/throttlerservice_pb2.py @@ -0,0 +1,81 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: throttlerservice.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import throttlerdata_pb2 as throttlerdata__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='throttlerservice.proto', + package='throttlerservice', + syntax='proto3', + serialized_pb=_b('\n\x16throttlerservice.proto\x12\x10throttlerservice\x1a\x13throttlerdata.proto2`\n\tThrottler\x12S\n\nSetMaxRate\x12 .throttlerdata.SetMaxRateRequest\x1a!.throttlerdata.SetMaxRateResponse\"\x00\x62\x06proto3') + , + dependencies=[throttlerdata__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + + +import abc +from grpc.beta import implementations as beta_implementations +from grpc.framework.common import cardinality +from grpc.framework.interfaces.face import utilities as face_utilities + +class BetaThrottlerServicer(object): + """""" + __metaclass__ = abc.ABCMeta + @abc.abstractmethod + def SetMaxRate(self, request, context): + raise NotImplementedError() + +class BetaThrottlerStub(object): + """The interface to which stubs will conform.""" + __metaclass__ = abc.ABCMeta + @abc.abstractmethod + def SetMaxRate(self, request, timeout): + raise NotImplementedError() + SetMaxRate.future = None + +def beta_create_Throttler_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None): + import throttlerdata_pb2 + import throttlerdata_pb2 + request_deserializers = { + ('throttlerservice.Throttler', 'SetMaxRate'): throttlerdata_pb2.SetMaxRateRequest.FromString, + } + response_serializers = { + ('throttlerservice.Throttler', 'SetMaxRate'): throttlerdata_pb2.SetMaxRateResponse.SerializeToString, + } + method_implementations = { + ('throttlerservice.Throttler', 'SetMaxRate'): face_utilities.unary_unary_inline(servicer.SetMaxRate), + } + server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout) + return beta_implementations.server(method_implementations, options=server_options) + +def beta_create_Throttler_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None): + import throttlerdata_pb2 + import throttlerdata_pb2 + request_serializers = { + ('throttlerservice.Throttler', 'SetMaxRate'): throttlerdata_pb2.SetMaxRateRequest.SerializeToString, + } + response_deserializers = { + ('throttlerservice.Throttler', 'SetMaxRate'): throttlerdata_pb2.SetMaxRateResponse.FromString, + } + cardinalities = { + 'SetMaxRate': cardinality.Cardinality.UNARY_UNARY, + } + stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size) + return beta_implementations.dynamic_stub(channel, 'throttlerservice.Throttler', cardinalities, options=stub_options) +# @@protoc_insertion_point(module_scope)