prestodb/presto · warning · PrestoException
NOT_SUPPORTED
NOT_SUPPORTED
Error message
Unable to rollback insert for table %s.%s. Some rows may have been written. Please run your insert again.
What it means
Accumulo has no transactional rollback for inserted rows, so AccumuloMetadata.rollbackInsert always throws NOT_SUPPORTED. If a batch of Mutations partially succeeded before failing, some rows are already written and cannot be undone; the documented strategy is to rerun the insert, since rewriting the same mutations is idempotent.
Source
Thrown at presto-accumulo/src/main/java/com/facebook/presto/accumulo/AccumuloMetadata.java:231
return handle;
}
@Override
public Optional<ConnectorOutputMetadata> finishInsert(ConnectorSession session, ConnectorInsertTableHandle insertHandle, Collection<Slice> fragments, Collection<ComputedStatistics> computedStatistics)
{
clearRollback();
return Optional.empty();
}
private static void rollbackInsert(ConnectorInsertTableHandle insertHandle)
{
// Rollbacks for inserts are off the table when it comes to data in Accumulo.
// When a batch of Mutations fails to be inserted, the general strategy
// is to run the insert operation again until it is successful
// Any mutations that were successfully written will be overwritten
// with the same values, so that isn't a problem.
AccumuloTableHandle handle = (AccumuloTableHandle) insertHandle;
throw new PrestoException(NOT_SUPPORTED, format("Unable to rollback insert for table %s.%s. Some rows may have been written. Please run your insert again.", handle.getSchema(), handle.getTable()));
}
@Override
public ConnectorTableHandle getTableHandle(ConnectorSession session, SchemaTableName tableName)
{
if (!listSchemaNames(session).contains(tableName.getSchemaName().toLowerCase(Locale.ENGLISH))) {
return null;
}
// Need to validate that SchemaTableName is a table
if (!this.listViews(session, Optional.of(tableName.getSchemaName())).contains(tableName)) {
AccumuloTable table = client.getTable(tableName);
if (table == null) {
return null;
}
return new AccumuloTableHandle(
connectorId,View on GitHub (pinned to 55bb57d202)
Solutions
- Simply rerun the same INSERT statement — rows written identically are overwritten with the same values, making the retry safe.
- If rerunning is undesirable, delete the partially written rows (e.g. via the Accumulo shell or a DELETE query) before retrying.
- For strict correctness requirements, write to a staging table and atomically swap/rename into the final table.
- Reduce insert batch size and improve writer stability to lower the chance of partial writes.
Example fix
// before: assume rollback happened // after: retry the insert; duplicates are overwritten harmlessly INSERT INTO schema.table SELECT ... ; // run again until success
Defensive patterns
Strategy: retry
Try / catch
try {
connectorMetadata.finishInsert(...);
} catch (PrestoException e) {
if (e.getErrorCode().toErrorCodeDetail().contains("NOT_SUPPORTED")) {
// some rows may be written; rerun the same INSERT — rewrites are idempotent
}
throw e;
} Prevention
- Design inserts to be idempotent (identical mutations overwrite the same values).
- Keep insert batches small so retries are cheap.
- Use staging table + rename swap when exactly-once semantics matter.
- Ensure writer processes are stable and Accumulo connectivity is reliable before large loads.
When it happens
Trigger: Any failed INSERT into an Accumulo table that triggers Presto's connector rollback path (beginInsert → rollbackInsert), i.e. an insert that failed mid-flight after some Mutations were flushed to Accumulo.
Common situations: Writer process crashes or Accumulo connection loss during a large INSERT; query killed mid-insert; underlying table dropped or tablet server failure while mutations are being written.
Understand the failure class
Background: Presto NOT_SUPPORTED error: what "not supported" means and how to fix it — this error's family across 3 libraries.
Related errors
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/8266f3ecd0780034.
Report an issue: GitHub.