Client resends health metrics request when proxies change

This commit is contained in:
Trevor Clinkenbeard 2019-02-22 12:30:36 -08:00
parent 2a20ea6ac5
commit edc0c5bf2b
1 changed files with 26 additions and 12 deletions

View File

@ -499,22 +499,36 @@ ACTOR static Future<Void> updateHealthMetricsActor(DatabaseContext *cx) {
{
when(wait(timer))
{
state GetHealthMetricsReply rep =
wait(loadBalance(cx->getMasterProxies(),
&MasterProxyInterface::getHealthMetrics,
GetHealthMetricsRequest()));
cx->healthMetrics.update(rep.healthMetrics, false, true);
loop {
choose {
when(wait(cx->onMasterProxiesChanged())) {}
when(state GetHealthMetricsReply rep =
wait(loadBalance(cx->getMasterProxies(),
&MasterProxyInterface::getHealthMetrics,
GetHealthMetricsRequest()))) {
cx->healthMetrics.update(rep.healthMetrics, false, true);
break;
}
}
}
}
when(wait(detailedTimer))
{
ASSERT(sendDetailedHealthMetrics);
state GetDetailedHealthMetricsReply detailedRep = wait(
loadBalance(cx->getMasterProxies(),
&MasterProxyInterface::getDetailedHealthMetrics,
GetDetailedHealthMetricsRequest()));
cx->healthMetrics.update(detailedRep.getHealthMetrics(), true, true);
detailedTimer = delay(
CLIENT_KNOBS->UPDATE_DETAILED_HEALTH_METRICS_INTERVAL);
loop {
choose {
when(wait(cx->onMasterProxiesChanged())) {}
when(state GetDetailedHealthMetricsReply detailedRep =
wait(loadBalance(cx->getMasterProxies(),
&MasterProxyInterface::getDetailedHealthMetrics,
GetDetailedHealthMetricsRequest()))) {
cx->healthMetrics.update(detailedRep.getHealthMetrics(), true, true);
detailedTimer = delay(
CLIENT_KNOBS->UPDATE_DETAILED_HEALTH_METRICS_INTERVAL);
break;
}
}
}
}
}
}