From b4c7f28aa7816b4fc6f6da7a3b6c28ddd9c5f5e4 Mon Sep 17 00:00:00 2001 From: Slawomir Pajak Date: Fri, 6 Sep 2024 10:48:40 +0200 Subject: [PATCH] Throw TrinoException when Iceberg commit fails --- .../main/java/io/trino/plugin/iceberg/IcebergMetadata.java | 2 +- .../trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java | 4 +++- .../io/trino/plugin/iceberg/BaseIcebergConnectorTest.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java index 945fa942dd30e..f7f6d0847989f 100644 --- a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java +++ b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java @@ -1624,7 +1624,7 @@ private static void commitUpdateAndTransaction(SnapshotUpdate update, Connect commit(update, session); commitTransaction(transaction, operation); } - catch (UncheckedIOException e) { + catch (UncheckedIOException | ValidationException e) { throw new TrinoException(ICEBERG_COMMIT_ERROR, format("Failed to commit during %s: %s", operation, firstNonNull(e.getMessage(), e)), e); } } diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java index f90b684db75af..cb93dbfd2651f 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorSmokeTest.java @@ -132,7 +132,9 @@ public void testDeleteRowsConcurrently() ExecutorService executor = newFixedThreadPool(threads); List rows = ImmutableList.of("(1, 0, 0, 0)", "(0, 1, 0, 0)", "(0, 0, 1, 0)", "(0, 0, 0, 1)"); - String[] expectedErrors = new String[] {"Failed to commit the transaction during write:", "Failed to replace table due to concurrent updates:"}; + String[] expectedErrors = new String[] {"Failed to commit the transaction during write:", + "Failed to replace table due to concurrent updates:", + "Failed to commit during write:"}; try (TestTable table = new TestTable( getQueryRunner()::execute, "test_concurrent_delete", diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java index bddbd8893c7d2..c35731b74bf6a 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergConnectorTest.java @@ -275,7 +275,8 @@ protected void verifyVersionedQueryFailurePermissible(Exception e) @Override protected void verifyConcurrentUpdateFailurePermissible(Exception e) { - assertThat(e).hasMessageContaining("Failed to commit the transaction during write"); + assertThat(e).hasMessageMatching("Failed to commit the transaction during write.*|" + + "Failed to commit during write.*"); } @Override