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
- Check the wrapped cause in the error for the real I/O failure (stream state, disk, network)
- Retry the job/sync; transient I/O issues often resolve on rerun
- Verify the deserializationSchema implementation does not close shared streams
- 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
- Check the wrapped cause in the exception for the true I/O failure
- Avoid custom deserializationSchema implementations that close shared streams
- Retry failed sync jobs before investigating data
- Monitor disk/stream health on worker nodes
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
- PACKET_DECODE_ERROR
- String json deserialization exception.
- A deserialization failure event arrived
- Can not find any plugin(source/sink/transform) in the dir
- Checking catalog path
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)