private void completeCancelTask(ClosureDescription closureDesc, Closure closure) { String errorMsg = "Configured timeout of [%s] seconds has expired. Closure %s is" + " cancelled."; logInfo(errorMsg, closureDesc.resources.timeoutSeconds, closure.documentSelfLink); closure.state = TaskStage.CANCELLED; closure.errorMsg = String.format(errorMsg, closureDesc.resources.timeoutSeconds, closure.documentSelfLink); closure.endTimeMillis = System.currentTimeMillis(); sendSelfPatch(closure); getExecutionDriver(closureDesc) .cleanClosure(closure, (error) -> logWarning("Unable to clean resources for %s", closure.documentSelfLink)); }
private void handleReadyState(Operation op, Closure closure, ClosureDescription closureDesc) { ExecutionDriver execDriver = getExecutionDriver(closureDesc); if (execDriver == null) { logWarning("No exec driver found"); op.fail(new Exception("No execution driver available.")); return; } sendSelfPatch(closure); String token = getToken(op); execDriver.executeClosure(closure, closureDesc, token, (error) -> { if (error != null) { closure.state = TaskStage.FAILED; closure.errorMsg = error.getMessage(); sendSelfPatch(closure); } }); this.setState(op, closure); op.setBody(closure).complete(); }
private void fetchLogs(Closure closure, Runnable operation) { if (closure.resourceLinks == null || closure.resourceLinks.size() <= 0) { return; } String resourceLink = closure.resourceLinks.iterator().next(); String containerId = UriUtils.getLastPathSegment(resourceLink); String logsURI = ManagementUriParts.CONTAINER_LOGS + "?id=" + containerId; sendRequest(Operation .createGet(this, logsURI) .setCompletion((op, ex) -> { if (ex != null) { logWarning("Failed to fetch logs for closure! %s Reason: %s", closure.documentSelfLink, ex.getMessage()); } else { logInfo("Logs fetched successfully for closure: %s", closure.documentSelfLink); LogServiceState logState = op.getBody(LogServiceState.class); byte[] fetchedLogs = shrinkToMaxAllowedSize(logState.logs); if (shouldUpdateLogs(closure.logs, fetchedLogs)) { closure.logs = fetchedLogs; sendSelfPatch(closure); } operation.run(); } })); }