{"record":{"id":"74a65b604e8406dc","repo":"apache/flink","slug":"job-was-submitted-in-detached-mode-results-of-job-74a65b","errorCode":null,"errorMessage":"Job was submitted in detached mode. Results of job execution, such as accumulators, runtime, etc. are not available. Please make sure your program doesn't call an eager execution function [collect, print, printToErr, count]. ","messagePattern":"Job was submitted in detached mode\\. Results of job execution, such as accumulators, runtime, etc\\. are not available\\. Please make sure your program doesn't call an eager execution function \\[collect, print, printToErr, count\\]\\. ","errorType":"exception","errorClass":"InvalidProgramException","httpStatus":null,"severity":"error","filePath":"flink-core/src/main/java/org/apache/flink/core/execution/DetachedJobExecutionResult.java","lineNumber":56,"sourceCode":"            \"Please make sure your program doesn't call \"\n                    + \"an eager execution function [collect, print, printToErr, count]. \";\n\n    public static final String JOB_RESULT_MESSAGE =\n            \"Results of job execution, such as accumulators,\"\n                    + \" runtime, etc. are not available. \";\n\n    public DetachedJobExecutionResult(final JobID jobID) {\n        super(jobID, -1, null);\n    }\n\n    @Override\n    public long getNetRuntime() {\n        throw new InvalidProgramException(DETACHED_MESSAGE + JOB_RESULT_MESSAGE);\n    }\n\n    @Override\n    public <T> T getAccumulatorResult(String accumulatorName) {\n        throw new InvalidProgramException(\n                DETACHED_MESSAGE + JOB_RESULT_MESSAGE + EAGER_FUNCTION_MESSAGE);\n    }\n\n    @Override\n    public Map<String, Object> getAllAccumulatorResults() {\n        throw new InvalidProgramException(DETACHED_MESSAGE + JOB_RESULT_MESSAGE);\n    }\n\n    @Override\n    public JobID getJobID() {\n        return super.getJobID();\n    }\n\n    @Override\n    public boolean isJobExecutionResult() {\n        return false;\n    }\n","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/apache/flink/blob/2f3c205e9266cb30240eb7f4fdab15cad629a70f/flink-core/src/main/java/org/apache/flink/core/execution/DetachedJobExecutionResult.java#L38-L74","documentation":"Thrown by DetachedJobExecutionResult.getAccumulatorResult() when a detached job's result is queried for an accumulator. The message adds guidance about eager execution functions (collect, print, printToErr, count) that internally trigger accumulator retrieval and are incompatible with detached submission.","triggerScenarios":"Calling result.getAccumulatorResult(name) on a DetachedJobExecutionResult. More commonly, implicitly triggered by calling collect(), print(), printToErr(), or count() on a DataStream/Table in a detached job, since those sink into accumulators.","commonSituations":"Writing DataStream.collect() or print() in a job submitted with execution.attached=false or via sql-client in detached mode. Migration from attached to detached execution without removing eager sinks.","solutions":["Run the job in attached mode (execution.attached=true) to enable accumulator retrieval.","Remove collect/print/printToErr/count calls when the job must run detached; write results to a sink instead.","Use a separate result-retrieval mechanism (e.g., queryable state or an external sink) for detached jobs."],"exampleFix":"// before\nDataStream<Integer> stream = ...;\nList<Integer> results = stream.executeAndCollect(); // eager, fails in detached\n\n// after (for detached)\nstream.addSink(new MyExternalSink());\nenv.execute(\"job\");","handlingStrategy":"validation","validationCode":"if (result instanceof DetachedJobExecutionResult) {\n    throw new IllegalStateException(\"Accumulators unavailable in detached mode; remove collect/print\");\n}","typeGuard":"static boolean isDetached(org.apache.flink.api.common.JobExecutionResult r) {\n    return r instanceof org.apache.flink.core.execution.DetachedJobExecutionResult;\n}","tryCatchPattern":"try {\n    Object acc = result.getAccumulatorResult(name);\n} catch (InvalidProgramException e) {\n    if (e.getMessage().contains(\"eager execution function\")) { /* run attached or use a sink */ }\n}","preventionTips":["Remove collect/print/printToErr/count from detached jobs.","Run in attached mode when eager results are needed.","Use external sinks for detached result delivery."],"tags":["execution","detached-mode","accumulators","eager-functions"],"backgroundTag":null,"analyzedSha":"2f3c205e9266cb30240eb7f4fdab15cad629a70f","analyzedAt":"2026-08-14T08:48:24.518Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}