Merge pull request #2817 from etschannen/feature-fix-0-left
fix: do not use priority 0 left when calculating priorities for empty teams
This commit is contained in:
commit
682b9faa1a
|
@ -2746,7 +2746,7 @@ ACTOR Future<Void> serverTeamRemover(DDTeamCollection* self) {
|
|||
ACTOR Future<Void> teamTracker(DDTeamCollection* self, Reference<TCTeamInfo> team, bool badTeam, bool redundantTeam) {
|
||||
state int lastServersLeft = team->size();
|
||||
state bool lastAnyUndesired = false;
|
||||
state bool logTeamEvents = g_network->isSimulated() || !badTeam;
|
||||
state bool logTeamEvents = g_network->isSimulated() || !badTeam || team->size() <= self->configuration.storageTeamSize;
|
||||
state bool lastReady = false;
|
||||
state bool lastHealthy;
|
||||
state bool lastOptimal;
|
||||
|
@ -2789,6 +2789,10 @@ ACTOR Future<Void> teamTracker(DDTeamCollection* self, Reference<TCTeamInfo> tea
|
|||
}
|
||||
}
|
||||
|
||||
if(serversLeft == 0) {
|
||||
logTeamEvents = true;
|
||||
}
|
||||
|
||||
// Failed server should not trigger DD if SS failures are set to be ignored
|
||||
if (!badTeam && self->healthyZone.get().present() && (self->healthyZone.get().get() == ignoreSSFailuresZoneString)) {
|
||||
ASSERT_WE_THINK(serversLeft == self->configuration.storageTeamSize);
|
||||
|
@ -2917,7 +2921,7 @@ ACTOR Future<Void> teamTracker(DDTeamCollection* self, Reference<TCTeamInfo> tea
|
|||
// t is the team in primary DC or the remote DC
|
||||
auto& t = j < teams.first.size() ? teams.first[j] : teams.second[j-teams.first.size()];
|
||||
if( !t.servers.size() ) {
|
||||
maxPriority = SERVER_KNOBS->PRIORITY_TEAM_0_LEFT;
|
||||
maxPriority = std::max( maxPriority, SERVER_KNOBS->PRIORITY_POPULATE_REGION );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -3946,7 +3950,7 @@ ACTOR Future<Void> dataDistributionTeamCollection(
|
|||
.detail("StorageTeamSize", self->configuration.storageTeamSize)
|
||||
.detail("HighestPriority", highestPriority)
|
||||
.trackLatest(self->primary ? "TotalDataInFlight" : "TotalDataInFlightRemote");
|
||||
loggingTrigger = delay( SERVER_KNOBS->DATA_DISTRIBUTION_LOGGING_INTERVAL );
|
||||
loggingTrigger = delay( SERVER_KNOBS->DATA_DISTRIBUTION_LOGGING_INTERVAL, TaskPriority::FlushTrace );
|
||||
}
|
||||
when( wait( self->serverTrackerErrorOut.getFuture() ) ) {} // Propagate errors from storageServerTracker
|
||||
when( wait( error ) ) {}
|
||||
|
|
|
@ -1491,7 +1491,7 @@ ACTOR Future<Void> dataDistributionQueue(
|
|||
Promise<int64_t> req;
|
||||
getAverageShardBytes.send( req );
|
||||
|
||||
recordMetrics = delay(SERVER_KNOBS->DD_QUEUE_LOGGING_INTERVAL);
|
||||
recordMetrics = delay(SERVER_KNOBS->DD_QUEUE_LOGGING_INTERVAL, TaskPriority::FlushTrace);
|
||||
|
||||
int highestPriorityRelocation = 0;
|
||||
for( auto it = self.priority_relocations.begin(); it != self.priority_relocations.end(); ++it ) {
|
||||
|
|
|
@ -764,7 +764,7 @@ ACTOR Future<Void> dataDistributionTracker(
|
|||
.detail("SystemSizeBytes", self.systemSizeEstimate)
|
||||
.trackLatest( "DDTrackerStats" );
|
||||
|
||||
loggingTrigger = delay(SERVER_KNOBS->DATA_DISTRIBUTION_LOGGING_INTERVAL);
|
||||
loggingTrigger = delay(SERVER_KNOBS->DATA_DISTRIBUTION_LOGGING_INTERVAL, TaskPriority::FlushTrace);
|
||||
}
|
||||
when( GetMetricsRequest req = waitNext( getShardMetrics.getFuture() ) ) {
|
||||
self.sizeChanges.add( fetchShardMetrics( &self, req ) );
|
||||
|
|
Loading…
Reference in New Issue