prestodb/presto · error

IO_ERROR

IO_ERROR

Error message

Caught IO error from serializer on read

What it means

Thrown while advancing the Accumulo cursor: the row fetched from the iterator could not be decoded by the serializer (deserialize or WholeRowIterator decoding raised an IO error), so the scan cannot continue on this split.

Source

Thrown at presto-accumulo/src/main/java/com/facebook/presto/accumulo/io/AccumuloRecordCursor.java:182

            nanoStart = System.nanoTime();
        }

        try {
            if (iterator.hasNext()) {
                serializer.reset();
                Entry<Key, Value> row = iterator.next();
                for (Entry<Key, Value> entry : WholeRowIterator.decodeRow(row.getKey(), row.getValue()).entrySet()) {
                    bytesRead += entry.getKey().getSize() + entry.getValue().getSize();
                    serializer.deserialize(entry);
                }
                return true;
            }
            else {
                return false;
            }
        }
        catch (IOException e) {
            throw new PrestoException(IO_ERROR, "Caught IO error from serializer on read", e);
        }
    }

    @Override
    public boolean isNull(int field)
    {
        checkArgument(field < columnHandles.size(), "Invalid field index");
        return serializer.isNull(fieldToColumnName[field]);
    }

    @Override
    public boolean getBoolean(int field)
    {
        checkFieldType(field, BOOLEAN);
        return serializer.getBoolean(fieldToColumnName[field]);
    }

    @Override

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Verify the Accumulo tablet server is healthy and the row was not corrupted
  2. Check that the table's serializer matches the column encodings written at ingest
  3. Exclude or re-write the offending row/key-value if data is corrupted
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at presto-accumulo/src/main/java/com/facebook/presto/accumulo/io/AccumuloRecordCursor.java:182 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class

Background: Rust io::Error: what ErrorKind::NotFound, PermissionDenied, and InvalidData actually mean — from real OS failures to library fail-closed refusals — this error's family across 12 libraries.


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/042427821c94a353. Report an issue: GitHub.