func newBinlogPlayerController(ts topo.Server, vtClientFactory func() binlogplayer.VtClient, mysqld mysqlctl.MysqlDaemon, cell string, keyRange *topodatapb.KeyRange, sourceShard *topodatapb.Shard_SourceShard, dbName string) *BinlogPlayerController { blc := &BinlogPlayerController{ ts: ts, vtClientFactory: vtClientFactory, mysqld: mysqld, cell: cell, keyRange: keyRange, dbName: dbName, sourceShard: sourceShard, binlogPlayerStats: binlogplayer.NewStats(), healthCheck: discovery.NewHealthCheck(*binlogplayer.BinlogPlayerConnTimeout, *retryDelay, *healthCheckTimeout), } blc.shardReplicationWatcher = discovery.NewShardReplicationWatcher(ts, blc.healthCheck, cell, sourceShard.Keyspace, sourceShard.Shard, *healthCheckTopologyRefresh, 5) return blc }
// newBinlogPlayerController instantiates a new BinlogPlayerController. // Use Start() and Stop() to start and stop it. // Once stopped, you should call Close() to stop and free resources e.g. the // healthcheck instance. func newBinlogPlayerController(ts topo.Server, vtClientFactory func() binlogplayer.VtClient, mysqld mysqlctl.MysqlDaemon, cell string, keyRange *topodatapb.KeyRange, sourceShard *topodatapb.Shard_SourceShard, dbName string) *BinlogPlayerController { healthCheck := discovery.NewHealthCheck(*binlogplayer.BinlogPlayerConnTimeout, *healthcheckRetryDelay, *healthCheckTimeout) return &BinlogPlayerController{ ts: ts, vtClientFactory: vtClientFactory, mysqld: mysqld, cell: cell, keyRange: keyRange, dbName: dbName, sourceShard: sourceShard, binlogPlayerStats: binlogplayer.NewStats(), // Note: healthCheck and shardReplicationWatcher remain active independent // of whether the BinlogPlayerController is Start()'d or Stop()'d. // Use Close() after Stop() to finally close them and free their resources. healthCheck: healthCheck, shardReplicationWatcher: discovery.NewShardReplicationWatcher(ts, healthCheck, cell, sourceShard.Keyspace, sourceShard.Shard, *healthCheckTopologyRefresh, discovery.DefaultTopoReadConcurrency), } }
func newBinlogPlayerController(ts topo.Server, vtClientFactory func() binlogplayer.VtClient, mysqld mysqlctl.MysqlDaemon, cell string, keyspaceIDType pb.KeyspaceIdType, keyRange *pb.KeyRange, sourceShard *pb.Shard_SourceShard, dbName string) *BinlogPlayerController { blc := &BinlogPlayerController{ ts: ts, vtClientFactory: vtClientFactory, mysqld: mysqld, cell: cell, keyspaceIDType: keyspaceIDType, keyRange: keyRange, dbName: dbName, sourceShard: sourceShard, binlogPlayerStats: binlogplayer.NewStats(), healthCheck: discovery.NewHealthCheck(*binlogplayer.BinlogPlayerConnTimeout, *retryDelay), initialEndpointFound: make(chan struct{}), } blc.healthCheck.SetListener(blc) blc.shardReplicationWatcher = discovery.NewShardReplicationWatcher(ts, blc.healthCheck, cell, sourceShard.Keyspace, sourceShard.Shard, *healthcheckTopologyRefresh, 5) return blc }