{"record":{"id":"928c5f1ab122cbad","repo":"apache/druid","slug":"no-such-outputchannelmode-s","errorCode":null,"errorMessage":"No such outputChannelMode[%s]","messagePattern":"No such outputChannelMode\\[(.+?)\\]","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"multi-stage-query/src/main/java/org/apache/druid/msq/exec/OutputChannelMode.java","lineNumber":78,"sourceCode":"  DURABLE_STORAGE_QUERY_RESULTS(\"durableStorageQueryResults\");\n\n  private final String name;\n\n  OutputChannelMode(String name)\n  {\n    this.name = name;\n  }\n\n  @JsonCreator\n  public static OutputChannelMode fromString(final String s)\n  {\n    for (final OutputChannelMode mode : values()) {\n      if (mode.toString().equals(s)) {\n        return mode;\n      }\n    }\n\n    throw new IAE(\"No such outputChannelMode[%s]\", s);\n  }\n\n  /**\n   * Whether this mode involves writing to durable storage.\n   */\n  public boolean isDurable()\n  {\n    return this == DURABLE_STORAGE_INTERMEDIATE || this == DURABLE_STORAGE_QUERY_RESULTS;\n  }\n\n  @Override\n  @JsonValue\n  public String toString()\n  {\n    return name;\n  }\n}\n","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/multi-stage-query/src/main/java/org/apache/druid/msq/exec/OutputChannelMode.java#L60-L96","documentation":"OutputChannelMode.fromString parses a user-supplied outputChannelMode string into the enum. If the string matches none of the enum's toString values, it throws IAE(\"No such outputChannelMode[%s]\"), listing nothing else — the value must be one of the supported modes (e.g. memory, tempFiles, durableStorage).","triggerScenarios":"Setting the MSQ query context parameter outputChannelMode to an unrecognized string in query context or the task's context.","commonSituations":"Typos like 'durablestore' or 'memoryanddisk'; copying settings from other engines (Spark-style names); case/whitespace errors in the context value.","solutions":["Set outputChannelMode to one of the exact supported values: memory, tempFiles, or durableStorage","Check for typos, casing, and stray whitespace in the query context","Omit the parameter entirely to use the default mode","Verify durableStorage is only used where durable storage is enabled"],"exampleFix":"// before\n\"outputChannelMode\": \"durablestore\"\n// after\n\"outputChannelMode\": \"durableStorage\"","handlingStrategy":"validation","validationCode":"Set.of(\"memory\",\"tempFiles\",\"durableStorage\").contains(outputChannelMode)","typeGuard":"boolean isValidOutputChannelMode(String s) { return \"memory\".equals(s) || \"tempFiles\".equals(s) || \"durableStorage\".equals(s); }","tryCatchPattern":"try { client.run(queryWithContext); } catch (IAE e) { if (e.getMessage().startsWith(\"No such outputChannelMode\")) { fixContextAndRetry(); } else { throw e; } }","preventionTips":["Copy only documented values for outputChannelMode","Trim and lowercase-check context values","Omit the parameter unless tuning"],"tags":["druid","msq","enum","query-context"],"backgroundTag":"invalid-enum-value","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}