prestodb/presto · error · IOException
S3 Select request was incomplete as End Event was not receiv
Error message
S3 Select request was incomplete as End Event was not received
What it means
Thrown when S3 Select's response stream ends without the mandatory End Event frame, meaning the S3 Select request terminated prematurely (network drop, S3-side abort, or truncated stream). next() detects that isRequestComplete() is false after exhausting buffered lines and fails fast rather than silently returning partial rows.
Source
Thrown at presto-hive/src/main/java/com/facebook/presto/hive/s3select/S3SelectLineRecordReader.java:251
}
});
}
catch (Exception e) {
throwIfInstanceOf(e, IOException.class);
throwIfUnchecked(e);
throw new RuntimeException(e);
}
}
@Override
public synchronized boolean next(LongWritable key, Text value)
throws IOException
{
while (true) {
int bytes = readLine(value);
if (bytes <= 0) {
if (!selectClient.isRequestComplete()) {
throw new IOException("S3 Select request was incomplete as End Event was not received");
}
return false;
}
recordsFromS3++;
if (recordsFromS3 > processedRecords) {
position += bytes;
processedRecords++;
key.set(processedRecords);
return true;
}
}
}
@Override
public LongWritable createKey()
{
return new LongWritable();
}View on GitHub (pinned to 55bb57d202)
Solutions
- Retry the split/query; a missing End Event is usually a transient S3 or network failure
- Check S3 request metrics and bucket error rates for throttling (SlowDown) or 5xx responses
- Verify proxy/firewall/timeout settings are not cutting the HTTP response stream short
- Reduce split size or concurrency if throttling is suspected
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at presto-hive/src/main/java/com/facebook/presto/hive/s3select/S3SelectLineRecordReader.java:251 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/54cc2a478685dab9.
Report an issue: GitHub.