{"record":{"id":"c3d9c2897629e3dd","repo":"apache/druid","slug":"unknown-type-s-c3d9c2","errorCode":null,"errorMessage":"Unknown type[%s]","messagePattern":"Unknown type\\[(.+?)\\]","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/segment/IndexMergerBase.java","lineNumber":745,"sourceCode":"          builder.addSerde(createFloatColumnPartSerde(writer, indexSpec));\n          break;\n        case DOUBLE:\n          builder.setValueType(ValueType.DOUBLE);\n          builder.addSerde(createDoubleColumnPartSerde(writer, indexSpec));\n          break;\n        case COMPLEX:\n          final String typeName = type.getComplexTypeName();\n          builder.setValueType(ValueType.COMPLEX);\n          builder.addSerde(\n              ComplexColumnPartSerde\n                  .serializerBuilder()\n                  .withTypeName(typeName)\n                  .withDelegate(writer)\n                  .build()\n          );\n          break;\n        default:\n          throw new ISE(\"Unknown type[%s]\", type);\n      }\n      final String columnName = namePrefix + metric;\n      makeColumn(segmentFileBuilder, columnName, builder.build());\n      log.debug(\"Completed metric column[%s] in %,d millis.\", columnName, System.currentTimeMillis() - metricStartTime);\n    }\n    log.debug(\"Completed metric columns in %,d millis.\", System.currentTimeMillis() - startTime);\n    progress.stopSection(section);\n  }\n\n  /**\n   * Returns rowNumConversions, if fillRowNumConversions argument is true\n   */\n  protected IndexMergeResult mergeIndexesAndWriteColumns(\n      final List<IndexableAdapter> adapters,\n      final ProgressIndicator progress,\n      final TimeAndDimsIterator timeAndDimsIterator,\n      final GenericColumnSerializer timeWriter,\n      final ArrayList<GenericColumnSerializer> metricWriters,","sourceCodeStart":727,"sourceCodeEnd":763,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/segment/IndexMergerBase.java#L727-L763","documentation":"Thrown by makeMetricsColumns in IndexMergerBase when the metric column's ValueType is not one of the handled cases (LONG/FLOAT/DOUBLE/COMPLEX etc.), i.e. an unrecognized value type during metric column serialization. The switch statement builds a per-type column writer; any type outside that set hits the default branch.","triggerScenarios":"Merging/writing a segment whose metric aggregator produces a ValueType not covered by the writer switch (e.g. a newly added or custom ValueType, or STRING metrics where numeric is expected).","commonSituations":"Using an extension aggregator that returns an unusual ValueType; version skew where a newer segment format introduces a type the current merger does not handle; misconfigured rollup aggregators.","solutions":["Upgrade Druid so the merger supports the metric's ValueType","Change the aggregator to one that produces a supported ValueType (LONG/FLOAT/DOUBLE/COMPLEX)","Ensure the extension providing the custom type is loaded on all nodes performing the merge"],"exampleFix":"// before\nnew JavascriptAggregatorFactory(...); // produces unsupported ValueType in merger\n// after\nnew DoubleSumAggregatorFactory(\"metric\", \"value\"); // supported ValueType","handlingStrategy":"type-guard","validationCode":"if (!EnumSet.of(ValueType.LONG, ValueType.FLOAT, ValueType.DOUBLE, ValueType.COMPLEX).contains(metricType)) { throw ...; }","typeGuard":"boolean isWritableMetricType(ValueType t) { return t == LONG || t == FLOAT || t == DOUBLE || t == COMPLEX; }","tryCatchPattern":"try { merger.merge(...); } catch (IllegalStateException e) { if (e.getMessage().startsWith(\"Unknown type\")) { /* switch aggregator to supported ValueType */ } else throw e; }","preventionTips":["Only use aggregators producing numeric or complex metric types","Keep all nodes on the same Druid version","Verify ValueType support of custom aggregators before use"],"tags":["druid","segment-merge","value-type"],"backgroundTag":"unsupported-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"}