use of com.netflix.conductor.core.execution.ApplicationException in project conductor by Netflix.
the class CassandraExecutionDAO method addEventExecution.
@Override
public boolean addEventExecution(EventExecution eventExecution) {
try {
String jsonPayload = toJson(eventExecution);
recordCassandraDaoEventRequests("addEventExecution", eventExecution.getEvent());
recordCassandraDaoPayloadSize("addEventExecution", jsonPayload.length(), eventExecution.getEvent(), "n/a");
return session.execute(insertEventExecutionStatement.bind(eventExecution.getMessageId(), eventExecution.getName(), eventExecution.getId(), jsonPayload)).wasApplied();
} catch (Exception e) {
Monitors.error(CLASS_NAME, "addEventExecution");
String errorMsg = String.format("Failed to add event execution for event: %s, handler: %s", eventExecution.getEvent(), eventExecution.getName());
LOGGER.error(errorMsg, e);
throw new ApplicationException(Code.BACKEND_ERROR, errorMsg);
}
}
use of com.netflix.conductor.core.execution.ApplicationException in project conductor by Netflix.
the class AzureBlobPayloadStorage method getLocation.
/**
* @param operation the type of {@link Operation} to be performed
* @param payloadType the {@link PayloadType} that is being accessed
* @return a {@link ExternalStorageLocation} object which contains the pre-signed URL and the azure blob name
* for the json payload
*/
@Override
public ExternalStorageLocation getLocation(Operation operation, PayloadType payloadType, String path) {
try {
ExternalStorageLocation externalStorageLocation = new ExternalStorageLocation();
String objectKey;
if (StringUtils.isNotBlank(path)) {
objectKey = path;
} else {
objectKey = getObjectKey(payloadType);
}
externalStorageLocation.setPath(objectKey);
BlockBlobClient blockBlobClient = blobContainerClient.getBlobClient(objectKey).getBlockBlobClient();
String blobUrl = Utility.urlDecode(blockBlobClient.getBlobUrl());
if (sasTokenCredential != null) {
blobUrl = blobUrl + "?" + sasTokenCredential.getSasToken();
} else {
BlobSasPermission blobSASPermission = new BlobSasPermission();
if (operation.equals(Operation.READ)) {
blobSASPermission.setReadPermission(true);
} else if (operation.equals(Operation.WRITE)) {
blobSASPermission.setWritePermission(true);
blobSASPermission.setCreatePermission(true);
}
BlobServiceSasSignatureValues blobServiceSasSignatureValues = new BlobServiceSasSignatureValues(OffsetDateTime.now(ZoneOffset.UTC).plusSeconds(expirationSec), blobSASPermission);
blobUrl = blobUrl + "?" + blockBlobClient.generateSas(blobServiceSasSignatureValues);
}
externalStorageLocation.setUri(blobUrl);
return externalStorageLocation;
} catch (BlobStorageException e) {
String msg = "Error communicating with Azure";
logger.error(msg, e);
throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, msg, e);
}
}
use of com.netflix.conductor.core.execution.ApplicationException in project conductor by Netflix.
the class CassandraMetadataDAO method getWorkflowDef.
@Override
public Optional<WorkflowDef> getWorkflowDef(String name, int version) {
try {
recordCassandraDaoRequests("getWorkflowDef");
ResultSet resultSet = session.execute(selectWorkflowDefStatement.bind(name, version));
WorkflowDef workflowDef = Optional.ofNullable(resultSet.one()).map(row -> readValue(row.getString(WORKFLOW_DEFINITION_KEY), WorkflowDef.class)).orElse(null);
return Optional.ofNullable(workflowDef);
} catch (Exception e) {
Monitors.error(CLASS_NAME, "getTaskDef");
String errorMsg = String.format("Error fetching workflow def: %s/%d", name, version);
LOGGER.error(errorMsg, e);
throw new ApplicationException(Code.BACKEND_ERROR, errorMsg, e);
}
}
use of com.netflix.conductor.core.execution.ApplicationException in project conductor by Netflix.
the class CassandraMetadataDAO method getTaskDefFromDB.
private TaskDef getTaskDefFromDB(String name) {
try {
ResultSet resultSet = session.execute(selectTaskDefStatement.bind(name));
recordCassandraDaoRequests("getTaskDef");
return Optional.ofNullable(resultSet.one()).map(row -> readValue(row.getString(TASK_DEFINITION_KEY), TaskDef.class)).orElse(null);
} catch (Exception e) {
Monitors.error(CLASS_NAME, "getTaskDef");
String errorMsg = String.format("Failed to get task def: %s", name);
LOGGER.error(errorMsg, e);
throw new ApplicationException(Code.BACKEND_ERROR, errorMsg, e);
}
}
use of com.netflix.conductor.core.execution.ApplicationException in project conductor by Netflix.
the class CassandraMetadataDAO method removeWorkflowDef.
@Override
public void removeWorkflowDef(String name, Integer version) {
try {
session.execute(deleteWorkflowDefStatement.bind(name, version));
session.execute(deleteWorkflowDefIndexStatement.bind(WORKFLOW_DEF_INDEX_KEY, getWorkflowDefIndexValue(name, version)));
} catch (Exception e) {
Monitors.error(CLASS_NAME, "removeWorkflowDef");
String errorMsg = String.format("Failed to remove workflow definition: %s/%d", name, version);
LOGGER.error(errorMsg, e);
throw new ApplicationException(Code.BACKEND_ERROR, errorMsg, e);
}
}
Aggregations