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

  1. Verify Cassandra is healthy and the delete consistency is satisfiable.
  2. Tune DataStax driver pool/timeout settings via cassandra.properties.
  3. Depend on the framework retry; if it fails through, check the logged DriverException cause.
  4. 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

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


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/dc129fac7a4c4cee. Report an issue: GitHub.