Search in sources :

Example 1 with CloudbreakOrchestratorTimeoutException

use of com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTimeoutException in project cloudbreak by hortonworks.

the class SaltOrchestrator method executeRecipes.

@SuppressFBWarnings("REC_CATCH_EXCEPTION")
private void executeRecipes(GatewayConfig gatewayConfig, Set<Node> allNodes, ExitCriteriaModel exitCriteriaModel, RecipeExecutionPhase phase, boolean forced) throws CloudbreakOrchestratorFailedException, CloudbreakOrchestratorTimeoutException {
    int maxRetry = forced ? maxRetryRecipeForced : maxRetryRecipe;
    try (SaltConnector sc = saltService.createSaltConnector(gatewayConfig)) {
        // add 'recipe' grain to all nodes
        Set<String> targetHostnames = allNodes.stream().map(Node::getHostname).collect(Collectors.toSet());
        saltCommandRunner.runSaltCommand(sc, new GrainAddRunner(targetHostnames, allNodes, "recipes", phase.value()), exitCriteriaModel, maxRetry, exitCriteria);
        Set<String> allHostnames = allNodes.stream().map(Node::getHostname).collect(Collectors.toSet());
        runSyncAll(sc, allHostnames, allNodes, exitCriteriaModel);
        if (phase == PRE_CLOUDERA_MANAGER_START) {
            // Execute highstate before recipe. Otherwise ipa domain names will not be resolvable in recipe scripts.
            runNewService(sc, new HighStateAllRunner(allHostnames, allNodes), exitCriteriaModel, maxRetryRecipe, true);
        } else {
            // Skip highstate and just execute other recipes for performace.
            StateRunner stateAllRunner = new StateRunner(targetHostnames, allNodes, "recipes." + phase.value());
            OrchestratorBootstrap saltJobIdTracker = new SaltJobIdTracker(sc, stateAllRunner);
            Callable<Boolean> saltJobRunBootstrapRunner = saltRunner.runner(saltJobIdTracker, exitCriteria, exitCriteriaModel, maxRetry, false);
            saltJobRunBootstrapRunner.call();
        }
    } catch (CloudbreakOrchestratorTimeoutException e) {
        LOGGER.info("Recipe execution timeout. {}", phase, e);
        throw e;
    } catch (CloudbreakOrchestratorFailedException e) {
        LOGGER.info("Orchestration error occurred during execution of recipes.", e);
        throw e;
    } catch (Exception e) {
        LOGGER.info("Unknown error occurred during execution of recipes.", e);
        throw new CloudbreakOrchestratorFailedException(e.getMessage(), e);
    } finally {
        try (SaltConnector sc = saltService.createSaltConnector(gatewayConfig)) {
            // remove 'recipe' grain from all nodes
            Set<String> targetHostnames = allNodes.stream().map(Node::getHostname).collect(Collectors.toSet());
            saltCommandRunner.runSaltCommand(sc, new GrainRemoveRunner(targetHostnames, allNodes, "recipes", phase.value()), exitCriteriaModel, maxRetry, exitCriteria);
        } catch (Exception e) {
            LOGGER.info("Error occurred during removing recipe roles.", e);
            throw new CloudbreakOrchestratorFailedException(e.getMessage(), e);
        }
    }
}
Also used : CloudbreakOrchestratorTimeoutException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTimeoutException) OrchestratorBootstrap(com.sequenceiq.cloudbreak.orchestrator.OrchestratorBootstrap) SaltJobIdTracker(com.sequenceiq.cloudbreak.orchestrator.salt.poller.SaltJobIdTracker) GrainAddRunner(com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.GrainAddRunner) HighStateAllRunner(com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.HighStateAllRunner) HighStateRunner(com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.HighStateRunner) ParameterizedStateRunner(com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.ParameterizedStateRunner) ConcurrentParameterizedStateRunner(com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.ConcurrentParameterizedStateRunner) StateRunner(com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.StateRunner) SaltConnector(com.sequenceiq.cloudbreak.orchestrator.salt.client.SaltConnector) NotFoundException(com.sequenceiq.cloudbreak.common.exception.NotFoundException) CloudbreakOrchestratorTimeoutException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTimeoutException) CloudbreakOrchestratorException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorException) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) CloudbreakServiceException(com.sequenceiq.cloudbreak.common.exception.CloudbreakServiceException) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) GrainRemoveRunner(com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.GrainRemoveRunner) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings)

Example 2 with CloudbreakOrchestratorTimeoutException

use of com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTimeoutException in project cloudbreak by hortonworks.

the class OrchestratorBootstrapRunner method doCall.

private Boolean doCall() throws CloudbreakOrchestratorCancelledException, CloudbreakOrchestratorFailedException, CloudbreakOrchestratorTimeoutException {
    Boolean success = null;
    int retryCount = 1;
    int errorCount = 1;
    Exception actualException = null;
    String type = orchestratorBootstrap.getClass().getSimpleName().replace("Bootstrap", "");
    long initialStartTime = System.currentTimeMillis();
    while (success == null && belowAttemptThreshold(retryCount, errorCount)) {
        if (isExitNeeded()) {
            LOGGER.debug(exitCriteria.exitMessage());
            throw new CloudbreakOrchestratorCancelledException(exitCriteria.exitMessage());
        }
        long startTime = System.currentTimeMillis();
        try {
            LOGGER.debug("Calling orchestrator bootstrap: {}, additional info: {}", type, orchestratorBootstrap);
            orchestratorBootstrap.call();
            success = Boolean.TRUE;
            String elapsedTimeLog = createElapseTimeLog(initialStartTime, startTime);
            LOGGER.debug("Orchestrator component {} successfully started! {}, " + "additional info: {}", type, elapsedTimeLog, orchestratorBootstrap);
        } catch (CloudbreakOrchestratorTerminateException te) {
            actualException = te;
            success = Boolean.FALSE;
            String elapsedTimeLog = createElapseTimeLog(initialStartTime, startTime);
            LOGGER.info("Failed to execute orchestrator component {}! {}, " + "additional info: {}", type, elapsedTimeLog, orchestratorBootstrap);
        } catch (CloudbreakOrchestratorInProgressException ex) {
            actualException = ex;
            String elapsedTimeLog = createElapseTimeLog(initialStartTime, startTime);
            LOGGER.debug("Orchestrator component {} start in progress, retrying [{}/{}] {}, Reason: {}, additional info: {}", type, retryCount, maxRetryCount, elapsedTimeLog, actualException, orchestratorBootstrap);
            retryCount++;
            if (retryCount <= maxRetryCount) {
                trySleeping();
            } else {
                success = Boolean.FALSE;
            }
        } catch (Exception ex) {
            actualException = ex;
            String elapsedTimeLog = createElapseTimeLog(initialStartTime, startTime);
            LOGGER.debug("Orchestrator component {} failed to start, retrying [{}/{}], error count [{}/{}]. {}, Reason: {}, additional info: {}", type, retryCount, maxRetryCount, errorCount, maxRetryOnError, elapsedTimeLog, actualException, orchestratorBootstrap, actualException);
            retryCount++;
            errorCount++;
            if (belowAttemptThreshold(retryCount, errorCount)) {
                trySleeping();
            } else {
                success = Boolean.FALSE;
            }
        }
    }
    return checkResult(success, retryCount, actualException);
}
Also used : CloudbreakOrchestratorCancelledException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorCancelledException) CloudbreakOrchestratorInProgressException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorInProgressException) CloudbreakOrchestratorCancelledException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorCancelledException) CloudbreakOrchestratorException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorException) CloudbreakOrchestratorInProgressException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorInProgressException) CloudbreakOrchestratorTerminateException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTerminateException) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) CloudbreakOrchestratorTimeoutException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTimeoutException) CloudbreakOrchestratorTerminateException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTerminateException)

Aggregations

CloudbreakOrchestratorException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorException)2 CloudbreakOrchestratorFailedException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException)2 CloudbreakOrchestratorTimeoutException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTimeoutException)2 CloudbreakServiceException (com.sequenceiq.cloudbreak.common.exception.CloudbreakServiceException)1 NotFoundException (com.sequenceiq.cloudbreak.common.exception.NotFoundException)1 OrchestratorBootstrap (com.sequenceiq.cloudbreak.orchestrator.OrchestratorBootstrap)1 CloudbreakOrchestratorCancelledException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorCancelledException)1 CloudbreakOrchestratorInProgressException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorInProgressException)1 CloudbreakOrchestratorTerminateException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorTerminateException)1 SaltConnector (com.sequenceiq.cloudbreak.orchestrator.salt.client.SaltConnector)1 SaltJobIdTracker (com.sequenceiq.cloudbreak.orchestrator.salt.poller.SaltJobIdTracker)1 ConcurrentParameterizedStateRunner (com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.ConcurrentParameterizedStateRunner)1 GrainAddRunner (com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.GrainAddRunner)1 GrainRemoveRunner (com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.GrainRemoveRunner)1 HighStateAllRunner (com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.HighStateAllRunner)1 HighStateRunner (com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.HighStateRunner)1 ParameterizedStateRunner (com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.ParameterizedStateRunner)1 StateRunner (com.sequenceiq.cloudbreak.orchestrator.salt.poller.checker.StateRunner)1 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)1 IOException (java.io.IOException)1