{"record":{"id":"70c44848614c10f2","repo":"apache/dolphinscheduler","slug":"invalid-status-status","errorCode":null,"errorMessage":"invalid status : <status>","messagePattern":"invalid status : <status>","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TaskGroupQueueStatus.java","lineNumber":54,"sourceCode":"    private final String descp;\n    private static HashMap<Integer, TaskGroupQueueStatus> STATUS_MAP = new HashMap<>();\n\n    static {\n        for (TaskGroupQueueStatus taskGroupQueueStatus : TaskGroupQueueStatus.values()) {\n            STATUS_MAP.put(taskGroupQueueStatus.code, taskGroupQueueStatus);\n        }\n    }\n\n    TaskGroupQueueStatus(int code, String descp) {\n        this.code = code;\n        this.descp = descp;\n    }\n\n    public static TaskGroupQueueStatus of(int status) {\n        if (STATUS_MAP.containsKey(status)) {\n            return STATUS_MAP.get(status);\n        }\n        throw new IllegalArgumentException(\"invalid status : \" + status);\n    }\n\n    public int getCode() {\n        return code;\n    }\n\n    public String getDescp() {\n        return descp;\n    }\n}\n","sourceCodeStart":36,"sourceCodeEnd":65,"githubUrl":"https://github.com/apache/dolphinscheduler/blob/02eac45a1b6676e639fcbfb4be2243de5771b05d/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TaskGroupQueueStatus.java#L36-L65","documentation":"TaskGroupQueueStatus.of(int) converts a numeric status code into the TaskGroupQueueStatus enum used by the task-group queue feature. It throws IllegalArgumentException when the status integer is absent from STATUS_MAP, i.e. an unrecognized queue status was supplied.","triggerScenarios":"Calling TaskGroupQueueStatus.of(status) with an int that is not one of the enum's defined codes — e.g. reading a task_group_queue row whose status column holds an unknown value, or passing an unrelated status code.","commonSituations":"DB data written by a version with different status codes; custom SQL/scripts insert arbitrary status values; consumer code passes TaskExecutionStatus codes instead of TaskGroupQueueStatus codes.","solutions":["Inspect the offending status integer and compare with the enum's defined codes; use the enum's constants rather than raw numbers.","Fix or migrate the task_group_queue rows that carry unknown status values.","Guard the conversion with a try/catch or STATUS_MAP-style contains check and treat unknown statuses as pending or log-and-skip."],"exampleFix":"// before\nTaskGroupQueueStatus st = TaskGroupQueueStatus.of(row.getStatus());\n\n// after\nTaskGroupQueueStatus st = Arrays.stream(TaskGroupQueueStatus.values())\n        .filter(s -> s.getCode() == row.getStatus())\n        .findFirst()\n        .orElse(TaskGroupQueueStatus.WAITING_QUEUE); // or throw with clearer context","handlingStrategy":"try-catch","validationCode":"boolean isValidGroupQueueStatus(int status) {\n    return Arrays.stream(TaskGroupQueueStatus.values()).anyMatch(s -> s.getCode() == status);\n}","typeGuard":null,"tryCatchPattern":"try {\n    TaskGroupQueueStatus status = TaskGroupQueueStatus.of(code);\n    render(status);\n} catch (IllegalArgumentException e) {\n    log.warn(\"Unknown task group queue status {} — defaulting display\", code);\n}","preventionTips":["Only write status values produced by TaskGroupQueueStatus.getCode().","Constrain the task_group_queue.status column to known codes and validate at insert.","Do not confuse TaskExecutionStatus codes with TaskGroupQueueStatus codes."],"tags":["enum","task-group","status-code"],"backgroundTag":"invalid-enum-value","analyzedSha":"02eac45a1b6676e639fcbfb4be2243de5771b05d","analyzedAt":"2026-09-06T17:43:00.555Z","contentChangedAt":"2026-09-06T17:43:00.555Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}