@Override public void finishCreateTable(ConnectorSession session, ConnectorOutputTableHandle tableHandle, Collection<Slice> fragments) { checkState(rollbackAction.get() != null, "No rollback action registered"); metadata.commitCreateTable(session, tableHandle, fragments); clearRollback(); }
@Override public void rollback(ConnectorTransactionHandle transactionHandle) { LegacyConnectorMetadata metadata = metadatas.remove(transactionHandle); if (metadata != null) { metadata.tryRollback(); } }
@Override public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) { checkState(rollbackAction.get() == null, "Cannot begin a new write while in an existing one"); ConnectorTableHandle deleteHandle = metadata.beginDelete(session, tableHandle); setRollback(() -> metadata.rollbackDelete(session, deleteHandle)); return deleteHandle; }
@Override public ConnectorMetadata getMetadata(ConnectorTransactionHandle transactionHandle) { return metadatas.computeIfAbsent(transactionHandle, handle -> new LegacyConnectorMetadata(connector.getMetadata(), Optional.ofNullable(connector.getIndexResolver()))); }
@Override public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional<ConnectorNewTableLayout> layout) { checkState(rollbackAction.get() == null, "Cannot begin a new write while in an existing one"); ConnectorOutputTableHandle outputTableHandle = metadata.beginCreateTable(session, tableMetadata); setRollback(() -> metadata.rollbackCreateTable(session, outputTableHandle)); return outputTableHandle; }
@Override public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) { checkState(rollbackAction.get() == null, "Cannot begin a new write while in an existing one"); ConnectorInsertTableHandle insertHandle = metadata.beginInsert(session, tableHandle); setRollback(() -> metadata.rollbackInsert(session, insertHandle)); return insertHandle; }
@Override public void finishDelete(ConnectorSession session, ConnectorTableHandle tableHandle, Collection<Slice> fragments) { checkState(rollbackAction.get() != null, "No rollback action registered"); metadata.commitDelete(session, tableHandle, fragments); clearRollback(); }
@Override public void finishInsert(ConnectorSession session, ConnectorInsertTableHandle insertHandle, Collection<Slice> fragments) { checkState(rollbackAction.get() != null, "No rollback action registered"); metadata.commitInsert(session, insertHandle, fragments); clearRollback(); }