Finds and returns a new process for role
| 493 | |
| 494 | // Finds and returns a new process for role |
| 495 | WorkerDetails findNewProcessForSingleton(ClusterControllerData* self, |
| 496 | const ProcessClass::ClusterRole role, |
| 497 | std::map<Optional<Standalone<StringRef>>, int>& id_used) { |
| 498 | // find new process in cluster for role |
| 499 | WorkerDetails newWorker = |
| 500 | self->getWorkerForRoleInDatacenter( |
| 501 | self->clusterControllerDcId, role, ProcessClass::NeverAssign, self->db.config, id_used, {}, true) |
| 502 | .worker; |
| 503 | |
| 504 | // check if master's process is actually better suited for role |
| 505 | if (self->onMasterIsBetter(newWorker, role)) { |
| 506 | newWorker = self->id_worker[self->masterProcessId.get()].details; |
| 507 | } |
| 508 | |
| 509 | // acknowledge that the pid is now potentially used by this role as well |
| 510 | id_used[newWorker.interf.locality.processId()]++; |
| 511 | |
| 512 | return newWorker; |
| 513 | } |
| 514 | |
| 515 | // Return best possible fitness for singleton. Note that lower fitness is better. |
| 516 | ProcessClass::Fitness findBestFitnessForSingleton(const ClusterControllerData* self, |
no test coverage detected