conductor-oss/conductor · error · TransientException
Failed to remove task definition: %s
Error message
Failed to remove task definition: %s
What it means
CassandraMetadataDAO.removeTaskDef wraps DriverException in a TransientException naming the task definition. Deleting a task def fails at the driver level; this is treated as retriable and the framework RetryTemplate retries it. Note the index row deletion happens separately, so a mid-way failure can leave the def/index momentarily inconsistent until retry succeeds.
Source
Thrown at cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraMetadataDAO.java:159
public TaskDef getTaskDef(String name) {
return getTaskDefFromDB(name);
}
@Override
public List<TaskDef> getAllTaskDefs() {
return getAllTaskDefsFromDB();
}
@Override
public void removeTaskDef(String name) {
try {
recordCassandraDaoRequests("removeTaskDef");
session.execute(deleteTaskDefStatement.bind(name));
} catch (DriverException e) {
Monitors.error(CLASS_NAME, "removeTaskDef");
String errorMsg = String.format("Failed to remove task definition: %s", name);
LOGGER.error(errorMsg, e);
throw new TransientException(errorMsg, e);
}
}
@Override
public void createWorkflowDef(WorkflowDef workflowDef) {
try {
String workflowDefinition = toJson(workflowDef);
if (!session.execute(
insertWorkflowDefStatement.bind(
workflowDef.getName(),
workflowDef.getVersion(),
workflowDefinition))
.wasApplied()) {
throw new ConflictException(
"Workflow: %s, version: %s already exists!",
workflowDef.getName(), workflowDef.getVersion());
}
String workflowDefIndex =View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Verify Cassandra is healthy and the delete consistency is satisfiable.
- Tune DataStax driver pool/timeout settings via cassandra.properties.
- Depend on the framework retry; if it fails through, check the logged DriverException cause.
- After a successful retry, confirm the task def and its index row are both gone.
Defensive patterns
Strategy: retry
Try / catch
RetryTemplate retry = RetryTemplate.builder().retryOn(TransientException.class).maxAttempts(3).noBackoff().build();
retry.execute(ctx -> { metadataDAO.removeTaskDef(name); return null; }); Prevention
- Tune driver delete timeouts for metadata operations.
- Keep the task_def table RF consistent with write consistency.
- After retries succeed, verify both the def row and its index row are removed.
When it happens
Trigger: Calling removeTaskDef(name) and the underlying delete against the task_def table fails: write/delete timeout, node unavailable, consistency not met.
Common situations: Cluster instability during metadata changes, driver pool exhaustion, consistency unreachable during node loss.
Related errors
- Failed to get workflow: %s
- Failed to add event execution for event: %s, handler: %s
- Failed to update event execution for event: %s, handler: %s
- Failed to remove event execution for event: %s, handler: %s
- Failed to fetch event executions for event: %s, handler: %s
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/dc129fac7a4c4cee.
Report an issue: GitHub.