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

  1. Read the embedded message fields (fieldName/fieldValue/seaTunnelDataType) to identify exactly which field and value failed.
  2. Align the configured SeaTunnel schema with the actual Typesense document schema (types and names).
  3. Fix or backfill the offending document value in Typesense (e.g. reformat the date, correct the type).
  4. 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

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/dcafe8b3d8445818. Report an issue: GitHub.