diff --git a/fdbserver/TagPartitionedLogSystem.actor.cpp b/fdbserver/TagPartitionedLogSystem.actor.cpp index 9a8e644edf..41d9d641ea 100644 --- a/fdbserver/TagPartitionedLogSystem.actor.cpp +++ b/fdbserver/TagPartitionedLogSystem.actor.cpp @@ -331,17 +331,19 @@ struct TagPartitionedLogSystem : ILogSystem, ReferenceCounted confirmEpochLive_internal(TagPartitionedLogSystem* self, Optional debugID) { state vector> alive; + int numPresent = 0; for(auto& t : self->logServers) { if( t->get().present() ) { alive.push_back( brokenPromiseToNever( t->get().interf().confirmRunning.getReply( TLogConfirmRunningRequest(debugID), TaskTLogConfirmRunningReply ) ) ); + numPresent++; } else { alive.push_back( Never() ); } } - Void _ = wait( quorum( alive, std::min(self->tLogReplicationFactor, (int)alive.size() - self->tLogWriteAntiQuorum) ) ); + Void _ = wait( quorum( alive, std::min(self->tLogReplicationFactor, numPresent - self->tLogWriteAntiQuorum) ) ); loop { LocalityGroup locked; @@ -965,7 +967,7 @@ struct TagPartitionedLogSystem : ILogSystem, ReferenceCounted 0 && false /* TODO(alexmiller) */ ) { + if (!valid && prevState.tLogWriteAntiQuorum > 0 ) { valid = !validateAllCombinations(unused, filter_true, prevState.tLogPolicy, filter_false, prevState.tLogWriteAntiQuorum, false); } return valid; @@ -1046,7 +1048,7 @@ struct TagPartitionedLogSystem : ILogSystem, ReferenceCounted