apache/seatunnel · error · org.apache.seatunnel.common.exception.SeaTunnelRuntimeException

GOOGLE-SHEETS-01

GOOGLE-SHEETS-01

Error message

Fail to deserialize Google Sheets '<payload>'

What it means

GoogleSheetsDeserializer.deserializeRow catches java.io.IOException (other than JsonProcessingException) while converting the row map to JSON and rethrows it as the connector-specific Google Sheets deserialize error (GOOGLE-SHEETS-01) including the row payload. It signals an I/O-level failure during deserialization of a Google Sheets row.

Solutions

  1. Check the wrapped cause in the error for the real I/O failure (stream state, disk, network)
  2. Retry the job/sync; transient I/O issues often resolve on rerun
  3. Verify the deserializationSchema implementation does not close shared streams
  4. Report a bug if it reproduces consistently with normal sheet data
Defensive patterns

Strategy: retry

Validate before calling

// Ensure row map is non-null and complete before deserialization
if (rowMap == null || rowMap.isEmpty()) {
    throw new IllegalArgumentException("Empty Google Sheets row");
}

Try / catch

try {
    deserializer.deserializeRow(rowMap);
} catch (SeaTunnelException e) {
    if (isGoogleSheetsDeserializeError(e)) {
        log.warn("Transient IO failure deserializing row, retrying", e);
        // retry once, then dead-letter
    } else { throw e; }
}

Prevention

When it happens

Trigger: An IOException (not a Jackson JsonProcessingException) is thrown during writeValueAsString or while the deserialization schema processes the row bytes in GoogleSheetsDeserializer.deserializeRow.

Common situations: Underlying stream closed mid-read; low-level I/O failures from the Jackson data source; wrapped I/O errors from custom deserializationSchema implementations.

Understand the failure class

Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.

Related errors


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-google-sheets/src/main/java/org/apache/seatunnel/connectors/seatunnel/google/sheets/deserialize/GoogleSheetsDeserializer.java:60

        this.deserializationSchema = deserializationSchema;
    }

    @Override
    public SeaTunnelRow deserializeRow(List<Object> row) {
        Map<String, Object> map = new HashMap<>();
        for (int i = 0; i < row.size(); i++) {
            if (i < fields.length) {
                map.put(fields[i], row.get(i));
            }
        }

        try {
            String rowStr = objectMapper.writeValueAsString(map);
            return deserializationSchema.deserialize(rowStr.getBytes());
        } catch (JsonProcessingException e) {
            throw CommonError.jsonOperationError("GoogleSheets", map.toString(), e);
        } catch (IOException e) {
            throw GoogleSheetsError.deserializeError(map.toString(), e);
        }
    }
}

View on GitHub (pinned to cf67b549a7)