{"record":{"id":"d41e9341edd7e7bf","repo":"apache/druid","slug":"cannot-convert-s-to-long-offset","errorCode":null,"errorMessage":"Cannot convert %s to Long offset","messagePattern":"Cannot convert (.+?) to Long offset","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/supervisor/KafkaSupervisor.java","lineNumber":417,"sourceCode":"  }\n\n  @Override\n  protected KafkaTopicPartition createPartitionIdFromString(String partitionIdString)\n  {\n    return KafkaTopicPartition.fromString(partitionIdString);\n  }\n\n  @Override\n  protected Long createSequenceOffsetFromObject(Object offsetObj)\n  {\n    // Jackson may deserialize numbers as Integer if they fit, but Kafka needs Long\n    if (offsetObj instanceof Number) {\n      return ((Number) offsetObj).longValue();\n    }\n    if (offsetObj instanceof String) {\n      return Long.parseLong((String) offsetObj);\n    }\n    throw new IllegalArgumentException(\"Cannot convert \" + offsetObj.getClass() + \" to Long offset\");\n  }\n\n  @Override\n  protected boolean useExclusiveStartSequenceNumberForNonFirstSequence()\n  {\n    return false;\n  }\n\n  @Override\n  protected boolean isEndOffsetExclusive()\n  {\n    return true;\n  }\n\n  @Override\n  public LagStats computeLagStats()\n  {\n    Map<KafkaTopicPartition, Long> partitionRecordLag = getPartitionRecordLag();","sourceCodeStart":399,"sourceCodeEnd":435,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/supervisor/KafkaSupervisor.java#L399-L435","documentation":"Offset-sequence conversion guard in KafkaSupervisor.createSequenceOffsetFromObject: sequence offsets in supervisor metadata must be numeric or numeric-string; Jackson may deserialize numbers as Integer, which is handled, but any other object type (e.g. a map or boolean in corrupted metadata) cannot be converted to a Kafka Long offset and is rejected.","triggerScenarios":"Thrown at extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/supervisor/KafkaSupervisor.java:417 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect and repair the supervisor's dataSource metadata store entry; corrupt offsets usually indicate a bad manual edit or version mismatch.","Reset offsets for the affected partitions via the supervisor reset endpoint.","Ensure numeric offsets are submitted as numbers or digit strings when updating metadata."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}