use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class SdxPollerProvider method upgradeCcmPoller.
public AttemptResult<Void> upgradeCcmPoller(Long envId, String datalakeCrn) {
if (PollGroup.CANCELLED.equals(EnvironmentInMemoryStateStore.get(envId))) {
String message = "SDX polling cancelled in inmemory store, environment id: " + envId;
LOGGER.info(message);
throw new PollerStoppedException(message);
}
OperationView operation = sdxService.getOperation(datalakeCrn, false);
OperationProgressStatus progressStatus = operation.getProgressStatus();
switch(progressStatus) {
case CANCELLED:
return AttemptResults.breakFor("SDX Upgrade CCM cancelled for datalake CRN " + datalakeCrn);
case FAILED:
return AttemptResults.breakFor("SDX Upgrade CCM failed for environment CRN " + datalakeCrn);
case FINISHED:
return AttemptResults.justFinish();
case RUNNING:
return AttemptResults.justContinue();
default:
return AttemptResults.breakFor("SDX Upgrade CCM is in ambiguous state " + progressStatus + " for environment CRN " + datalakeCrn);
}
}
use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class RdsStartHandler method doAccept.
@Override
protected Selectable doAccept(HandlerEvent<RdsWaitingToStartRequest> event) {
RdsWaitingToStartRequest rdsWaitRequest = event.getData();
Long sdxId = rdsWaitRequest.getResourceId();
String userId = rdsWaitRequest.getUserId();
Selectable response;
try {
sdxClusterRepository.findById(sdxId).ifPresent(sdxCluster -> {
if (databasePauseSupportService.isDatabasePauseSupported(sdxCluster)) {
sdxStatusService.setStatusForDatalakeAndNotify(DatalakeStatusEnum.EXTERNAL_DATABASE_START_IN_PROGRESS, "External database start in progress", sdxCluster);
LOGGER.debug("start polling database start for sdx: {}", sdxId);
databaseService.start(sdxCluster);
} else {
LOGGER.debug("skipping start of database for sdx: {}", sdxId);
}
sdxStatusService.setStatusForDatalakeAndNotify(DatalakeStatusEnum.EXTERNAL_DATABASE_STARTED, "External database started", sdxCluster);
});
response = new RdsStartSuccessEvent(sdxId, userId);
} catch (UserBreakException userBreakException) {
LOGGER.error("Database polling exited before timeout. Cause: ", userBreakException);
response = new SdxStartFailedEvent(sdxId, userId, userBreakException);
} catch (PollerStoppedException pollerStoppedException) {
LOGGER.error("Database poller stopped for sdx: {}", sdxId, pollerStoppedException);
response = new SdxStartFailedEvent(sdxId, userId, new PollerStoppedException("Database start timed out after " + durationInMinutes + " minutes"));
} catch (PollerException exception) {
LOGGER.error("Database polling failed for sdx: {}", sdxId, exception);
response = new SdxStartFailedEvent(sdxId, userId, exception);
} catch (Exception anotherException) {
LOGGER.error("Something wrong happened in sdx database start wait phase", anotherException);
response = new SdxStartFailedEvent(sdxId, userId, anotherException);
}
return response;
}
use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class SdxStartWaitHandler method doAccept.
@Override
protected Selectable doAccept(HandlerEvent<SdxStartWaitRequest> event) {
SdxStartWaitRequest waitRequest = event.getData();
Long sdxId = waitRequest.getResourceId();
String userId = waitRequest.getUserId();
Selectable response;
try {
LOGGER.debug("Start polling stack start process for id: {}", sdxId);
PollingConfig pollingConfig = new PollingConfig(sleepTimeInSec, TimeUnit.SECONDS, durationInMinutes, TimeUnit.MINUTES);
sdxStartService.waitCloudbreakCluster(sdxId, pollingConfig);
response = new SdxStartSuccessEvent(sdxId, userId);
} catch (UserBreakException userBreakException) {
LOGGER.error("Start polling exited before timeout. Cause: ", userBreakException);
response = new SdxStartFailedEvent(sdxId, userId, userBreakException);
} catch (PollerStoppedException pollerStoppedException) {
LOGGER.error("Start poller stopped for stack: {}", sdxId);
response = new SdxStartFailedEvent(sdxId, userId, new PollerStoppedException("Datalake start timed out after " + durationInMinutes + " minutes"));
} catch (PollerException exception) {
LOGGER.error("Start polling failed for stack: {}", sdxId);
response = new SdxStartFailedEvent(sdxId, userId, exception);
}
return response;
}
use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class UpgradeCcmStackHandler method doAccept.
@Override
protected Selectable doAccept(HandlerEvent<UpgradeCcmStackRequest> event) {
UpgradeCcmStackRequest request = event.getData();
SdxCluster sdxCluster = sdxService.getById(request.getResourceId());
Long sdxId = request.getResourceId();
String userId = request.getUserId();
Selectable response;
try {
LOGGER.debug("Initiating CCM upgrade and start polling for SDX: {}", sdxCluster.getName());
PollingConfig pollingConfig = new PollingConfig(sleepTimeInSec, TimeUnit.SECONDS, durationInMinutes, TimeUnit.MINUTES);
ccmUpgradeService.initAndWaitForStackUpgrade(sdxCluster, pollingConfig);
response = new UpgradeCcmSuccessEvent(sdxId, userId);
} catch (UserBreakException userBreakException) {
LOGGER.error("Upgrade CCM poller exited before timeout. Cause: ", userBreakException);
response = new UpgradeCcmFailedEvent(sdxId, userId, userBreakException);
} catch (PollerStoppedException pollerStoppedException) {
LOGGER.error("Upgrade CCM poller stopped for stack: {}", sdxId);
response = new UpgradeCcmFailedEvent(sdxId, userId, new PollerStoppedException("Upgrade CCM timed out after " + durationInMinutes + " minutes"));
} catch (PollerException exception) {
LOGGER.error("Upgrade CCM polling failed for stack: {}", sdxId);
response = new UpgradeCcmFailedEvent(sdxId, userId, exception);
}
return response;
}
use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class SdxStopAllDatahubHandler method doAccept.
@Override
protected Selectable doAccept(HandlerEvent<SdxStopAllDatahubRequest> event) {
SdxStopAllDatahubRequest stopAllDatahubRequest = event.getData();
Long sdxId = stopAllDatahubRequest.getResourceId();
String userId = stopAllDatahubRequest.getUserId();
Selectable response;
try {
LOGGER.debug("Polling is started for the operation of stopping all datahubs clusters for sdx with id: {}", sdxId);
sdxStopService.stopAllDatahub(sdxId);
response = new SdxEvent(SdxStopEvent.SDX_STOP_IN_PROGRESS_EVENT.event(), sdxId, userId);
} catch (UserBreakException userBreakException) {
LOGGER.error("Polling exited before timeout. Cause ", userBreakException);
response = new SdxStopFailedEvent(sdxId, userId, userBreakException);
} catch (PollerStoppedException pollerStoppedException) {
LOGGER.error("Poller stopped for stack: " + sdxId, pollerStoppedException);
response = new SdxStopFailedEvent(sdxId, userId, new PollerStoppedException("Datalake stop timed out after " + DURATION_IN_MINUTES + " minutes", pollerStoppedException));
} catch (PollerException exception) {
LOGGER.error("Polling failed for stack: {}", sdxId);
response = new SdxStopFailedEvent(sdxId, userId, exception);
} catch (BadRequestException badRequest) {
LOGGER.error("Datahub stop failed.", badRequest);
response = new SdxStopFailedEvent(sdxId, userId, badRequest);
}
return response;
}
Aggregations