fix: do not block fdbcli from starting if DataDistributionStatus is not available

This commit is contained in:
Evan Tschannen 2019-08-16 18:15:02 -07:00
parent d8ab48ce7f
commit 2a436d5f6f
1 changed files with 5 additions and 1 deletions

View File

@ -1341,13 +1341,17 @@ ACTOR Future<vector<AddressExclusion>> getExcludedServers( Database cx ) {
ACTOR Future<Void> checkDataDistributionStatus(Database cx, bool printWarningOnly) {
state Transaction tr(cx);
state Future<Void> timeoutDelay = printWarningOnly ? delay(2.0) : Never();
loop {
try {
tr.setOption(FDBTransactionOptions::LOCK_AWARE);
state Future<Optional<Value>> overallSwitchF = tr.get(dataDistributionModeKey);
state Future<Optional<Value>> healthyZoneValueF = tr.get(healthyZoneKey);
state Future<Optional<Value>> rebalanceDDIgnoreValueF = tr.get(rebalanceDDIgnoreKey);
wait(success(overallSwitchF) && success(healthyZoneValueF) && success(rebalanceDDIgnoreValueF));
wait(timeoutDelay || (success(overallSwitchF) && success(healthyZoneValueF) && success(rebalanceDDIgnoreValueF)));
if(timeoutDelay.isReady()) {
return Void();
}
if (overallSwitchF.get().present()) {
BinaryReader rd(overallSwitchF.get().get(), Unversioned());
int currentMode;