tabletmanager: ReloadSchema RPC can wait for replication position.

This makes it possible to issue a command that will reload schema after
a given DDL has propagated through replication.
This commit is contained in:
Anthony Yeh 2016-06-15 19:46:37 -07:00
Родитель b4f4f8ddc9
Коммит c71d3df495
17 изменённых файлов: 314 добавлений и 287 удалений

Просмотреть файл

@ -620,14 +620,13 @@ func (itmc *internalTabletManagerClient) IgnoreHealthError(ctx context.Context,
})
}
func (itmc *internalTabletManagerClient) ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet) error {
func (itmc *internalTabletManagerClient) ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet, waitPosition string) error {
t, ok := tabletMap[tablet.Alias.Uid]
if !ok {
return fmt.Errorf("tmclient: cannot find tablet %v", tablet.Alias.Uid)
}
return t.agent.RPCWrapLockAction(ctx, tabletmanager.TabletActionReloadSchema, nil, nil, true, func() error {
t.agent.ReloadSchema(ctx)
return nil
return t.agent.ReloadSchema(ctx, waitPosition)
})
}

Просмотреть файл

@ -477,6 +477,10 @@ func (*IgnoreHealthErrorResponse) ProtoMessage() {}
func (*IgnoreHealthErrorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
type ReloadSchemaRequest struct {
// wait_position allows scheduling a schema reload to occur after a
// given DDL has replicated to this slave, by specifying a replication
// position to wait for. Leave empty to trigger the reload immediately.
WaitPosition string `protobuf:"bytes,1,opt,name=wait_position,json=waitPosition" json:"wait_position,omitempty"`
}
func (m *ReloadSchemaRequest) Reset() { *m = ReloadSchemaRequest{} }
@ -1222,129 +1226,130 @@ func init() {
}
var fileDescriptor0 = []byte{
// 1974 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x58, 0xdd, 0x6f, 0x1b, 0xc7,
0x11, 0x07, 0x25, 0x59, 0x96, 0x87, 0x1f, 0x22, 0x4f, 0xb2, 0x44, 0x2b, 0x80, 0x2d, 0x9f, 0x93,
0xc6, 0x75, 0x51, 0xa5, 0x66, 0xd2, 0x22, 0x68, 0x90, 0xa2, 0xb2, 0x24, 0xc7, 0x4e, 0x9c, 0x58,
0x39, 0x7f, 0x15, 0x7d, 0x39, 0x2c, 0x79, 0x2b, 0xf2, 0xe0, 0xe3, 0xdd, 0x65, 0x77, 0x8f, 0x16,
0x81, 0xa2, 0xff, 0x45, 0xdf, 0xfa, 0x56, 0xa0, 0x7d, 0xef, 0x1f, 0xd3, 0xa2, 0x7f, 0x49, 0x1f,
0xfa, 0xd2, 0xd9, 0x2f, 0x72, 0x8f, 0xa4, 0x6c, 0xca, 0x48, 0x81, 0xbe, 0x10, 0x3b, 0xbf, 0x9d,
0x9d, 0xaf, 0x9d, 0x9d, 0x99, 0x23, 0xec, 0x0a, 0xd2, 0x4d, 0xa8, 0x18, 0x92, 0x94, 0xf4, 0x29,
0x8b, 0x88, 0x20, 0x07, 0x39, 0xcb, 0x44, 0xe6, 0xb5, 0xe6, 0x36, 0xf6, 0xaa, 0x3f, 0x14, 0x94,
0x8d, 0xf5, 0xfe, 0x5e, 0x43, 0x64, 0x79, 0x36, 0xe5, 0xdf, 0xbb, 0xce, 0x68, 0x9e, 0xc4, 0x3d,
0x22, 0xe2, 0x2c, 0x75, 0xe0, 0x7a, 0x92, 0xf5, 0x0b, 0x11, 0x27, 0x9a, 0xf4, 0xff, 0x55, 0x81,
0xcd, 0xe7, 0x52, 0xf0, 0x31, 0x3d, 0x8b, 0xd3, 0x58, 0x32, 0x7b, 0x1e, 0xac, 0xa5, 0x64, 0x48,
0xdb, 0x95, 0xfd, 0xca, 0xdd, 0x6b, 0x81, 0x5a, 0x7b, 0x3b, 0xb0, 0xce, 0x7b, 0x03, 0x3a, 0x24,
0xed, 0x15, 0x85, 0x1a, 0xca, 0x6b, 0xc3, 0xd5, 0x5e, 0x96, 0x14, 0xc3, 0x94, 0xb7, 0x57, 0xf7,
0x57, 0x71, 0xc3, 0x92, 0xde, 0x01, 0x6c, 0xe5, 0x2c, 0x1e, 0x12, 0x36, 0x0e, 0x5f, 0xd3, 0x71,
0x68, 0xb9, 0xd6, 0x14, 0x57, 0xcb, 0x6c, 0x7d, 0x43, 0xc7, 0x47, 0x86, 0x1f, 0xb5, 0x8a, 0x71,
0x4e, 0xdb, 0x57, 0xb4, 0x56, 0xb9, 0xf6, 0x6e, 0x41, 0x55, 0x9a, 0x1e, 0x26, 0x34, 0xed, 0x8b,
0x41, 0x7b, 0x1d, 0xb7, 0xd6, 0x02, 0x90, 0xd0, 0x13, 0x85, 0x78, 0x1f, 0xc0, 0x35, 0x96, 0xbd,
0x41, 0xe1, 0x45, 0x2a, 0xda, 0x57, 0xd5, 0xf6, 0x06, 0x02, 0x47, 0x92, 0xf6, 0xff, 0x5a, 0x81,
0xe6, 0x33, 0x65, 0xa6, 0xe3, 0xdc, 0xc7, 0xb0, 0x29, 0xcf, 0x77, 0x09, 0xa7, 0xa1, 0xf1, 0x48,
0xfb, 0xd9, 0xb0, 0xb0, 0x3e, 0xe2, 0x3d, 0x05, 0x1d, 0xf1, 0x30, 0x9a, 0x1c, 0xe6, 0xe8, 0xfc,
0xea, 0xdd, 0x6a, 0xc7, 0x3f, 0x98, 0xbf, 0xa4, 0x99, 0x20, 0x06, 0x4d, 0x51, 0x06, 0xb8, 0x0c,
0xd5, 0x88, 0x32, 0x8e, 0x6b, 0x0c, 0x95, 0xd4, 0x68, 0x49, 0x69, 0xa8, 0xa7, 0xb5, 0x1e, 0x0d,
0x48, 0xda, 0xa7, 0x01, 0xe5, 0x45, 0x22, 0xbc, 0x47, 0x50, 0xef, 0xd2, 0xb3, 0x8c, 0x95, 0x0c,
0xad, 0x76, 0xee, 0x2c, 0xd0, 0x3e, 0xeb, 0x66, 0x50, 0xd3, 0x27, 0x8d, 0x2f, 0x0f, 0xa1, 0x46,
0xce, 0x04, 0x65, 0xa1, 0x73, 0x87, 0x4b, 0x0a, 0xaa, 0xaa, 0x83, 0x1a, 0xf6, 0xff, 0x5d, 0x81,
0xc6, 0x0b, 0x4e, 0xd9, 0x29, 0x65, 0xc3, 0x98, 0x73, 0x93, 0x2c, 0x83, 0x8c, 0x0b, 0x9b, 0x2c,
0x72, 0x2d, 0xb1, 0x02, 0xb9, 0x4c, 0xaa, 0xa8, 0xb5, 0xf7, 0x33, 0x68, 0xe5, 0x84, 0xf3, 0x37,
0x19, 0x8b, 0x42, 0x14, 0xd6, 0x7b, 0xcd, 0x8b, 0xa1, 0x8a, 0xc3, 0x5a, 0xd0, 0xb4, 0x1b, 0x47,
0x06, 0xf7, 0xbe, 0x07, 0xc0, 0x04, 0x19, 0xc5, 0x09, 0xed, 0x53, 0x9d, 0x32, 0xd5, 0xce, 0xfd,
0x05, 0xd6, 0x96, 0x6d, 0x39, 0x38, 0x9d, 0x9c, 0x39, 0x49, 0x05, 0x1b, 0x07, 0x8e, 0x90, 0xbd,
0x2f, 0x61, 0x73, 0x66, 0xdb, 0x6b, 0xc2, 0x2a, 0x66, 0xa6, 0xb1, 0x5c, 0x2e, 0xbd, 0x6d, 0xb8,
0x32, 0x22, 0x49, 0x41, 0x8d, 0xe5, 0x9a, 0xf8, 0xf5, 0xca, 0xe7, 0x15, 0xff, 0x1f, 0x15, 0xa8,
0x1d, 0x77, 0xdf, 0xe1, 0x77, 0x03, 0x56, 0xa2, 0xae, 0x39, 0x8b, 0xab, 0x49, 0x1c, 0x56, 0x9d,
0x38, 0x3c, 0x5d, 0xe0, 0xda, 0x27, 0x0b, 0x5c, 0x73, 0x95, 0xfd, 0x2f, 0x1d, 0xfb, 0x4b, 0x05,
0xaa, 0x53, 0x4d, 0xdc, 0x7b, 0x02, 0x4d, 0x69, 0x67, 0x98, 0x4f, 0x31, 0x14, 0x24, 0xad, 0xbc,
0xfd, 0xce, 0x0b, 0x08, 0x36, 0x8b, 0x12, 0xcd, 0x31, 0xf1, 0x1a, 0x51, 0xb7, 0x24, 0x4b, 0xbf,
0xa0, 0x5b, 0xef, 0xf0, 0x38, 0xa8, 0x47, 0x0e, 0xc5, 0xfd, 0x2f, 0xa0, 0xfa, 0x20, 0xc9, 0x4f,
0x33, 0xae, 0x1f, 0x31, 0x3a, 0x58, 0xc4, 0x91, 0x72, 0xb0, 0x1e, 0xc8, 0xa5, 0xb7, 0x07, 0x1b,
0xb9, 0xd9, 0x35, 0x3e, 0x4e, 0x68, 0xff, 0x63, 0xf4, 0x30, 0x4e, 0xfb, 0x01, 0xc5, 0x72, 0x89,
0xb7, 0x84, 0xef, 0x30, 0x27, 0xe3, 0x24, 0x23, 0x91, 0x89, 0x90, 0x25, 0xfd, 0xbb, 0x50, 0xd3,
0x8c, 0x3c, 0x47, 0xa5, 0xf4, 0x2d, 0x9c, 0xf7, 0xa0, 0xf6, 0x2c, 0xa1, 0x34, 0xb7, 0x32, 0x51,
0x7d, 0x54, 0x30, 0x55, 0x6b, 0x15, 0xeb, 0x6a, 0x30, 0xa1, 0xfd, 0x4d, 0xa8, 0x1b, 0x5e, 0x2d,
0xd6, 0xff, 0x27, 0x3e, 0xf7, 0x93, 0x73, 0xda, 0x2b, 0x04, 0x7d, 0x94, 0x65, 0xaf, 0xad, 0x8c,
0x45, 0x65, 0xf7, 0x26, 0x66, 0x0b, 0x61, 0xb8, 0xc2, 0x37, 0xa8, 0x63, 0x77, 0x2d, 0x70, 0x10,
0xef, 0x14, 0xae, 0xd1, 0x73, 0xc1, 0x48, 0x48, 0xd3, 0x91, 0x2a, 0xc0, 0xd5, 0xce, 0xa7, 0x0b,
0x42, 0x3b, 0xaf, 0x0d, 0x21, 0x3c, 0x76, 0x92, 0x8e, 0x74, 0x42, 0x6d, 0x50, 0x43, 0xee, 0x7d,
0x01, 0xf5, 0xd2, 0xd6, 0xa5, 0x92, 0xe9, 0x0c, 0xb6, 0x4a, 0xaa, 0x4c, 0x1c, 0xb1, 0x8c, 0xd3,
0xf3, 0x58, 0x84, 0x5c, 0x10, 0x51, 0x70, 0x13, 0x20, 0x90, 0xd0, 0x33, 0x85, 0xa8, 0xee, 0x22,
0xa2, 0xac, 0x10, 0x93, 0xee, 0xa2, 0x28, 0x83, 0x53, 0x66, 0x9f, 0x90, 0xa1, 0xfc, 0x11, 0x34,
0xbf, 0xa2, 0x42, 0x17, 0x25, 0x1b, 0x3e, 0xe4, 0x55, 0x8e, 0xeb, 0x74, 0x45, 0x5e, 0x4d, 0x79,
0x77, 0xa0, 0x1e, 0xa7, 0xbd, 0xa4, 0x88, 0x68, 0x38, 0x8a, 0xe9, 0x1b, 0xae, 0x54, 0x6c, 0x04,
0x35, 0x03, 0xbe, 0x94, 0x98, 0xf7, 0x11, 0x34, 0xe8, 0xb9, 0x66, 0x32, 0x42, 0x74, 0x37, 0xab,
0x1b, 0x54, 0x55, 0x77, 0xee, 0x53, 0x68, 0x39, 0x7a, 0x8d, 0x77, 0xa7, 0xd0, 0xd2, 0x65, 0xd5,
0xe9, 0x14, 0x97, 0x29, 0xd5, 0x4d, 0x3e, 0x83, 0xf8, 0xbb, 0x70, 0x1d, 0xd5, 0x38, 0xf9, 0x6f,
0x7c, 0xf4, 0x7f, 0x0f, 0x3b, 0xb3, 0x1b, 0xc6, 0x88, 0xdf, 0x42, 0xb5, 0xfc, 0x62, 0xa5, 0xfa,
0x9b, 0x0b, 0xd4, 0xbb, 0x87, 0xdd, 0x23, 0xfe, 0x36, 0xf6, 0x20, 0x2a, 0x02, 0x4a, 0xa2, 0xa7,
0x69, 0x32, 0xb6, 0x1a, 0xaf, 0xc3, 0x56, 0x09, 0x35, 0x29, 0x3c, 0x85, 0x5f, 0xb1, 0x58, 0x50,
0xcb, 0xbd, 0x03, 0xdb, 0x65, 0xd8, 0xb0, 0x7f, 0x0d, 0x2d, 0xdd, 0xd9, 0x9e, 0x63, 0x57, 0xb7,
0x17, 0xf6, 0x4b, 0xa8, 0x6a, 0xf3, 0x42, 0xd5, 0xf7, 0xa5, 0xc9, 0x8d, 0xce, 0xf6, 0xc1, 0x64,
0x8c, 0x51, 0x31, 0x17, 0xea, 0x04, 0x88, 0xc9, 0x5a, 0xda, 0xe9, 0xca, 0x9a, 0x1a, 0x14, 0xd0,
0x33, 0x46, 0xf9, 0x40, 0xa6, 0x94, 0x6b, 0x50, 0x19, 0x36, 0xec, 0x18, 0xe1, 0xa0, 0x48, 0x1f,
0x51, 0x92, 0x88, 0x81, 0xea, 0x3a, 0xf6, 0x40, 0x1b, 0x76, 0x66, 0x37, 0xcc, 0x91, 0xcf, 0xa0,
0xfd, 0xb8, 0x9f, 0x62, 0x4f, 0xd5, 0x9b, 0x27, 0x8c, 0x65, 0xac, 0x54, 0x52, 0x04, 0xbe, 0xc8,
0x74, 0x5a, 0x28, 0x14, 0xe9, 0x7f, 0x00, 0x37, 0x16, 0x9c, 0x72, 0x8d, 0x96, 0xf5, 0xa4, 0x94,
0xc9, 0xda, 0x68, 0x17, 0x36, 0xec, 0x1d, 0xd8, 0x39, 0x65, 0xf4, 0x2c, 0x89, 0xfb, 0x83, 0x99,
0xdc, 0x97, 0x53, 0x98, 0x8a, 0x89, 0x4d, 0x7e, 0x4b, 0xfa, 0x7d, 0xd8, 0x9d, 0x3b, 0x63, 0x52,
0xe6, 0x09, 0x34, 0x34, 0x57, 0xc8, 0xd4, 0xbc, 0x61, 0xeb, 0xfc, 0x47, 0x17, 0x26, 0xad, 0x3b,
0x9d, 0x04, 0xf5, 0x9e, 0x43, 0x71, 0xff, 0x3f, 0x58, 0xd4, 0x0e, 0xf3, 0x3c, 0x19, 0x97, 0x2d,
0xc3, 0xea, 0xc1, 0x7f, 0x48, 0x6c, 0xf5, 0xc0, 0xa5, 0xac, 0x1e, 0x38, 0x99, 0xf4, 0xa8, 0x79,
0x87, 0x9a, 0x90, 0xe3, 0x01, 0x49, 0x12, 0x1c, 0xe5, 0x9c, 0xa9, 0x55, 0x3d, 0xfa, 0x8d, 0xa0,
0xa9, 0x36, 0x82, 0x29, 0x3e, 0x3f, 0x18, 0xad, 0xfd, 0x58, 0x83, 0xd1, 0x95, 0xf7, 0x1c, 0x8c,
0xfe, 0x56, 0x81, 0xad, 0x92, 0xf7, 0x26, 0xc6, 0xff, 0x7f, 0x23, 0xdc, 0xdf, 0x2b, 0xd0, 0x36,
0x35, 0xfa, 0x21, 0x15, 0xbd, 0xc1, 0x21, 0x3f, 0xee, 0x4e, 0x6e, 0x0b, 0xef, 0x46, 0x7d, 0x52,
0x98, 0xfb, 0xd2, 0x84, 0xb7, 0x0b, 0x57, 0xb1, 0x89, 0xab, 0xde, 0x64, 0xca, 0x73, 0xd4, 0xfd,
0x4e, 0x76, 0xa7, 0x1b, 0xb0, 0x31, 0x24, 0xe7, 0x21, 0x0e, 0xdc, 0xdc, 0x8c, 0x72, 0x57, 0x91,
0x0e, 0x90, 0x54, 0x63, 0x76, 0xcc, 0xd5, 0xfc, 0xdc, 0x8d, 0x53, 0xfc, 0xe6, 0xe0, 0xea, 0x92,
0x36, 0x70, 0xcc, 0xd6, 0xf0, 0x03, 0x8d, 0xca, 0xf2, 0xcc, 0x54, 0xb2, 0xbb, 0x57, 0x80, 0xe5,
0x99, 0x39, 0x2f, 0xc0, 0xff, 0x0a, 0x6e, 0x2c, 0xb0, 0xd9, 0xc4, 0xf8, 0x1e, 0xac, 0xeb, 0x04,
0x36, 0xc1, 0xf5, 0x0e, 0xf4, 0x67, 0xd1, 0xf7, 0xf2, 0xd7, 0x24, 0xab, 0xe1, 0xf0, 0xbf, 0x99,
0x75, 0x1e, 0x2f, 0xed, 0xed, 0xce, 0xbb, 0x3e, 0xae, 0x94, 0x7c, 0x9c, 0xb7, 0x4a, 0x09, 0x7b,
0x0f, 0xab, 0x64, 0xe9, 0x4d, 0xc8, 0x88, 0xea, 0x6e, 0x68, 0xcb, 0xc0, 0x43, 0xac, 0xb1, 0x2e,
0x6a, 0x04, 0x7f, 0x22, 0x7b, 0xe2, 0xa4, 0x8f, 0x56, 0x3b, 0xbb, 0x07, 0xb3, 0x1f, 0x7a, 0xe6,
0x80, 0x61, 0x93, 0xb5, 0xee, 0x5b, 0xc2, 0x31, 0x03, 0xec, 0xf8, 0x64, 0x15, 0x7c, 0x06, 0x3b,
0xb3, 0x1b, 0x46, 0x87, 0x3b, 0x4d, 0x55, 0x66, 0xa6, 0x29, 0x0f, 0x3f, 0xaa, 0xb0, 0x46, 0x2b,
0xd3, 0xac, 0xa4, 0x2d, 0x68, 0x39, 0x98, 0x29, 0x57, 0xbf, 0x83, 0xdd, 0x09, 0xf8, 0x2d, 0xe6,
0xe2, 0xb0, 0x18, 0x3a, 0xe3, 0xd2, 0x45, 0xf2, 0xbd, 0xdb, 0x50, 0x7b, 0x43, 0x70, 0x58, 0x10,
0xf1, 0x90, 0xda, 0x89, 0x60, 0x35, 0xa8, 0x4a, 0xec, 0xb9, 0x86, 0xfc, 0x5f, 0x41, 0x7b, 0x5e,
0xf2, 0x12, 0xa6, 0x2b, 0x33, 0x09, 0x13, 0x25, 0xdb, 0x65, 0xf0, 0x1d, 0xd0, 0x18, 0x7f, 0x0c,
0xb7, 0x75, 0xff, 0xc1, 0x61, 0x08, 0xeb, 0x38, 0x96, 0x20, 0xbc, 0x34, 0x1c, 0xbc, 0x68, 0x2a,
0x68, 0x64, 0xdd, 0x50, 0x73, 0x8d, 0xde, 0x0e, 0x63, 0x3b, 0x23, 0x82, 0x85, 0x1e, 0x47, 0xfe,
0x87, 0xe0, 0xbf, 0x4d, 0x8a, 0xd1, 0xb5, 0x0f, 0x37, 0x67, 0xb9, 0x4e, 0x12, 0xda, 0x9b, 0x2a,
0xf2, 0x6f, 0xc3, 0xad, 0x0b, 0x39, 0x8c, 0x10, 0x4f, 0x8f, 0x44, 0xd2, 0x89, 0x49, 0x06, 0xfd,
0x54, 0x8f, 0x2b, 0x06, 0x33, 0x01, 0xc2, 0x34, 0x27, 0x51, 0xc4, 0x6c, 0xa7, 0xd0, 0x84, 0xff,
0x47, 0xd8, 0x79, 0x85, 0x11, 0x76, 0x86, 0x6c, 0xeb, 0xe4, 0x21, 0xd4, 0xba, 0x49, 0x1e, 0x96,
0x82, 0xba, 0x78, 0xb4, 0x70, 0x0f, 0x57, 0xbb, 0xce, 0xb8, 0xbe, 0xc4, 0x95, 0xde, 0x80, 0xdd,
0x39, 0xfd, 0xc6, 0xb3, 0x26, 0x34, 0xe4, 0x6d, 0xe3, 0x96, 0xf5, 0xeb, 0x25, 0x6c, 0x4e, 0x10,
0xe3, 0xd5, 0x11, 0x16, 0x5a, 0xc7, 0x4a, 0xdb, 0xcb, 0xde, 0x65, 0x66, 0xcd, 0x31, 0x93, 0xfb,
0x2d, 0x29, 0x17, 0x53, 0xc1, 0x51, 0xa5, 0xb2, 0xdd, 0x42, 0xc6, 0xa0, 0x3f, 0x80, 0x87, 0x33,
0x02, 0x22, 0x2f, 0x52, 0x11, 0x27, 0x36, 0x4e, 0x3f, 0x86, 0x05, 0xcb, 0x44, 0xea, 0x3e, 0x0e,
0x0d, 0xae, 0xf6, 0x25, 0xf2, 0x1e, 0x83, 0x8b, 0x7c, 0x72, 0x30, 0x9b, 0x14, 0x0a, 0xeb, 0xdf,
0x1e, 0xb4, 0xe7, 0xb7, 0x8c, 0x9f, 0xf8, 0x5c, 0x1e, 0x63, 0x0b, 0xd1, 0x35, 0xc2, 0x1e, 0xf8,
0x05, 0x78, 0x2e, 0xb8, 0x84, 0x76, 0xfc, 0x74, 0xbe, 0x79, 0x9a, 0xe5, 0x45, 0xa2, 0x06, 0x30,
0x9d, 0xfd, 0x5f, 0x67, 0x85, 0x4c, 0x63, 0x1b, 0xbb, 0x9f, 0xc0, 0xa6, 0xf4, 0x38, 0xec, 0x31,
0x8a, 0x4c, 0x51, 0x98, 0xda, 0x8f, 0x84, 0xba, 0x84, 0x8f, 0x34, 0xfa, 0x1d, 0x97, 0x0f, 0x8e,
0xf4, 0xa4, 0x50, 0xb7, 0x1b, 0x81, 0x86, 0x54, 0x47, 0xfa, 0x1c, 0x6a, 0x43, 0x65, 0x59, 0x48,
0x92, 0x98, 0xe8, 0xae, 0x54, 0xed, 0x5c, 0x9f, 0x1d, 0x2a, 0x0f, 0xe5, 0x66, 0x50, 0xd5, 0xac,
0x8a, 0xf0, 0xee, 0xc3, 0xb6, 0x53, 0x47, 0xa7, 0xe9, 0xbe, 0xa6, 0x74, 0x6c, 0x39, 0x7b, 0xf6,
0xb6, 0xe4, 0xab, 0xbc, 0xd0, 0x2f, 0x13, 0xc2, 0x3f, 0x57, 0xa0, 0x29, 0xc3, 0xe5, 0x56, 0x1c,
0xef, 0xe7, 0xb0, 0xae, 0xb9, 0xcd, 0x5b, 0xba, 0xc0, 0x3c, 0xc3, 0x74, 0xa1, 0x65, 0x2b, 0x17,
0x5a, 0xb6, 0x28, 0x9e, 0xab, 0x0b, 0xe2, 0x69, 0x6f, 0xb8, 0x5c, 0xfa, 0x70, 0x2a, 0x3d, 0xa6,
0xc3, 0x4c, 0xd0, 0xf2, 0xc5, 0x77, 0x60, 0xbb, 0x0c, 0x2f, 0x71, 0xf5, 0x5f, 0x62, 0x84, 0x58,
0x26, 0x0f, 0x29, 0x15, 0xaf, 0x06, 0x34, 0x3d, 0x22, 0x05, 0x8e, 0xa2, 0x2f, 0xf2, 0x25, 0x5a,
0x81, 0xff, 0x1b, 0xd8, 0xbf, 0xf8, 0xf8, 0x72, 0x79, 0xaf, 0x0f, 0x12, 0x6e, 0xe4, 0x44, 0x4e,
0xde, 0xcf, 0x6f, 0x99, 0x00, 0xfc, 0x49, 0xfe, 0x6f, 0x48, 0xcb, 0x79, 0x7f, 0xd9, 0x4b, 0x5b,
0x70, 0x03, 0x2b, 0x8b, 0x32, 0xfa, 0x1e, 0xb4, 0xd4, 0x00, 0x2c, 0xbf, 0x8d, 0x19, 0x7e, 0x21,
0x4b, 0x9b, 0xcc, 0xdc, 0xbb, 0xa9, 0x36, 0xa6, 0xbd, 0x49, 0xb5, 0x2f, 0x3a, 0xf3, 0xf2, 0xfc,
0xc7, 0x53, 0x47, 0x10, 0x93, 0xcc, 0xd3, 0xfe, 0x74, 0x39, 0x9b, 0xe5, 0xb7, 0xca, 0x02, 0x51,
0x46, 0x0f, 0xb6, 0x32, 0x59, 0x73, 0x9d, 0x3a, 0x71, 0x98, 0x46, 0xb2, 0xbb, 0x94, 0x66, 0x96,
0x97, 0x70, 0xe7, 0xad, 0x5c, 0xef, 0x3b, 0xc3, 0x60, 0x4e, 0xba, 0x99, 0xe0, 0xe4, 0x64, 0x19,
0x5e, 0x22, 0x29, 0xee, 0x43, 0xfd, 0x01, 0xe9, 0xbd, 0x2e, 0x26, 0x19, 0xb8, 0x0f, 0xd5, 0x5e,
0x96, 0xf6, 0x0a, 0x86, 0x41, 0xe8, 0x8d, 0x4d, 0xe1, 0x71, 0x21, 0x9c, 0x37, 0x1a, 0xf6, 0x88,
0x51, 0xf0, 0x21, 0x5c, 0xa1, 0xa3, 0x69, 0x60, 0x1b, 0x07, 0xf6, 0x5f, 0xf5, 0x13, 0x89, 0x06,
0x7a, 0xb3, 0xbb, 0xae, 0xfe, 0x63, 0xff, 0xf4, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3a, 0xb2,
0x00, 0xe1, 0xd4, 0x17, 0x00, 0x00,
// 1990 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x58, 0x5f, 0x6f, 0x1b, 0xc7,
0x11, 0x07, 0x25, 0x59, 0x96, 0xe7, 0x48, 0x8a, 0x3c, 0xc9, 0x12, 0xad, 0x00, 0xb6, 0x7c, 0x4e,
0x1a, 0xd7, 0x45, 0x95, 0x9a, 0x49, 0x8b, 0x20, 0x41, 0x8a, 0xca, 0x92, 0x1c, 0x3b, 0x71, 0x62,
0xe5, 0xfc, 0xaf, 0xe8, 0xcb, 0x61, 0xc9, 0x5b, 0x91, 0x07, 0x1f, 0xef, 0x2e, 0xb7, 0x7b, 0xb4,
0x08, 0x14, 0xfd, 0x16, 0x7d, 0xeb, 0x5b, 0x81, 0xf6, 0xbd, 0x1f, 0xa6, 0x45, 0x3f, 0x49, 0x1f,
0xfa, 0xd2, 0xd9, 0x7f, 0xc7, 0x3d, 0x92, 0xb2, 0x69, 0xc3, 0x05, 0xf2, 0x42, 0xec, 0xfc, 0x76,
0x76, 0xfe, 0xed, 0xec, 0xcc, 0x1c, 0x61, 0x97, 0x93, 0x5e, 0x4c, 0xf9, 0x88, 0x24, 0x64, 0x40,
0xf3, 0x90, 0x70, 0x72, 0x90, 0xe5, 0x29, 0x4f, 0xdd, 0xf6, 0xdc, 0xc6, 0x9e, 0xf3, 0x63, 0x41,
0xf3, 0x89, 0xda, 0xdf, 0x6b, 0xf2, 0x34, 0x4b, 0xa7, 0xfc, 0x7b, 0x57, 0x73, 0x9a, 0xc5, 0x51,
0x9f, 0xf0, 0x28, 0x4d, 0x2c, 0xb8, 0x11, 0xa7, 0x83, 0x82, 0x47, 0xb1, 0x22, 0xbd, 0x7f, 0xd7,
0x60, 0xf3, 0xa9, 0x10, 0x7c, 0x4c, 0xcf, 0xa2, 0x24, 0x12, 0xcc, 0xae, 0x0b, 0x6b, 0x09, 0x19,
0xd1, 0x4e, 0x6d, 0xbf, 0x76, 0xfb, 0x8a, 0x2f, 0xd7, 0xee, 0x0e, 0xac, 0xb3, 0xfe, 0x90, 0x8e,
0x48, 0x67, 0x45, 0xa2, 0x9a, 0x72, 0x3b, 0x70, 0xb9, 0x9f, 0xc6, 0xc5, 0x28, 0x61, 0x9d, 0xd5,
0xfd, 0x55, 0xdc, 0x30, 0xa4, 0x7b, 0x00, 0x5b, 0x59, 0x1e, 0x8d, 0x48, 0x3e, 0x09, 0x5e, 0xd2,
0x49, 0x60, 0xb8, 0xd6, 0x24, 0x57, 0x5b, 0x6f, 0x7d, 0x4b, 0x27, 0x47, 0x9a, 0x1f, 0xb5, 0xf2,
0x49, 0x46, 0x3b, 0x97, 0x94, 0x56, 0xb1, 0x76, 0x6f, 0x80, 0x23, 0x4c, 0x0f, 0x62, 0x9a, 0x0c,
0xf8, 0xb0, 0xb3, 0x8e, 0x5b, 0x6b, 0x3e, 0x08, 0xe8, 0x91, 0x44, 0xdc, 0x0f, 0xe0, 0x4a, 0x9e,
0xbe, 0x42, 0xe1, 0x45, 0xc2, 0x3b, 0x97, 0xe5, 0xf6, 0x06, 0x02, 0x47, 0x82, 0xf6, 0xfe, 0x56,
0x83, 0xd6, 0x13, 0x69, 0xa6, 0xe5, 0xdc, 0xc7, 0xb0, 0x29, 0xce, 0xf7, 0x08, 0xa3, 0x81, 0xf6,
0x48, 0xf9, 0xd9, 0x34, 0xb0, 0x3a, 0xe2, 0x3e, 0x06, 0x15, 0xf1, 0x20, 0x2c, 0x0f, 0x33, 0x74,
0x7e, 0xf5, 0xb6, 0xd3, 0xf5, 0x0e, 0xe6, 0x2f, 0x69, 0x26, 0x88, 0x7e, 0x8b, 0x57, 0x01, 0x26,
0x42, 0x35, 0xa6, 0x39, 0xc3, 0x35, 0x86, 0x4a, 0x68, 0x34, 0xa4, 0x30, 0xd4, 0x55, 0x5a, 0x8f,
0x86, 0x24, 0x19, 0x50, 0x9f, 0xb2, 0x22, 0xe6, 0xee, 0x03, 0x68, 0xf4, 0xe8, 0x59, 0x9a, 0x57,
0x0c, 0x75, 0xba, 0xb7, 0x16, 0x68, 0x9f, 0x75, 0xd3, 0xaf, 0xab, 0x93, 0xda, 0x97, 0xfb, 0x50,
0x27, 0x67, 0x9c, 0xe6, 0x81, 0x75, 0x87, 0x4b, 0x0a, 0x72, 0xe4, 0x41, 0x05, 0x7b, 0xff, 0xa9,
0x41, 0xf3, 0x19, 0xa3, 0xf9, 0x29, 0xcd, 0x47, 0x11, 0x63, 0x3a, 0x59, 0x86, 0x29, 0xe3, 0x26,
0x59, 0xc4, 0x5a, 0x60, 0x05, 0x72, 0xe9, 0x54, 0x91, 0x6b, 0xf7, 0x17, 0xd0, 0xce, 0x08, 0x63,
0xaf, 0xd2, 0x3c, 0x0c, 0x50, 0x58, 0xff, 0x25, 0x2b, 0x46, 0x32, 0x0e, 0x6b, 0x7e, 0xcb, 0x6c,
0x1c, 0x69, 0xdc, 0xfd, 0x01, 0x00, 0x13, 0x64, 0x1c, 0xc5, 0x74, 0x40, 0x55, 0xca, 0x38, 0xdd,
0xbb, 0x0b, 0xac, 0xad, 0xda, 0x72, 0x70, 0x5a, 0x9e, 0x39, 0x49, 0x78, 0x3e, 0xf1, 0x2d, 0x21,
0x7b, 0x5f, 0xc1, 0xe6, 0xcc, 0xb6, 0xdb, 0x82, 0x55, 0xcc, 0x4c, 0x6d, 0xb9, 0x58, 0xba, 0xdb,
0x70, 0x69, 0x4c, 0xe2, 0x82, 0x6a, 0xcb, 0x15, 0xf1, 0xc5, 0xca, 0xe7, 0x35, 0xef, 0x9f, 0x35,
0xa8, 0x1f, 0xf7, 0xde, 0xe0, 0x77, 0x13, 0x56, 0xc2, 0x9e, 0x3e, 0x8b, 0xab, 0x32, 0x0e, 0xab,
0x56, 0x1c, 0x1e, 0x2f, 0x70, 0xed, 0x93, 0x05, 0xae, 0xd9, 0xca, 0xfe, 0x9f, 0x8e, 0xfd, 0xb5,
0x06, 0xce, 0x54, 0x13, 0x73, 0x1f, 0x41, 0x4b, 0xd8, 0x19, 0x64, 0x53, 0x0c, 0x05, 0x09, 0x2b,
0x6f, 0xbe, 0xf1, 0x02, 0xfc, 0xcd, 0xa2, 0x42, 0x33, 0x4c, 0xbc, 0x66, 0xd8, 0xab, 0xc8, 0x52,
0x2f, 0xe8, 0xc6, 0x1b, 0x3c, 0xf6, 0x1b, 0xa1, 0x45, 0x31, 0xef, 0x4b, 0x70, 0xee, 0xc5, 0xd9,
0x69, 0xca, 0xd4, 0x23, 0x46, 0x07, 0x8b, 0x28, 0x94, 0x0e, 0x36, 0x7c, 0xb1, 0x74, 0xf7, 0x60,
0x23, 0xd3, 0xbb, 0xda, 0xc7, 0x92, 0xf6, 0x3e, 0x46, 0x0f, 0xa3, 0x64, 0xe0, 0x53, 0x2c, 0x97,
0x78, 0x4b, 0xf8, 0x0e, 0x33, 0x32, 0x89, 0x53, 0x12, 0xea, 0x08, 0x19, 0xd2, 0xbb, 0x0d, 0x75,
0xc5, 0xc8, 0x32, 0x54, 0x4a, 0x5f, 0xc3, 0x79, 0x07, 0xea, 0x4f, 0x62, 0x4a, 0x33, 0x23, 0x13,
0xd5, 0x87, 0x45, 0x2e, 0x6b, 0xad, 0x64, 0x5d, 0xf5, 0x4b, 0xda, 0xdb, 0x84, 0x86, 0xe6, 0x55,
0x62, 0xbd, 0x7f, 0xe1, 0x73, 0x3f, 0x39, 0xa7, 0xfd, 0x82, 0xd3, 0x07, 0x69, 0xfa, 0xd2, 0xc8,
0x58, 0x54, 0x76, 0xaf, 0x63, 0xb6, 0x90, 0x1c, 0x57, 0xf8, 0x06, 0x55, 0xec, 0xae, 0xf8, 0x16,
0xe2, 0x9e, 0xc2, 0x15, 0x7a, 0xce, 0x73, 0x12, 0xd0, 0x64, 0x2c, 0x0b, 0xb0, 0xd3, 0xfd, 0x74,
0x41, 0x68, 0xe7, 0xb5, 0x21, 0x84, 0xc7, 0x4e, 0x92, 0xb1, 0x4a, 0xa8, 0x0d, 0xaa, 0xc9, 0xbd,
0x2f, 0xa1, 0x51, 0xd9, 0x7a, 0xab, 0x64, 0x3a, 0x83, 0xad, 0x8a, 0x2a, 0x1d, 0x47, 0x2c, 0xe3,
0xf4, 0x3c, 0xe2, 0x01, 0xe3, 0x84, 0x17, 0x4c, 0x07, 0x08, 0x04, 0xf4, 0x44, 0x22, 0xb2, 0xbb,
0xf0, 0x30, 0x2d, 0x78, 0xd9, 0x5d, 0x24, 0xa5, 0x71, 0x9a, 0x9b, 0x27, 0xa4, 0x29, 0x6f, 0x0c,
0xad, 0xaf, 0x29, 0x57, 0x45, 0xc9, 0x84, 0x0f, 0x79, 0xa5, 0xe3, 0x2a, 0x5d, 0x91, 0x57, 0x51,
0xee, 0x2d, 0x68, 0x44, 0x49, 0x3f, 0x2e, 0x42, 0x1a, 0x8c, 0x23, 0xfa, 0x8a, 0x49, 0x15, 0x1b,
0x7e, 0x5d, 0x83, 0xcf, 0x05, 0xe6, 0x7e, 0x04, 0x4d, 0x7a, 0xae, 0x98, 0xb4, 0x10, 0xd5, 0xcd,
0x1a, 0x1a, 0x95, 0xd5, 0x9d, 0x79, 0x14, 0xda, 0x96, 0x5e, 0xed, 0xdd, 0x29, 0xb4, 0x55, 0x59,
0xb5, 0x3a, 0xc5, 0xdb, 0x94, 0xea, 0x16, 0x9b, 0x41, 0xbc, 0x5d, 0xb8, 0x8a, 0x6a, 0xac, 0xfc,
0xd7, 0x3e, 0x7a, 0x7f, 0x80, 0x9d, 0xd9, 0x0d, 0x6d, 0xc4, 0xef, 0xc0, 0xa9, 0xbe, 0x58, 0xa1,
0xfe, 0xfa, 0x02, 0xf5, 0xf6, 0x61, 0xfb, 0x88, 0xb7, 0x8d, 0x3d, 0x88, 0x72, 0x9f, 0x92, 0xf0,
0x71, 0x12, 0x4f, 0x8c, 0xc6, 0xab, 0xb0, 0x55, 0x41, 0x75, 0x0a, 0x4f, 0xe1, 0x17, 0x79, 0xc4,
0xa9, 0xe1, 0xde, 0x81, 0xed, 0x2a, 0xac, 0xd9, 0xbf, 0x81, 0xb6, 0xea, 0x6c, 0x4f, 0xb1, 0xab,
0x9b, 0x0b, 0xfb, 0x35, 0x38, 0xca, 0xbc, 0x40, 0xf6, 0x7d, 0x61, 0x72, 0xb3, 0xbb, 0x7d, 0x50,
0x8e, 0x31, 0x32, 0xe6, 0x5c, 0x9e, 0x00, 0x5e, 0xae, 0x85, 0x9d, 0xb6, 0xac, 0xa9, 0x41, 0x3e,
0x3d, 0xcb, 0x29, 0x1b, 0x8a, 0x94, 0xb2, 0x0d, 0xaa, 0xc2, 0x9a, 0x1d, 0x23, 0xec, 0x17, 0xc9,
0x03, 0x4a, 0x62, 0x3e, 0x94, 0x5d, 0xc7, 0x1c, 0xe8, 0xc0, 0xce, 0xec, 0x86, 0x3e, 0xf2, 0x19,
0x74, 0x1e, 0x0e, 0x12, 0xec, 0xa9, 0x6a, 0xf3, 0x24, 0xcf, 0xd3, 0xbc, 0x52, 0x52, 0x38, 0xbe,
0xc8, 0x64, 0x5a, 0x28, 0x24, 0xe9, 0x7d, 0x00, 0xd7, 0x16, 0x9c, 0xd2, 0x22, 0xbf, 0x10, 0x46,
0x8b, 0x7a, 0x52, 0xcd, 0x64, 0xcc, 0xd8, 0x57, 0x04, 0x9f, 0x4b, 0x59, 0xd0, 0x94, 0xcc, 0xba,
0x00, 0x4d, 0x09, 0x54, 0x9e, 0xd9, 0x67, 0xb5, 0xcc, 0x2e, 0xec, 0x9c, 0xe6, 0xf4, 0x2c, 0x8e,
0x06, 0xc3, 0x99, 0x07, 0x22, 0x46, 0x35, 0x19, 0x38, 0xf3, 0x42, 0x0c, 0xe9, 0x0d, 0x60, 0x77,
0xee, 0x8c, 0xce, 0xab, 0x47, 0xd0, 0x54, 0x5c, 0x41, 0x2e, 0x87, 0x12, 0xd3, 0x0c, 0x3e, 0xba,
0x30, 0xb3, 0xed, 0x11, 0xc6, 0x6f, 0xf4, 0x2d, 0x8a, 0x79, 0xff, 0xc5, 0xca, 0x77, 0x98, 0x65,
0xf1, 0xa4, 0x6a, 0x19, 0x96, 0x18, 0xf6, 0x63, 0x6c, 0x4a, 0x0c, 0x2e, 0x45, 0x89, 0xc1, 0xf1,
0xa5, 0x4f, 0xf5, 0x63, 0x55, 0x84, 0x98, 0x21, 0x48, 0x1c, 0xe3, 0xbc, 0x67, 0x8d, 0xb6, 0xb2,
0x32, 0x6c, 0xf8, 0x2d, 0xb9, 0xe1, 0x4f, 0xf1, 0xf9, 0xe9, 0x69, 0xed, 0x7d, 0x4d, 0x4f, 0x97,
0xde, 0x71, 0x7a, 0xfa, 0x7b, 0x0d, 0xb6, 0x2a, 0xde, 0xeb, 0x18, 0xff, 0xf4, 0xe6, 0xbc, 0x7f,
0xd4, 0xa0, 0xa3, 0x0b, 0xf9, 0x7d, 0xca, 0xfb, 0xc3, 0x43, 0x76, 0xdc, 0x2b, 0x6f, 0x0b, 0xef,
0x46, 0x7e, 0x77, 0xe8, 0xfb, 0x52, 0x84, 0xbb, 0x0b, 0x97, 0xb1, 0xd3, 0xcb, 0x06, 0xa6, 0x6b,
0x78, 0xd8, 0xfb, 0x5e, 0xb4, 0xb0, 0x6b, 0xb0, 0x31, 0x22, 0xe7, 0x01, 0x4e, 0xe5, 0x4c, 0xcf,
0x7b, 0x97, 0x91, 0xf6, 0x91, 0x94, 0xb3, 0x78, 0xc4, 0xe4, 0x90, 0xdd, 0x8b, 0x12, 0xfc, 0x30,
0x61, 0xf2, 0x92, 0x36, 0x70, 0x16, 0x57, 0xf0, 0x3d, 0x85, 0x8a, 0x17, 0x91, 0xcb, 0x64, 0xb7,
0xaf, 0x00, 0x6b, 0x78, 0x6e, 0xbd, 0x00, 0xef, 0x6b, 0xb8, 0xb6, 0xc0, 0x66, 0x1d, 0xe3, 0x3b,
0xb0, 0xae, 0x12, 0x58, 0x07, 0xd7, 0x3d, 0x50, 0xdf, 0x4e, 0x3f, 0x88, 0x5f, 0x9d, 0xac, 0x9a,
0xc3, 0xfb, 0x76, 0xd6, 0x79, 0xbc, 0xb4, 0xd7, 0x3b, 0x6f, 0xfb, 0xb8, 0x52, 0xf1, 0x71, 0xde,
0x2a, 0x29, 0xec, 0x1d, 0xac, 0x12, 0xf5, 0x39, 0x26, 0x63, 0xaa, 0x5a, 0xa6, 0xa9, 0x57, 0xf7,
0xb1, 0x10, 0xdb, 0xa8, 0x16, 0xfc, 0x89, 0x68, 0x9c, 0x65, 0xb3, 0x75, 0xba, 0xbb, 0x07, 0xb3,
0x5f, 0x83, 0xfa, 0x80, 0x66, 0x13, 0x05, 0xf1, 0x3b, 0xc2, 0x30, 0x03, 0x4c, 0x81, 0x31, 0x0a,
0x3e, 0x83, 0x9d, 0xd9, 0x0d, 0xad, 0xc3, 0x1e, 0xb9, 0x6a, 0x33, 0x23, 0x97, 0x8b, 0x5f, 0x5e,
0x58, 0xc8, 0xa5, 0x69, 0x46, 0xd2, 0x16, 0xb4, 0x2d, 0x4c, 0x97, 0xab, 0xdf, 0xc3, 0x6e, 0x09,
0x7e, 0x87, 0xb9, 0x38, 0x2a, 0x46, 0xd6, 0x4c, 0x75, 0x91, 0x7c, 0xf7, 0x26, 0xc8, 0x6a, 0x18,
0xf0, 0x68, 0x44, 0xcd, 0xd8, 0xb0, 0xea, 0x3b, 0x02, 0x7b, 0xaa, 0x20, 0xef, 0x37, 0xd0, 0x99,
0x97, 0xbc, 0x84, 0xe9, 0xd2, 0x4c, 0x92, 0xf3, 0x8a, 0xed, 0x22, 0xf8, 0x16, 0xa8, 0x8d, 0x3f,
0x86, 0x9b, 0xaa, 0x49, 0xe1, 0xc4, 0x84, 0xc5, 0x1e, 0x4b, 0x10, 0x5e, 0x1a, 0x4e, 0x67, 0x34,
0xe1, 0x34, 0x34, 0x6e, 0xc8, 0xe1, 0x47, 0x6d, 0x07, 0x91, 0x19, 0x24, 0xc1, 0x40, 0x0f, 0x43,
0xef, 0x43, 0xf0, 0x5e, 0x27, 0x45, 0xeb, 0xda, 0x87, 0xeb, 0xb3, 0x5c, 0x27, 0x31, 0xed, 0x4f,
0x15, 0x79, 0x37, 0xe1, 0xc6, 0x85, 0x1c, 0x5a, 0x88, 0xab, 0xe6, 0x26, 0xe1, 0x44, 0x99, 0x41,
0x3f, 0x57, 0x33, 0x8d, 0xc6, 0x74, 0x80, 0x30, 0xcd, 0x49, 0x18, 0xe6, 0xa6, 0x53, 0x28, 0xc2,
0xfb, 0x13, 0xec, 0xbc, 0xc0, 0x08, 0x5b, 0x93, 0xb8, 0x71, 0xf2, 0x10, 0xea, 0xbd, 0x38, 0xab,
0x76, 0xac, 0xc5, 0xf3, 0x87, 0x7d, 0xd8, 0xe9, 0x59, 0x33, 0xfd, 0x12, 0x57, 0x7a, 0x0d, 0x76,
0xe7, 0xf4, 0x6b, 0xcf, 0x5a, 0xd0, 0x14, 0xb7, 0x8d, 0x5b, 0xc6, 0xaf, 0xe7, 0xb0, 0x59, 0x22,
0xda, 0xab, 0x23, 0x2c, 0xb4, 0x96, 0x95, 0xa6, 0x97, 0xbd, 0xc9, 0xcc, 0xba, 0x65, 0x26, 0xf3,
0xda, 0x42, 0x2e, 0xa6, 0x82, 0xa5, 0x4a, 0x66, 0xbb, 0x81, 0xb4, 0x41, 0x7f, 0x04, 0x17, 0x07,
0x09, 0x44, 0x9e, 0x25, 0x3c, 0x8a, 0x4d, 0x9c, 0xde, 0x87, 0x05, 0xcb, 0x44, 0xea, 0x2e, 0x4e,
0x16, 0xb6, 0xf6, 0x25, 0xf2, 0x1e, 0x83, 0x8b, 0x7c, 0x62, 0x7a, 0x2b, 0x0b, 0x85, 0xf1, 0x6f,
0x0f, 0x3a, 0xf3, 0x5b, 0xda, 0x4f, 0x7c, 0x2e, 0x0f, 0xb1, 0x85, 0xa8, 0x1a, 0x61, 0x0e, 0xfc,
0x0a, 0x5c, 0x1b, 0x5c, 0x42, 0x3b, 0x7e, 0x5f, 0x5f, 0x3f, 0x4d, 0xb3, 0x22, 0x96, 0x53, 0x9a,
0xca, 0xfe, 0x6f, 0xd2, 0x42, 0xa4, 0xb1, 0x89, 0xdd, 0xcf, 0x60, 0x53, 0x78, 0x1c, 0xf4, 0x73,
0x8a, 0x4c, 0x61, 0x90, 0x98, 0x2f, 0x89, 0x86, 0x80, 0x8f, 0x14, 0xfa, 0x3d, 0x13, 0x0f, 0x8e,
0xf4, 0x85, 0x50, 0xbb, 0x1b, 0x81, 0x82, 0x64, 0x47, 0xfa, 0x1c, 0xea, 0x23, 0x69, 0x59, 0x40,
0xe2, 0x88, 0xa8, 0xae, 0xe4, 0x74, 0xaf, 0xce, 0x4e, 0x9e, 0x87, 0x62, 0xd3, 0x77, 0x14, 0xab,
0x24, 0xdc, 0xbb, 0xb0, 0x6d, 0xd5, 0xd1, 0x69, 0xba, 0xaf, 0x49, 0x1d, 0x5b, 0xd6, 0x5e, 0x39,
0xa7, 0xe1, 0xab, 0xbc, 0xd0, 0x2f, 0x1d, 0xc2, 0xbf, 0xd4, 0xa0, 0x25, 0xc2, 0x65, 0x57, 0x1c,
0xf7, 0x97, 0xb0, 0xae, 0xb8, 0xf5, 0x5b, 0xba, 0xc0, 0x3c, 0xcd, 0x74, 0xa1, 0x65, 0x2b, 0x17,
0x5a, 0xb6, 0x28, 0x9e, 0xab, 0x0b, 0xe2, 0x69, 0x6e, 0xb8, 0x5a, 0xfa, 0x70, 0xde, 0x3e, 0xa6,
0xa3, 0x94, 0xd3, 0xea, 0xc5, 0x77, 0x61, 0xbb, 0x0a, 0x2f, 0x71, 0xf5, 0x5f, 0x61, 0x84, 0xf2,
0x54, 0x1c, 0x92, 0x2a, 0x5e, 0x0c, 0x69, 0x72, 0x44, 0x0a, 0x1c, 0x45, 0x9f, 0x65, 0x4b, 0xb4,
0x02, 0xef, 0xb7, 0xb0, 0x7f, 0xf1, 0xf1, 0xe5, 0xf2, 0x5e, 0x1d, 0x24, 0x4c, 0xcb, 0x09, 0xad,
0xbc, 0x9f, 0xdf, 0xd2, 0x01, 0xf8, 0xb3, 0xf8, 0x73, 0x91, 0x56, 0xf3, 0xfe, 0x6d, 0x2f, 0x6d,
0xc1, 0x0d, 0xac, 0x2c, 0xca, 0xe8, 0x3b, 0xd0, 0x96, 0x03, 0xb0, 0xf8, 0x80, 0xce, 0xf1, 0x33,
0x5a, 0xd8, 0xa4, 0xe7, 0xde, 0x4d, 0xb9, 0x31, 0xed, 0x4d, 0xb2, 0x7d, 0xd1, 0x99, 0x97, 0xe7,
0x3d, 0x9c, 0x3a, 0x82, 0x98, 0x60, 0x9e, 0xf6, 0xa7, 0xb7, 0xb3, 0x59, 0x7c, 0xd0, 0x2c, 0x10,
0xa5, 0xf5, 0x60, 0x2b, 0x13, 0x35, 0xd7, 0xaa, 0x13, 0x87, 0x49, 0x28, 0xba, 0x4b, 0x65, 0x66,
0x79, 0x0e, 0xb7, 0x5e, 0xcb, 0xf5, 0xae, 0x33, 0x0c, 0xe6, 0xa4, 0x9d, 0x09, 0x56, 0x4e, 0x56,
0xe1, 0x25, 0x92, 0xe2, 0x2e, 0x34, 0xee, 0x91, 0xfe, 0xcb, 0xa2, 0xcc, 0xc0, 0x7d, 0x70, 0xfa,
0x69, 0xd2, 0x2f, 0x72, 0x0c, 0x42, 0x7f, 0xa2, 0x0b, 0x8f, 0x0d, 0xe1, 0xbc, 0xd1, 0x34, 0x47,
0xb4, 0x82, 0x0f, 0xe1, 0x12, 0x1d, 0x4f, 0x03, 0xdb, 0x3c, 0x30, 0x7f, 0xbd, 0x9f, 0x08, 0xd4,
0x57, 0x9b, 0xbd, 0x75, 0xf9, 0x47, 0xfc, 0xa7, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x23, 0x78,
0x14, 0xbc, 0xf9, 0x17, 0x00, 0x00,
}

Просмотреть файл

@ -474,7 +474,7 @@ func agentRPCTestIgnoreHealthErrorPanic(ctx context.Context, t *testing.T, clien
var testReloadSchemaCalled = false
func (fra *fakeRPCAgent) ReloadSchema(ctx context.Context) {
func (fra *fakeRPCAgent) ReloadSchema(ctx context.Context, waitPosition string) error {
if fra.panics {
panic(fmt.Errorf("test-triggered panic"))
}
@ -482,10 +482,11 @@ func (fra *fakeRPCAgent) ReloadSchema(ctx context.Context) {
fra.t.Errorf("ReloadSchema called multiple times?")
}
testReloadSchemaCalled = true
return nil
}
func agentRPCTestReloadSchema(ctx context.Context, t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.Tablet) {
err := client.ReloadSchema(ctx, tablet)
err := client.ReloadSchema(ctx, tablet, "")
if err != nil {
t.Errorf("ReloadSchema failed: %v", err)
}
@ -495,8 +496,8 @@ func agentRPCTestReloadSchema(ctx context.Context, t *testing.T, client tmclient
}
func agentRPCTestReloadSchemaPanic(ctx context.Context, t *testing.T, client tmclient.TabletManagerClient, tablet *topodatapb.Tablet) {
err := client.ReloadSchema(ctx, tablet)
expectRPCWrapLockActionPanic(t, err)
err := client.ReloadSchema(ctx, tablet, "")
expectRPCWrapPanic(t, err)
}
var testPreflightSchema = []string{"change table add table cloth"}

Просмотреть файл

@ -115,7 +115,7 @@ func (client *FakeTabletManagerClient) IgnoreHealthError(ctx context.Context, ta
}
// ReloadSchema is part of the tmclient.TabletManagerClient interface.
func (client *FakeTabletManagerClient) ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet) error {
func (client *FakeTabletManagerClient) ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet, waitPosition string) error {
return nil
}

Просмотреть файл

@ -270,13 +270,15 @@ func (client *Client) IgnoreHealthError(ctx context.Context, tablet *topodatapb.
}
// ReloadSchema is part of the tmclient.TabletManagerClient interface.
func (client *Client) ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet) error {
func (client *Client) ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet, waitPosition string) error {
cc, c, err := client.dial(tablet)
if err != nil {
return err
}
defer cc.Close()
_, err = c.ReloadSchema(ctx, &tabletmanagerdatapb.ReloadSchemaRequest{})
_, err = c.ReloadSchema(ctx, &tabletmanagerdatapb.ReloadSchemaRequest{
WaitPosition: waitPosition,
})
return err
}

Просмотреть файл

@ -145,9 +145,8 @@ func (s *server) IgnoreHealthError(ctx context.Context, request *tabletmanagerda
func (s *server) ReloadSchema(ctx context.Context, request *tabletmanagerdatapb.ReloadSchemaRequest) (*tabletmanagerdatapb.ReloadSchemaResponse, error) {
ctx = callinfo.GRPCCallInfo(ctx)
response := &tabletmanagerdatapb.ReloadSchemaResponse{}
return response, s.agent.RPCWrapLockAction(ctx, tabletmanager.TabletActionReloadSchema, request, response, true, func() error {
s.agent.ReloadSchema(ctx)
return nil
return response, s.agent.RPCWrap(ctx, tabletmanager.TabletActionReloadSchema, request, response, func() error {
return s.agent.ReloadSchema(ctx, request.WaitPosition)
})
}

Просмотреть файл

@ -91,7 +91,7 @@ func (agent *ActionAgent) startReplication(ctx context.Context, pos replication.
if err != nil {
return err
}
if err := agent.MysqlDaemon.ExecuteSuperQueryList(cmds); err != nil {
if err := agent.MysqlDaemon.ExecuteSuperQueryList(ctx, cmds); err != nil {
return fmt.Errorf("failed to set slave position: %v", err)
}
@ -135,7 +135,7 @@ func (agent *ActionAgent) startReplication(ctx context.Context, pos replication.
return fmt.Errorf("MysqlDaemon.SetMasterCommands failed: %v", err)
}
cmds = append(cmds, "START SLAVE")
if err := agent.MysqlDaemon.ExecuteSuperQueryList(cmds); err != nil {
if err := agent.MysqlDaemon.ExecuteSuperQueryList(ctx, cmds); err != nil {
return fmt.Errorf("failed to start replication: %v", err)
}

Просмотреть файл

@ -191,7 +191,7 @@ type RPCAgent interface {
IgnoreHealthError(ctx context.Context, pattern string) error
ReloadSchema(ctx context.Context)
ReloadSchema(ctx context.Context, waitPosition string) error
PreflightSchema(ctx context.Context, changes []string) ([]*tabletmanagerdatapb.SchemaChangeResult, error)

Просмотреть файл

@ -20,7 +20,9 @@ import (
// reached.
// Should be called under RPCWrapLock.
func (agent *ActionAgent) WaitBlpPosition(ctx context.Context, blpPosition *tabletmanagerdatapb.BlpPosition, waitTime time.Duration) error {
return mysqlctl.WaitBlpPosition(agent.MysqlDaemon, binlogplayer.QueryBlpCheckpoint(blpPosition.Uid), blpPosition.Position, waitTime)
waitCtx, cancel := context.WithTimeout(ctx, waitTime)
defer cancel()
return mysqlctl.WaitBlpPosition(waitCtx, agent.MysqlDaemon, binlogplayer.QueryBlpCheckpoint(blpPosition.Uid), blpPosition.Position)
}
// StopBlp stops the binlog players, and return their positions.

Просмотреть файл

@ -49,7 +49,7 @@ func (agent *ActionAgent) ExecuteFetchAsDba(ctx context.Context, query string, d
}
if err == nil && reloadSchema {
agent.QueryServiceControl.ReloadSchema()
agent.QueryServiceControl.ReloadSchema(ctx)
}
return sqltypes.ResultToProto3(result), err
}
@ -58,7 +58,7 @@ func (agent *ActionAgent) ExecuteFetchAsDba(ctx context.Context, query string, d
// Should be called under RPCWrap.
func (agent *ActionAgent) ExecuteFetchAsApp(ctx context.Context, query string, maxrows int) (*querypb.QueryResult, error) {
// get a connection
conn, err := agent.MysqlDaemon.GetAppConnection()
conn, err := agent.MysqlDaemon.GetAppConnection(ctx)
if err != nil {
return nil, err
}

Просмотреть файл

@ -76,7 +76,9 @@ func (agent *ActionAgent) StopSlaveMinimum(ctx context.Context, position string,
if err != nil {
return "", err
}
if err := agent.MysqlDaemon.WaitMasterPos(pos, waitTime); err != nil {
waitCtx, cancel := context.WithTimeout(ctx, waitTime)
defer cancel()
if err := agent.MysqlDaemon.WaitMasterPos(waitCtx, pos); err != nil {
return "", err
}
if err := agent.StopSlave(ctx); err != nil {
@ -128,7 +130,7 @@ func (agent *ActionAgent) ResetReplication(ctx context.Context) error {
return err
}
agent.setSlaveStopped(true)
return agent.MysqlDaemon.ExecuteSuperQueryList(cmds)
return agent.MysqlDaemon.ExecuteSuperQueryList(ctx, cmds)
}
// InitMaster enables writes and returns the replication position.
@ -136,7 +138,7 @@ func (agent *ActionAgent) InitMaster(ctx context.Context) (string, error) {
// we need to insert something in the binlogs, so we can get the
// current position. Let's just use the mysqlctl.CreateReparentJournal commands.
cmds := mysqlctl.CreateReparentJournal()
if err := agent.MysqlDaemon.ExecuteSuperQueryList(cmds); err != nil {
if err := agent.MysqlDaemon.ExecuteSuperQueryList(ctx, cmds); err != nil {
return "", err
}
@ -181,7 +183,7 @@ func (agent *ActionAgent) PopulateReparentJournal(ctx context.Context, timeCreat
cmds := mysqlctl.CreateReparentJournal()
cmds = append(cmds, mysqlctl.PopulateReparentJournal(timeCreatedNS, actionName, topoproto.TabletAliasString(masterAlias), pos))
return agent.MysqlDaemon.ExecuteSuperQueryList(cmds)
return agent.MysqlDaemon.ExecuteSuperQueryList(ctx, cmds)
}
// InitSlave sets replication master and position, and waits for the
@ -216,7 +218,7 @@ func (agent *ActionAgent) InitSlave(ctx context.Context, parent *topodatapb.Tabl
cmds = append(cmds, cmds2...)
cmds = append(cmds, "START SLAVE")
if err := agent.MysqlDaemon.ExecuteSuperQueryList(cmds); err != nil {
if err := agent.MysqlDaemon.ExecuteSuperQueryList(ctx, cmds); err != nil {
return err
}
agent.initReplication = true
@ -272,16 +274,7 @@ func (agent *ActionAgent) PromoteSlaveWhenCaughtUp(ctx context.Context, position
return "", err
}
// TODO(alainjobart) change the flavor API to take the context directly
// For now, extract the timeout from the context, or wait forever
var waitTimeout time.Duration
if deadline, ok := ctx.Deadline(); ok {
waitTimeout = deadline.Sub(time.Now())
if waitTimeout <= 0 {
waitTimeout = time.Millisecond
}
}
if err := agent.MysqlDaemon.WaitMasterPos(pos, waitTimeout); err != nil {
if err := agent.MysqlDaemon.WaitMasterPos(ctx, pos); err != nil {
return "", err
}
@ -356,7 +349,7 @@ func (agent *ActionAgent) SetMaster(ctx context.Context, parentAlias *topodatapb
if shouldbeReplicating {
cmds = append(cmds, mysqlctl.SQLStartSlave)
}
if err := agent.MysqlDaemon.ExecuteSuperQueryList(cmds); err != nil {
if err := agent.MysqlDaemon.ExecuteSuperQueryList(ctx, cmds); err != nil {
return err
}

Просмотреть файл

@ -5,6 +5,10 @@
package tabletmanager
import (
"fmt"
log "github.com/golang/glog"
"github.com/youtube/vitess/go/vt/mysqlctl/replication"
"github.com/youtube/vitess/go/vt/mysqlctl/tmutils"
"github.com/youtube/vitess/go/vt/topo/topoproto"
"golang.org/x/net/context"
@ -19,17 +23,28 @@ func (agent *ActionAgent) GetSchema(ctx context.Context, tables, excludeTables [
}
// ReloadSchema will reload the schema
// Should be called under RPCWrapLockAction.
func (agent *ActionAgent) ReloadSchema(ctx context.Context) {
// Should be called under RPCWrap.
// This doesn't need the action mutex because periodic schema reloads happen
// in the background anyway.
func (agent *ActionAgent) ReloadSchema(ctx context.Context, waitPosition string) error {
if agent.DBConfigs.IsZero() {
// we skip this for test instances that can't connect to the DB anyway
return
return nil
}
// This adds a dependency between tabletmanager and tabletserver,
// so it's not ideal. But I (alainjobart) think it's better
// to have up to date schema in vttablet.
agent.QueryServiceControl.ReloadSchema()
if waitPosition != "" {
pos, err := replication.DecodePosition(waitPosition)
if err != nil {
return fmt.Errorf("ReloadSchema: can't parse wait position (%q): %v", waitPosition, err)
}
log.Infof("ReloadSchema: waiting for replication position: %v", waitPosition)
if err := agent.MysqlDaemon.WaitMasterPos(ctx, pos); err != nil {
return err
}
}
log.Infof("ReloadSchema requested via RPC")
return agent.QueryServiceControl.ReloadSchema(ctx)
}
// PreflightSchema will try out the schema changes in "changes".
@ -55,6 +70,6 @@ func (agent *ActionAgent) ApplySchema(ctx context.Context, change *tmutils.Schem
}
// and if it worked, reload the schema
agent.ReloadSchema(ctx)
agent.ReloadSchema(ctx, "")
return scr, nil
}

Просмотреть файл

@ -68,7 +68,7 @@ type TabletManagerClient interface {
IgnoreHealthError(ctx context.Context, tablet *topodatapb.Tablet, pattern string) error
// ReloadSchema asks the remote tablet to reload its schema
ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet) error
ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet, waitPosition string) error
// PreflightSchema will test a list of schema changes.
PreflightSchema(ctx context.Context, tablet *topodatapb.Tablet, changes []string) ([]*tabletmanagerdatapb.SchemaChangeResult, error)

Просмотреть файл

@ -661,7 +661,7 @@ func (scw *SplitCloneWorker) copy(ctx context.Context) error {
defer destinationWaitGroup.Done()
scw.wr.Logger().Infof("Reloading schema on tablet %v", ti.AliasString())
shortCtx, cancel := context.WithTimeout(ctx, *remoteActionsTimeout)
err := scw.wr.TabletManagerClient().ReloadSchema(shortCtx, ti.Tablet)
err := scw.wr.TabletManagerClient().ReloadSchema(shortCtx, ti.Tablet, "")
cancel()
if err != nil {
processError("ReloadSchema failed on tablet %v: %v", ti.AliasString(), err)

Просмотреть файл

@ -558,7 +558,7 @@ func (vscw *VerticalSplitCloneWorker) copy(ctx context.Context) error {
defer destinationWaitGroup.Done()
vscw.wr.Logger().Infof("Reloading schema on tablet %v", ti.AliasString())
shortCtx, cancel := context.WithTimeout(ctx, *remoteActionsTimeout)
err := vscw.wr.TabletManagerClient().ReloadSchema(shortCtx, ti.Tablet)
err := vscw.wr.TabletManagerClient().ReloadSchema(shortCtx, ti.Tablet, "")
cancel()
if err != nil {
processError("ReloadSchema failed on tablet %v: %v", ti.AliasString(), err)

Просмотреть файл

@ -170,6 +170,10 @@ message IgnoreHealthErrorResponse {
}
message ReloadSchemaRequest {
// wait_position allows scheduling a schema reload to occur after a
// given DDL has replicated to this slave, by specifying a replication
// position to wait for. Leave empty to trigger the reload immediately.
string wait_position = 1;
}
message ReloadSchemaResponse {

Различия файлов скрыты, потому что одна или несколько строк слишком длинны