Revert "Fixed problem with master being recruited on excluded servers"
This reverts commit 1f7b624734a8ad6e896dd3f01f9cdf334ca62486.
This commit is contained in:
parent
696d432462
commit
0949c4be65
fdbserver
|
@ -188,13 +188,13 @@ public:
|
|||
}
|
||||
|
||||
//FIXME: get master in the same datacenter as the proxies and resolvers for ratekeeper, however this is difficult because the master is recruited before we know the cluster's configuration
|
||||
std::pair<WorkerInterface, ProcessClass> getMasterWorker( DatabaseConfiguration const& conf, bool checkStable = false ) {
|
||||
std::pair<WorkerInterface, ProcessClass> getMasterWorker( bool checkStable = false ) {
|
||||
ProcessClass::Fitness bestFit = ProcessClass::NeverAssign;
|
||||
Optional<std::pair<WorkerInterface, ProcessClass>> bestInfo;
|
||||
int numEquivalent = 1;
|
||||
for( auto& it : id_worker ) {
|
||||
auto fit = it.second.processClass.machineClassFitness( ProcessClass::Master );
|
||||
if( workerAvailable(it.second, checkStable) && !conf.isExcludedServer(it.second.interf.address()) && fit != ProcessClass::NeverAssign ) {
|
||||
if( workerAvailable( it.second, checkStable ) ) {
|
||||
ProcessClass::Fitness fit = it.second.processClass.machineClassFitness( ProcessClass::Master );
|
||||
if( fit < bestFit ) {
|
||||
bestInfo = std::make_pair(it.second.interf, it.second.processClass);
|
||||
bestFit = fit;
|
||||
|
@ -650,7 +650,7 @@ std::vector<std::pair<WorkerInterface, ProcessClass>> getWorkersForTlogsAcrossDa
|
|||
id_used[masterProcessId]++;
|
||||
|
||||
ProcessClass::Fitness oldMasterFit = masterWorker->second.processClass.machineClassFitness( ProcessClass::Master );
|
||||
ProcessClass::Fitness newMasterFit = getMasterWorker(db.config, true).second.machineClassFitness( ProcessClass::Master );
|
||||
ProcessClass::Fitness newMasterFit = getMasterWorker(true).second.machineClassFitness( ProcessClass::Master );
|
||||
|
||||
if(dbi.recoveryState < RecoveryState::FULLY_RECOVERED) {
|
||||
if(oldMasterFit > newMasterFit) {
|
||||
|
@ -781,7 +781,7 @@ ACTOR Future<Void> clusterWatchDatabase( ClusterControllerData* cluster, Cluster
|
|||
try {
|
||||
state double recoveryStart = now();
|
||||
TraceEvent("CCWDB", cluster->id).detail("Recruiting", "Master");
|
||||
state std::pair<WorkerInterface, ProcessClass> masterWorker = cluster->getMasterWorker(db->config);
|
||||
state std::pair<WorkerInterface, ProcessClass> masterWorker = cluster->getMasterWorker();
|
||||
if( masterWorker.second.machineClassFitness( ProcessClass::Master ) > SERVER_KNOBS->EXPECTED_MASTER_FITNESS && now() - cluster->startTime < SERVER_KNOBS->WAIT_FOR_GOOD_RECRUITMENT_DELAY ) {
|
||||
TraceEvent("CCWDB", cluster->id).detail("Fitness", masterWorker.second.machineClassFitness( ProcessClass::Master ));
|
||||
Void _ = wait( delay(SERVER_KNOBS->ATTEMPT_RECRUITMENT_DELAY) );
|
||||
|
|
Loading…
Reference in New Issue