conductor-oss/conductor · error · NotFoundException
No such taskType found by name: %s
Error message
No such taskType found by name: %s
What it means
Thrown by MetadataServiceImpl.getTaskDef when metadataDAO.getTaskDef(taskType) returns null, meaning no TaskDef is registered under that name. It surfaces as an HTTP 404 (NotFoundException maps to NOT_FOUND) when a client requests a task definition that does not exist in the metadata store. The placeholder %s is filled with the requested taskType name.
Source
Thrown at core/src/main/java/com/netflix/conductor/service/MetadataServiceImpl.java:118
metadataDAO.removeTaskDef(taskType);
metadataChangeListener.onTaskDefUnregistered(taskType);
}
/**
* @return List of all the registered tasks
*/
public List<TaskDef> getTaskDefs() {
return metadataDAO.getAllTaskDefs();
}
/**
* @param taskType Task to retrieve
* @return Task Definition
*/
public TaskDef getTaskDef(String taskType) {
TaskDef taskDef = metadataDAO.getTaskDef(taskType);
if (taskDef == null) {
throw new NotFoundException("No such taskType found by name: %s", taskType);
}
return taskDef;
}
/**
* @param workflowDef Workflow definition to be updated
*/
public void updateWorkflowDef(WorkflowDef workflowDef) {
workflowDef.setUpdateTime(System.currentTimeMillis());
metadataDAO.updateWorkflowDef(workflowDef);
metadataChangeListener.onWorkflowDefUpdated(workflowDef);
}
/**
* @param workflowDefList Workflow definitions to be updated.
*/
public BulkResponse<String> updateWorkflowDef(List<WorkflowDef> workflowDefList) {
BulkResponse<String> bulkResponse = new BulkResponse<>();View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Verify the exact taskType spelling against registered defs via GET /api/metadata/taskdefs (list all).
- Register the missing definition with POST /api/metadata/taskdefs using the correct name.
- If the def was deleted, re-register it from your definition-as-code source.
- Confirm you are pointed at the correct cluster/environment metadata store.
Example fix
// before
TaskDef def = metadataService.getTaskDef("myTaskX"); // throws
// after
List<TaskDef> all = metadataService.getTaskDefs();
boolean exists = all.stream().anyMatch(t -> t.getName().equals("myTask"));
TaskDef def = exists ? metadataService.getTaskDef("myTask") : null; Defensive patterns
Strategy: validation
Validate before calling
List<TaskDef> defs = metadataService.getTaskDefs();
boolean exists = defs.stream().anyMatch(t -> t.getName().equals(taskType));
if (!exists) {
// register or skip
} Try / catch
try {
TaskDef def = metadataService.getTaskDef(taskType);
} catch (NotFoundException e) {
// task not registered; handle gracefully
} Prevention
- Validate task names against getTaskDefs() before lookup
- Keep task definitions under version control and register them on deploy
When it happens
Trigger: Calling GET /api/metadata/taskdefs/{taskType} with a name that was never registered, or that was unregistered. Also triggered internally by any code path that resolves a TaskDef by name and finds nothing (e.g. workflow referencing a task whose definition was removed).
Common situations: Typo in the taskType path segment; the task definition was registered under a different environment/cluster; the task def was deleted via unregisterTaskDef; a recently deployed workflow references a task name that has not yet been registered in that environment.
Related errors
- Skill file not found: {cleanPath}
- No such workflow found by name: %s, version: %d
- Workflow with id: %s not found.
- File not found: {}
- Agent not found: ${name}
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/e9f90659ac607927.
Report an issue: GitHub.