World: fixed PopulationTask failed assumption that generator is always registered

if the worker selected previously had a generator registered, but has since been shutdown, the workerStartHook that cleans up generatorRegisteredWorkers won't yet have been called.
This results in the worker being started by the submission of PopulationTask, and the generator doesn't get preemptively registered.
This commit is contained in:
Dylan K. Taylor 2021-11-02 16:58:14 +00:00
parent 275f145418
commit 38f97bed52
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -2904,6 +2904,10 @@ class World implements ChunkManager{
}
);
$workerId = $this->workerPool->selectWorker();
if(!isset($this->workerPool->getRunningWorkers()[$workerId]) && isset($this->generatorRegisteredWorkers[$workerId])){
$this->logger->debug("Selected worker $workerId previously had generator registered, but is now offline");
unset($this->generatorRegisteredWorkers[$workerId]);
}
if(!isset($this->generatorRegisteredWorkers[$workerId])){
$this->registerGeneratorToWorker($workerId);
}