apache/seatunnel · error · TypesenseConnectorException
UNSUPPORTED_OPERATION
UNSUPPORTED_OPERATION
Error message
error fieldName=%s,fieldValue=%s,seaTunnelDataType=%s,rowRecord=%s
What it means
DefaultSeaTunnelRowDeserializer.convert maps a Typesense document field value into the target SeaTunnel type. Any exception during per-field conversion is rethrown as TypesenseConnectorException(UNSUPPORTED_OPERATION) with a formatted diagnostic string containing the field name, value, target SeaTunnel type, and the whole row record as JSON.
Source
Thrown at seatunnel-connectors-v2/connector-typesense/src/main/java/org/apache/seatunnel/connectors/seatunnel/typesense/serialize/source/DefaultSeaTunnelRowDeserializer.java:126
SeaTunnelRow convert(TypesenseRecord rowRecord) {
Object[] seaTunnelFields = new Object[rowTypeInfo.getTotalFields()];
String fieldName = null;
Object value = null;
SeaTunnelDataType seaTunnelDataType = null;
Map<String, Object> doc = rowRecord.getDoc();
try {
for (int i = 0; i < rowTypeInfo.getTotalFields(); i++) {
fieldName = rowTypeInfo.getFieldName(i);
value = doc.get(fieldName);
if (value != null) {
// seaTunnelDataType is the SeaTunnel type
seaTunnelDataType = rowTypeInfo.getFieldType(i);
seaTunnelFields[i] = convertValue(seaTunnelDataType, value);
}
}
} catch (Exception ex) {
throw new TypesenseConnectorException(
CommonErrorCodeDeprecated.UNSUPPORTED_OPERATION,
String.format(
"error fieldName=%s,fieldValue=%s,seaTunnelDataType=%s,rowRecord=%s",
fieldName, value, seaTunnelDataType, JsonUtils.toJsonString(rowRecord)),
ex);
}
return new SeaTunnelRow(seaTunnelFields);
}
Object convertValue(SeaTunnelDataType<?> fieldType, Object fieldValue)
throws JsonProcessingException {
if (STRING_TYPE.equals(fieldType)) {
return fieldValue.toString();
} else {
if (nullDefault.equals(fieldValue.toString())) {
return null;
}
if (BOOLEAN_TYPE.equals(fieldType)) {View on GitHub (pinned to cf67b549a7)
Solutions
- Read the embedded message fields (fieldName/fieldValue/seaTunnelDataType) to identify exactly which field and value failed.
- Align the configured SeaTunnel schema with the actual Typesense document schema (types and names).
- Fix or backfill the offending document value in Typesense (e.g. reformat the date, correct the type).
- Add a null/absent-field guard in the deserializer path if some documents legitimately lack the field.
Defensive patterns
Strategy: validation
Validate before calling
// align declared schema with actual Typesense document fields
Map<String, Object> doc = /* fetched document */;
for (String field : declaredFieldNames) {
Object v = doc.get(field);
if (v == null) { /* handle or exclude field */ }
} Try / catch
try {
SeaTunnelRow row = deserializer.convert(doc);
} catch (TypesenseConnectorException e) {
// message embeds fieldName/fieldValue/seaTunnelDataType — log and skip/requeue the record
} Prevention
- Keep the configured SeaTunnel schema in sync with the Typesense collection schema.
- Normalize date fields to 'yyyy-MM-dd[ HH:mm:ss]' when indexing.
- Guard against null/missing fields in documents.
When it happens
Trigger: Deserializing a Typesense document (search/index result) where a field's raw value cannot be converted to the declared SeaTunnel type — e.g. null vs primitive mismatch, a string where a number is declared, malformed date/time strings, or nested value shapes the converter doesn't handle.
Common situations: Typesense document schema drifted from the configured SeaTunnel schema; a field is missing or null in some documents; date strings in unexpected formats; user edited the schema option without re-indexing documents.
Understand the failure class
Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.
Related errors
- Unsupported convert ${value.getClass()} to Row, typeDefine:
- Unable to convert to LocalDateTime from unexpected value ''
- COMMON_UNSUPPORTED_DATA_TYPE
- READ_FAILED
- Cannot convert to struct:
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/dcafe8b3d8445818.
Report an issue: GitHub.