forked from lsmyrnaios/UrlsController
- Avoid sending "cancelShutdown" requests to already shutDown Workers.
- Optimize performance of the code running right before the "postShutdownOrCancelRequestToWorker". - Show which Workers have already shutdown and as a result a "postShutdownOrCancelRequestToWorker" will not be performed on them.
This commit is contained in:
parent
f9c6bad768
commit
54685bbe9a
|
@ -35,24 +35,29 @@ public class ShutdownController {
|
|||
if ( responseEntity != null )
|
||||
return responseEntity;
|
||||
|
||||
String finalMsg = "";
|
||||
if ( shouldShutdownService )
|
||||
finalMsg = "The controller has already received a \"shutdownService\" (which was not canceled afterwards).";
|
||||
else {
|
||||
String endingMsg;
|
||||
if ( shouldShutdownService ) {
|
||||
endingMsg = "The controller has already received a \"shutdownService\" (which was not canceled afterwards).";
|
||||
logger.info(initMsg + endingMsg);
|
||||
} else {
|
||||
shouldShutdownService = true;
|
||||
// Send "shutdownWorker" requests to all Workers.
|
||||
endingMsg = "The service will shutdown, after finishing current work.";
|
||||
logger.info(initMsg + endingMsg);
|
||||
|
||||
// Send "shutdownWorker" requests to all active Workers.
|
||||
for ( String workerId : UrlsController.workersInfoMap.keySet() ) {
|
||||
if ( ! UrlsController.workersInfoMap.get(workerId).getHasShutdown() )
|
||||
shutdownService.postShutdownOrCancelRequestToWorker(workerId, UrlsController.workersInfoMap.get(workerId).getWorkerIP(), false);
|
||||
WorkerInfo workerInfo = UrlsController.workersInfoMap.get(workerId);
|
||||
if ( ! workerInfo.getHasShutdown() ) // A worker may have shutdown on its own (by sending it a shutDown request manually), so it will have told the Controller when it shut down. In case of a Worker-crash, the Controller will not know about it.
|
||||
shutdownService.postShutdownOrCancelRequestToWorker(workerId, workerInfo.getWorkerIP(), false);
|
||||
else
|
||||
logger.warn("Will not post ShutdownRequest to Worker \"" + workerId + "\", since is it has already shutdown.");
|
||||
}
|
||||
|
||||
// That's it for now. The workers may take some hours to finish their work (including delivering the full-text files).
|
||||
// A scheduler monitors the shutdown of the workers. Once all worker have shutdown, the Controller shuts down as well.
|
||||
}
|
||||
|
||||
finalMsg += "The service will shutdown, after finishing current work.";
|
||||
logger.info(initMsg + finalMsg);
|
||||
return ResponseEntity.ok().body(finalMsg + "\n");
|
||||
return ResponseEntity.ok().body(endingMsg + "\n");
|
||||
}
|
||||
|
||||
|
||||
|
@ -65,13 +70,19 @@ public class ShutdownController {
|
|||
return responseEntity;
|
||||
|
||||
shouldShutdownService = false;
|
||||
// Send "cancelShutdownWorker" requests to all Workers.
|
||||
for ( String workerId : UrlsController.workersInfoMap.keySet() )
|
||||
shutdownService.postShutdownOrCancelRequestToWorker(workerId, UrlsController.workersInfoMap.get(workerId).getWorkerIP(), true);
|
||||
String endingMsg = "Any previous \"shutdownService\"-request is canceled.";
|
||||
logger.info(initMsg + endingMsg);
|
||||
|
||||
String finalMsg = "Any previous \"shutdownService\"-request is canceled.";
|
||||
logger.info(initMsg + finalMsg);
|
||||
return ResponseEntity.ok().body(finalMsg + "\n");
|
||||
// Send "cancelShutdownWorker" requests to all active Workers.
|
||||
for ( String workerId : UrlsController.workersInfoMap.keySet() ) {
|
||||
WorkerInfo workerInfo = UrlsController.workersInfoMap.get(workerId);
|
||||
if ( ! workerInfo.getHasShutdown() ) // A worker may have shutdown on its own (by sending it a shutDown request manually), so it will have told the Controller when it shut down. In case of a Worker-crash, the Controller will not know about it.
|
||||
shutdownService.postShutdownOrCancelRequestToWorker(workerId, workerInfo.getWorkerIP(), true);
|
||||
else
|
||||
logger.warn("Will not post CancelShutdownRequest to Worker \"" + workerId + "\", since is it has already shutdown.");
|
||||
}
|
||||
|
||||
return ResponseEntity.ok().body(endingMsg + "\n");
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue