prestodb/presto · error · PrestoException
HIVE_WRITER_CLOSE_ERROR
HIVE_WRITER_CLOSE_ERROR
Error message
Error committing write to Hive. %s
What it means
OrcFileWriter.commit() finalizes the ORC/DWRF file: it closes the writer and calls the rollback action bookkeeping. If an exception escapes commit and it is not already a PrestoException, Presto rolls back (best-effort) and wraps the cause in HIVE_WRITER_CLOSE_ERROR with 'Error committing write to Hive'. The original IOException or other failure is attached as the cause.
Source
Thrown at presto-hive/src/main/java/com/facebook/presto/hive/OrcFileWriter.java:257
throw new PrestoException(HIVE_WRITER_DATA_ERROR, e);
}
}
@Override
public Optional<Page> commit()
{
try {
orcWriter.close();
}
catch (IOException | UncheckedIOException | PrestoException e) {
try {
rollbackAction.call();
}
catch (Exception ignored) {
// ignore
}
throwIfInstanceOf(e, PrestoException.class);
throw new PrestoException(HIVE_WRITER_CLOSE_ERROR, "Error committing write to Hive. " + e.getMessage(), e);
}
if (validationInputFactory.isPresent()) {
try {
try (OrcDataSource input = validationInputFactory.get().get()) {
long startThreadCpuTime = THREAD_MX_BEAN.getCurrentThreadCpuTime();
orcWriter.validate(input);
validationCpuNanos += THREAD_MX_BEAN.getCurrentThreadCpuTime() - startThreadCpuTime;
}
}
catch (IOException | UncheckedIOException e) {
throw new PrestoException(HIVE_WRITE_VALIDATION_FAILED, e);
}
}
return Optional.of(createFileStatisticsPage(getFileSizeInBytes(), rowCount));
}
View on GitHub (pinned to 55bb57d202)
Solutions
- Inspect the cause attached to the exception for the root storage failure and fix it (permissions, quota, connectivity).
- Retry the query/transaction; commit-time IO failures are often transient (S3 timeouts, HDFS retries).
- Ensure sufficient space/quota on the destination filesystem before large writes.
- Tune S3/HDFS client timeouts and retry counts for large ORC files with big footers.
Defensive patterns
Strategy: retry
Try / catch
try {
insertInto(orcTable, data);
} catch (PrestoException e) {
if ("HIVE_WRITER_CLOSE_ERROR".equals(e.getErrorCode().getName())
&& e.getCause() instanceof IOException && isTransient(e.getCause())) {
retry(insertInto, attempts = 3, backoff = exponential());
} else {
throw e;
}
} Prevention
- Ensure ample disk/quota on destination storage before large ORC writes.
- Enable retries/timeouts on HDFS/S3 clients; footer flushes are IO heavy.
- Schedule large writes outside of storage maintenance windows.
When it happens
Trigger: commit() when the OrcWriter close/finish fails with a non-PrestoException (e.g. IOException flushing ORC footers/statistics to the filesystem) or any other RuntimeException during commit; PrestoExceptions are rethrown as-is via throwIfInstanceOf.
Common situations: HDFS/S3 write failures when flushing the ORC footer and stripe metadata, quota or disk-full conditions at commit time, S3 throttling during multipart completion, node loss while finishing the file.
Related errors
- HIVE_WRITER_CLOSE_ERROR
- HIVE_WRITER_CLOSE_ERROR
- HIVE_WRITER_CLOSE_ERROR
- HIVE_WRITER_OPEN_ERROR
- HIVE_WRITER_OPEN_ERROR
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/9ab213be73ad84f1.
Report an issue: GitHub.