зеркало из https://github.com/github/vitess-gh.git
discovery: Register stats for Healthcheck struct with a statsSuffix.
This is necessary when multiple Healthcheck structs are instantiated, for example when a vtctl command contacts multiple cells simultaneously. In that case, the stats suffix could be the cell name.
This commit is contained in:
Родитель
be9f19710e
Коммит
8fbd3829d4
|
@ -100,7 +100,7 @@ func main() {
|
|||
|
||||
// vtgate configuration and init
|
||||
resilientSrvTopoServer := vtgate.NewResilientSrvTopoServer(ts, "ResilientSrvTopoServer")
|
||||
healthCheck := discovery.NewHealthCheck(30*time.Second /*connTimeoutTotal*/, 1*time.Millisecond /*retryDelay*/, 1*time.Minute /*healthCheckTimeout*/)
|
||||
healthCheck := discovery.NewHealthCheck(30*time.Second /*connTimeoutTotal*/, 1*time.Millisecond /*retryDelay*/, 1*time.Minute /*healthCheckTimeout*/, "" /* statsSuffix */)
|
||||
tabletTypesToWait := []topodatapb.TabletType{
|
||||
topodatapb.TabletType_MASTER,
|
||||
topodatapb.TabletType_REPLICA,
|
||||
|
|
|
@ -87,7 +87,7 @@ func main() {
|
|||
startServer:
|
||||
resilientSrvTopoServer = vtgate.NewResilientSrvTopoServer(ts, "ResilientSrvTopoServer")
|
||||
|
||||
healthCheck = discovery.NewHealthCheck(*connTimeoutTotal, *healthCheckRetryDelay, *healthCheckTimeout)
|
||||
healthCheck = discovery.NewHealthCheck(*connTimeoutTotal, *healthCheckRetryDelay, *healthCheckTimeout, "" /* statsSuffix */)
|
||||
|
||||
tabletTypes := make([]topodatapb.TabletType, 0, 1)
|
||||
if len(*tabletTypesToWait) != 0 {
|
||||
|
|
|
@ -65,7 +65,7 @@ type HealthCheck interface {
|
|||
}
|
||||
|
||||
// NewHealthCheck creates a new HealthCheck object.
|
||||
func NewHealthCheck(connTimeout time.Duration, retryDelay time.Duration, healthCheckTimeout time.Duration) HealthCheck {
|
||||
func NewHealthCheck(connTimeout time.Duration, retryDelay time.Duration, healthCheckTimeout time.Duration, statsSuffix string) HealthCheck {
|
||||
hc := &HealthCheckImpl{
|
||||
addrToConns: make(map[string]*healthCheckConn),
|
||||
targetToEPs: make(map[string]map[string]map[topodatapb.TabletType][]*topodatapb.EndPoint),
|
||||
|
@ -75,7 +75,7 @@ func NewHealthCheck(connTimeout time.Duration, retryDelay time.Duration, healthC
|
|||
closeChan: make(chan struct{}),
|
||||
}
|
||||
if hcConnCounters == nil {
|
||||
hcConnCounters = stats.NewMultiCountersFunc("HealthcheckConnections", []string{"keyspace", "shardname", "tablettype"}, hc.servingConnStats)
|
||||
hcConnCounters = stats.NewMultiCountersFunc("HealthcheckConnections"+statsSuffix, []string{"keyspace", "shardname", "tablettype"}, hc.servingConnStats)
|
||||
}
|
||||
go func() {
|
||||
// Start another go routine to check timeout.
|
||||
|
|
|
@ -32,7 +32,7 @@ func TestHealthCheck(t *testing.T) {
|
|||
createFakeConn(ep, input)
|
||||
t.Logf(`createFakeConn({Host: "a", PortMap: {"vt": 1}}, c)`)
|
||||
l := newListener()
|
||||
hc := NewHealthCheck(1*time.Millisecond, 1*time.Millisecond, time.Hour).(*HealthCheckImpl)
|
||||
hc := NewHealthCheck(1*time.Millisecond, 1*time.Millisecond, time.Hour, "" /* statsSuffix */).(*HealthCheckImpl)
|
||||
hc.SetListener(l)
|
||||
hc.AddEndPoint("cell", "", ep)
|
||||
t.Logf(`hc = HealthCheck(); hc.AddEndPoint("cell", "", {Host: "a", PortMap: {"vt": 1}})`)
|
||||
|
@ -194,7 +194,7 @@ func TestHealthCheckTimeout(t *testing.T) {
|
|||
createFakeConn(ep, input)
|
||||
t.Logf(`createFakeConn({Host: "a", PortMap: {"vt": 1}}, c)`)
|
||||
l := newListener()
|
||||
hc := NewHealthCheck(1*time.Millisecond, 1*time.Millisecond, timeout).(*HealthCheckImpl)
|
||||
hc := NewHealthCheck(1*time.Millisecond, 1*time.Millisecond, timeout, "" /* statsSuffix */).(*HealthCheckImpl)
|
||||
hc.SetListener(l)
|
||||
hc.AddEndPoint("cell", "", ep)
|
||||
t.Logf(`hc = HealthCheck(); hc.AddEndPoint("cell", "", {Host: "a", PortMap: {"vt": 1}})`)
|
||||
|
|
|
@ -113,7 +113,7 @@ func TestWaitForEndPoints(t *testing.T) {
|
|||
input := make(chan *querypb.StreamHealthResponse)
|
||||
createFakeConn(ep, input)
|
||||
|
||||
hc := NewHealthCheck(1*time.Millisecond, 1*time.Millisecond, 1*time.Hour)
|
||||
hc := NewHealthCheck(1*time.Millisecond, 1*time.Millisecond, 1*time.Hour, "" /* statsSuffix */)
|
||||
hc.AddEndPoint("cell", "", ep)
|
||||
|
||||
// this should time out
|
||||
|
|
|
@ -105,7 +105,7 @@ func newBinlogPlayerController(ts topo.Server, vtClientFactory func() binlogplay
|
|||
dbName: dbName,
|
||||
sourceShard: sourceShard,
|
||||
binlogPlayerStats: binlogplayer.NewStats(),
|
||||
healthCheck: discovery.NewHealthCheck(*binlogplayer.BinlogPlayerConnTimeout, *healthcheckRetryDelay, *healthCheckTimeout),
|
||||
healthCheck: discovery.NewHealthCheck(*binlogplayer.BinlogPlayerConnTimeout, *healthcheckRetryDelay, *healthCheckTimeout, "" /* statsSuffix */),
|
||||
}
|
||||
blc.shardReplicationWatcher = discovery.NewShardReplicationWatcher(ts, blc.healthCheck, cell, sourceShard.Keyspace, sourceShard.Shard, *healthCheckTopologyRefresh, 5)
|
||||
return blc
|
||||
|
|
|
@ -45,7 +45,7 @@ func FindHealthyRdonlyEndPoint(ctx context.Context, wr *wrangler.Wrangler, cell,
|
|||
|
||||
// create a discovery healthcheck, wait for it to have one rdonly
|
||||
// endpoints at this point
|
||||
healthCheck := discovery.NewHealthCheck(*remoteActionsTimeout, *healthcheckRetryDelay, *healthCheckTimeout)
|
||||
healthCheck := discovery.NewHealthCheck(*remoteActionsTimeout, *healthcheckRetryDelay, *healthCheckTimeout, "" /* statsSuffix */)
|
||||
watcher := discovery.NewShardReplicationWatcher(wr.TopoServer(), healthCheck, cell, keyspace, shard, *healthCheckTopologyRefresh, 5 /*topoReadConcurrency*/)
|
||||
defer watcher.Stop()
|
||||
defer healthCheck.Close()
|
||||
|
|
Загрузка…
Ссылка в новой задаче