From b41e4bfa4431e68827d3da52670ac375c378065f Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Thu, 30 Mar 2023 12:35:46 -0700 Subject: [PATCH 01/27] SPARK 3.3 : add cascade support in drop_namespace --- .../iceberg/catalog/SupportsNamespaces.java | 10 +++++ .../iceberg/aws/dynamodb/DynamoDbCatalog.java | 18 +++++++++ .../apache/iceberg/aws/glue/GlueCatalog.java | 11 ++++++ .../iceberg/catalog/BaseSessionCatalog.java | 11 ++++++ .../apache/iceberg/hadoop/HadoopCatalog.java | 14 ++++++- .../org/apache/iceberg/jdbc/JdbcCatalog.java | 10 +++++ .../apache/iceberg/rest/CatalogHandlers.java | 7 ++++ .../org/apache/iceberg/rest/RESTCatalog.java | 5 +++ .../apache/iceberg/catalog/CatalogTests.java | 17 ++++++++- .../iceberg/hadoop/TestHadoopCatalog.java | 22 +++++++++++ .../apache/iceberg/jdbc/TestJdbcCatalog.java | 16 ++++++++ .../iceberg/rest/RESTCatalogAdapter.java | 29 ++++++++++++++- .../apache/iceberg/dell/ecs/EcsCatalog.java | 9 +++++ .../org/apache/iceberg/hive/HiveCatalog.java | 37 +++++++++++++++++++ .../apache/iceberg/nessie/NessieCatalog.java | 9 +++++ .../apache/iceberg/nessie/TestNamespace.java | 20 ++++++++++ .../apache/iceberg/spark/SparkCatalog.java | 2 +- 17 files changed, 242 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java b/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java index 14cece611f76..4b3c431adec5 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java +++ b/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java @@ -103,6 +103,16 @@ default List listNamespaces() { */ boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyException; + /** + * Drop a namespace. If the namespace exists and was dropped, this will return true. + * + * @param namespace a namespace. {@link Namespace} + * @param cascade – When true, deletes all objects under the namespace + * @return true if the namespace was dropped, false otherwise. + * @throws NamespaceNotEmptyException If the namespace is not empty + */ + boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException; + /** * Set a collection of properties on a namespace in the catalog. * diff --git a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java index 7e1beb2fac6c..7695037332a5 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java @@ -64,6 +64,7 @@ import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest; import software.amazon.awssdk.services.dynamodb.model.Delete; import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest; +import software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest; import software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest; import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse; import software.amazon.awssdk.services.dynamodb.model.GetItemRequest; @@ -284,6 +285,23 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + validateNamespace(namespace); + List tables = listTables(namespace); + if (tables.isEmpty()) { + return dropNamespace(namespace); + } + try { + tables.forEach(this::dropTable); + } catch (ConditionalCheckFailedException e) { + return false; + } + return dropNamespace(namespace); + + + } + @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java index db6e8ead7ea4..61105060cad6 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java @@ -24,6 +24,8 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; + +import org.apache.commons.lang.NotImplementedException; import org.apache.hadoop.conf.Configuration; import org.apache.iceberg.BaseMetastoreCatalog; import org.apache.iceberg.BaseMetastoreTableOperations; @@ -560,6 +562,15 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return true; } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + if (cascade) { + throw new NotImplementedException("cascade not supported yet"); + }else { + return dropNamespace(namespace); + } + } + @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java b/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java index d6ee4d345cfa..04c5dc74b9c2 100644 --- a/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java +++ b/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java @@ -25,6 +25,8 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Function; + +import org.apache.commons.lang.NotImplementedException; import org.apache.iceberg.Schema; import org.apache.iceberg.Table; import org.apache.iceberg.exceptions.NamespaceNotEmptyException; @@ -143,6 +145,15 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return BaseSessionCatalog.this.dropNamespace(context, namespace); } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + if (cascade) { + throw new NotImplementedException("cascade not supported yet"); + }else { + return dropNamespace(namespace); + } + } + @Override public boolean setProperties(Namespace namespace, Map updates) { return BaseSessionCatalog.this.updateNamespaceMetadata( diff --git a/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java b/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java index 25e6994d0bde..954874e807d9 100644 --- a/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java +++ b/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java @@ -27,6 +27,8 @@ import java.util.List; import java.util.Map; import java.util.Set; + +import org.apache.commons.lang.NotImplementedException; import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; @@ -226,7 +228,7 @@ protected boolean isValidIdentifier(TableIdentifier identifier) { @Override protected TableOperations newTableOps(TableIdentifier identifier) { return new HadoopTableOperations( - new Path(defaultWarehouseLocation(identifier)), fileIO, conf, lockManager); + new Path(defaultWarehouseLocation(identifier)), fileIO, conf, lockManager); } @Override @@ -349,6 +351,16 @@ public boolean dropNamespace(Namespace namespace) { } } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + if (cascade) { + // recursively delete all nested namespaces + listNamespaces(namespace).forEach(n -> dropNamespace(n, true)); + listTables(namespace).forEach(this::dropTable); + } + return dropNamespace(namespace); + } + @Override public boolean setProperties(Namespace namespace, Map properties) { throw new UnsupportedOperationException( diff --git a/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java b/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java index c45df884bdfd..bc86337c9c18 100644 --- a/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java +++ b/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java @@ -419,6 +419,16 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return deletedRows > 0; } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + if (cascade) { + // recursively delete all nested namespaces + listNamespaces(namespace).forEach(n -> dropNamespace(n, true)); + listTables(namespace).forEach(this::dropTable); + } + return dropNamespace(namespace); + } + @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java b/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java index d297fc738317..be57be64c744 100644 --- a/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java +++ b/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java @@ -129,6 +129,13 @@ public static void dropNamespace(SupportsNamespaces catalog, Namespace namespace } } + public static void dropNamespace(SupportsNamespaces catalog, Namespace namespace, boolean cascade) { + boolean dropped = catalog.dropNamespace(namespace, cascade); + if (!dropped) { + throw new NoSuchNamespaceException("Namespace does not exist: %s", namespace); + } + } + public static UpdateNamespacePropertiesResponse updateNamespaceProperties( SupportsNamespaces catalog, Namespace namespace, UpdateNamespacePropertiesRequest request) { request.validate(); diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java b/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java index 71195b9585ef..000165d82ab1 100644 --- a/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java +++ b/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java @@ -228,6 +228,11 @@ public boolean dropNamespace(Namespace ns) throws NamespaceNotEmptyException { return nsDelegate.dropNamespace(ns); } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + return nsDelegate.dropNamespace(namespace, cascade); + } + @Override public boolean setProperties(Namespace ns, Map props) throws NoSuchNamespaceException { diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index dfeea821936a..91f4b38c756a 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -363,8 +363,23 @@ public void testDropNamespace() { catalog.createNamespace(NS); Assert.assertTrue("Namespace should exist", catalog.namespaceExists(NS)); + catalog.dropNamespace(NS, true); + boolean condition = catalog.namespaceExists(NS); + Assert.assertFalse(condition); + } + + @Test + public void testDropNamespaceCascade() { + C catalog = catalog(); + + Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); + + catalog.createNamespace(NS); + TableIdentifier ident = TableIdentifier.of("ns", "table"); + Table table = catalog.buildTable(ident, SCHEMA).create(); + Assert.assertTrue( - "Dropping an existing namespace should return true", catalog.dropNamespace(NS)); + "Dropping an existing namespace should return true", catalog.dropNamespace(NS)); Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); } diff --git a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java index 2f89f6875d91..a2d647aa7e63 100644 --- a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java +++ b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java @@ -468,6 +468,28 @@ public void testDropNamespace() throws IOException { Assert.assertFalse(fs.isDirectory(new Path(metaLocation))); } + @Test + public void testDropNamespaceCascade() throws IOException { + String warehouseLocation = temp.newFolder().getAbsolutePath(); + HadoopCatalog catalog = new HadoopCatalog(); + catalog.setConf(new Configuration()); + catalog.initialize( + "hadoop", ImmutableMap.of(CatalogProperties.WAREHOUSE_LOCATION, warehouseLocation)); + Namespace namespace1 = Namespace.of("db"); + Namespace namespace2 = Namespace.of("db", "ns1"); + + TableIdentifier tbl1 = TableIdentifier.of(namespace1, "tbl1"); + TableIdentifier tbl2 = TableIdentifier.of(namespace2, "tbl1"); + + Lists.newArrayList(tbl1, tbl2) + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + + catalog.dropNamespace(namespace1, true); + String metaLocation = warehouseLocation + "/" + "db"; + FileSystem fs = Util.getFs(new Path(metaLocation), catalog.getConf()); + Assert.assertFalse(fs.isDirectory(new Path(metaLocation))); + } + @Test public void testVersionHintFileErrorWithFile() throws Exception { addVersionsToTable(table); diff --git a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java index b0fdea458d29..b017a07ebcbf 100644 --- a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java +++ b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java @@ -625,6 +625,22 @@ public void testDropNamespace() { () -> catalog.dropNamespace(tbl4.namespace())); } + @Test + public void testDropNamespaceCascade() { + TableIdentifier tbl0 = TableIdentifier.of("db", "ns1", "ns2", "tbl2"); + TableIdentifier tbl1 = TableIdentifier.of("db", "ns1", "ns2", "tbl1"); + TableIdentifier tbl2 = TableIdentifier.of("db", "ns1", "tbl2"); + TableIdentifier tbl3 = TableIdentifier.of("db", "ns3", "tbl4"); + TableIdentifier tbl4 = TableIdentifier.of("db", "tbl"); + + Lists.newArrayList(tbl0, tbl1, tbl2, tbl3, tbl4) + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + + catalog.dropNamespace(tbl4.namespace(), true); + Assert.assertFalse(catalog.namespaceExists(tbl1.namespace())); + + } + @Test public void testCreateNamespace() { Namespace testNamespace = Namespace.of("testDb", "ns1", "ns2"); diff --git a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java index c6d41818441c..17bbeaac93fc 100644 --- a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java +++ b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java @@ -19,9 +19,14 @@ package org.apache.iceberg.rest; import java.io.IOException; +import java.net.URISyntaxException; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import java.util.stream.Collectors; + +import org.apache.http.NameValuePair; +import org.apache.http.client.utils.URIBuilder; import org.apache.iceberg.catalog.Catalog; import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.SupportsNamespaces; @@ -284,7 +289,12 @@ public T handleRequest( case DROP_NAMESPACE: if (asNamespaceCatalog != null) { - CatalogHandlers.dropNamespace(asNamespaceCatalog, namespaceFromPathVars(vars)); + Namespace namespace = namespaceFromPathVars(vars); + if (vars.containsKey("cascade")) { + CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace, Boolean.parseBoolean(vars.get("cascade"))); + } else { + CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace); + } return null; } break; @@ -407,7 +417,22 @@ public T delete( Class responseType, Map headers, Consumer errorHandler) { - return execute(HTTPMethod.DELETE, path, null, null, responseType, headers, errorHandler); + URIBuilder uri = toUri(path); + return execute(HTTPMethod.DELETE, uri.getPath().substring(1), toQueryParams(uri), null, responseType, headers, errorHandler); + } + + private Map toQueryParams(URIBuilder uri) { + return uri.getQueryParams() + .stream() + .collect(Collectors.toMap(NameValuePair::getName, NameValuePair::getValue)); + } + + private URIBuilder toUri(String path) { + try { + return new URIBuilder(path); + } catch (URISyntaxException e) { + throw new RESTException("invalid path: " + path); + } } @Override diff --git a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java index bf16e1b07f76..ba7367908cb7 100644 --- a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java +++ b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java @@ -339,6 +339,15 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return true; } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + if (cascade) { + throw new RuntimeException("cascade not supported yet"); + }else { + return dropNamespace(namespace); + } + } + @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java index 79f5c18ff11e..47492a69397a 100644 --- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java +++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java @@ -363,6 +363,43 @@ public boolean dropNamespace(Namespace namespace) { } } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + if (!isValidateNamespace(namespace)) { + return false; + } + if(cascade){ + try { + List tables = clients.run(client -> client.getAllTables("")); + if (!tables.isEmpty()) { + clients.run( + client -> { + for (String table : tables) { + client.dropTable( + namespace.level(0), + table); + LOG.info("Dropped table: {}", table); + } + return null; + }); + } + + LOG.info("Dropped tables in namespace: {}", namespace); + } catch (NoSuchObjectException e) { + return false; + + } catch (TException e) { + throw new RuntimeException("Failed to drop namespace " + namespace + " in Hive Metastore", e); + + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException( + "Interrupted in call to drop dropDatabase( " + namespace + ", " + cascade + ") in Hive Metastore", e); + } + } + return dropNamespace(namespace); + } + @Override public boolean setProperties(Namespace namespace, Map properties) { Preconditions.checkArgument( diff --git a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java index 0c6f2d4c5911..3976a247c8fc 100644 --- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java +++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java @@ -286,6 +286,15 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return client.dropNamespace(namespace); } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + if (cascade) { + throw new NotImplementedException("cascade not supported yet"); + }else { + return dropNamespace(namespace); + } + } + @Override public boolean setProperties(Namespace namespace, Map properties) { return client.setProperties(namespace, properties); diff --git a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java index 8267329678de..e954530d9653 100644 --- a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java +++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java @@ -113,6 +113,26 @@ public void testCreatingAndDroppingNamespaceWithContent() throws NessieNotFoundE Assertions.assertThat(catalog.namespaceExists(namespace)).isFalse(); } + @Test + public void testCreatingAndDroppingNamespaceCascade() throws NessieNotFoundException { + Namespace namespace = Namespace.of("test"); + catalog.createNamespace(namespace, ImmutableMap.of()); + Assertions.assertThat(catalog.namespaceExists(namespace)).isTrue(); + TableIdentifier identifier = TableIdentifier.of(namespace, "tbl"); + + Schema schema = + new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); + Assertions.assertThat(catalog.createTable(identifier, schema)).isNotNull(); + + ContentKey key = NessieUtil.toKey(identifier); + Assertions.assertThat( + api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) + .isPresent(); + + catalog.dropNamespace(namespace, true); + Assertions.assertThat(catalog.namespaceExists(namespace)).isFalse(); + } + @Test public void testSettingProperties() { Map properties = ImmutableMap.of("prop", "val"); diff --git a/spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java b/spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java index 3ad3f5d0ee2a..2cc853e830bd 100644 --- a/spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java +++ b/spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java @@ -507,7 +507,7 @@ public boolean dropNamespace(String[] namespace, boolean cascade) throws NoSuchNamespaceException { if (asNamespaceCatalog != null) { try { - return asNamespaceCatalog.dropNamespace(Namespace.of(namespace)); + return asNamespaceCatalog.dropNamespace(Namespace.of(namespace), cascade); } catch (org.apache.iceberg.exceptions.NoSuchNamespaceException e) { throw new NoSuchNamespaceException(namespace); } From f2a7ace016198c39fe630ef75a9c19969fc225b3 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 06:40:12 -0700 Subject: [PATCH 02/27] added all tests drop namespace cascade --- .../org/apache/iceberg/catalog/SessionCatalog.java | 11 +++++++++++ .../iceberg/aws/dynamodb/DynamoDbCatalog.java | 13 +------------ .../apache/iceberg/catalog/BaseSessionCatalog.java | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java b/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java index 157a4993706d..81ca1e31d2a3 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java +++ b/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java @@ -309,6 +309,17 @@ default List listNamespaces(SessionContext context) { */ boolean dropNamespace(SessionContext context, Namespace namespace); + /** + * Drop a namespace. If the namespace exists and was dropped, this will return true. + * + * @param context session context + * @param namespace a {@link Namespace namespace} + * @param cascade – When true, deletes all objects under the namespace + * @return true if the namespace was dropped, false otherwise. + * @throws NamespaceNotEmptyException If the namespace is not empty + */ + boolean dropNamespace(SessionContext context, Namespace namespace, boolean cascade); + /** * Set a collection of properties on a namespace in the catalog. * diff --git a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java index 7695037332a5..12248260c227 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java @@ -287,19 +287,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept @Override public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { - validateNamespace(namespace); - List tables = listTables(namespace); - if (tables.isEmpty()) { - return dropNamespace(namespace); - } - try { - tables.forEach(this::dropTable); - } catch (ConditionalCheckFailedException e) { - return false; - } + listTables(namespace).forEach(this::dropTable); return dropNamespace(namespace); - - } @Override diff --git a/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java b/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java index 04c5dc74b9c2..849a422f96da 100644 --- a/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java +++ b/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java @@ -148,7 +148,7 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept @Override public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - throw new NotImplementedException("cascade not supported yet"); + return BaseSessionCatalog.this.dropNamespace(context, namespace, true); }else { return dropNamespace(namespace); } From 8441c74bdc22b89609b027246ab70c0d349ae2ff Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 07:29:03 -0700 Subject: [PATCH 03/27] more tests for drop namespace with cascade --- .../iceberg/aws/dynamodb/DynamoDbCatalog.java | 4 +- .../apache/iceberg/aws/glue/GlueCatalog.java | 6 +- .../iceberg/catalog/BaseSessionCatalog.java | 7 +- .../apache/iceberg/hadoop/HadoopCatalog.java | 7 +- .../org/apache/iceberg/jdbc/JdbcCatalog.java | 3 +- .../apache/iceberg/rest/CatalogHandlers.java | 3 +- .../org/apache/iceberg/rest/RESTCatalog.java | 3 +- .../apache/iceberg/catalog/CatalogTests.java | 2 +- .../iceberg/hadoop/TestHadoopCatalog.java | 4 +- .../apache/iceberg/jdbc/TestJdbcCatalog.java | 3 +- .../iceberg/rest/RESTCatalogAdapter.java | 18 +- .../apache/iceberg/dell/ecs/EcsCatalog.java | 5 +- .../org/apache/iceberg/hive/HiveCatalog.java | 31 +- .../apache/iceberg/nessie/NessieCatalog.java | 5 +- .../apache/iceberg/nessie/TestNamespace.java | 6 +- spark/v3.3/spark/hs_err_pid13074.log | 883 ++++++++++++++++++ 16 files changed, 943 insertions(+), 47 deletions(-) create mode 100644 spark/v3.3/spark/hs_err_pid13074.log diff --git a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java index 12248260c227..3010f174756d 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java @@ -64,7 +64,6 @@ import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest; import software.amazon.awssdk.services.dynamodb.model.Delete; import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest; -import software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest; import software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest; import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse; import software.amazon.awssdk.services.dynamodb.model.GetItemRequest; @@ -286,7 +285,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { listTables(namespace).forEach(this::dropTable); return dropNamespace(namespace); } diff --git a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java index 61105060cad6..105970eb1dc5 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java @@ -24,7 +24,6 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; - import org.apache.commons.lang.NotImplementedException; import org.apache.hadoop.conf.Configuration; import org.apache.iceberg.BaseMetastoreCatalog; @@ -563,10 +562,11 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (cascade) { throw new NotImplementedException("cascade not supported yet"); - }else { + } else { return dropNamespace(namespace); } } diff --git a/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java b/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java index 849a422f96da..8a230dff8b37 100644 --- a/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java +++ b/core/src/main/java/org/apache/iceberg/catalog/BaseSessionCatalog.java @@ -25,8 +25,6 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Function; - -import org.apache.commons.lang.NotImplementedException; import org.apache.iceberg.Schema; import org.apache.iceberg.Table; import org.apache.iceberg.exceptions.NamespaceNotEmptyException; @@ -146,10 +144,11 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (cascade) { return BaseSessionCatalog.this.dropNamespace(context, namespace, true); - }else { + } else { return dropNamespace(namespace); } } diff --git a/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java b/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java index 954874e807d9..34a0cc7071cd 100644 --- a/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java +++ b/core/src/main/java/org/apache/iceberg/hadoop/HadoopCatalog.java @@ -27,8 +27,6 @@ import java.util.List; import java.util.Map; import java.util.Set; - -import org.apache.commons.lang.NotImplementedException; import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; @@ -228,7 +226,7 @@ protected boolean isValidIdentifier(TableIdentifier identifier) { @Override protected TableOperations newTableOps(TableIdentifier identifier) { return new HadoopTableOperations( - new Path(defaultWarehouseLocation(identifier)), fileIO, conf, lockManager); + new Path(defaultWarehouseLocation(identifier)), fileIO, conf, lockManager); } @Override @@ -352,7 +350,8 @@ public boolean dropNamespace(Namespace namespace) { } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (cascade) { // recursively delete all nested namespaces listNamespaces(namespace).forEach(n -> dropNamespace(n, true)); diff --git a/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java b/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java index bc86337c9c18..bbd7091302c2 100644 --- a/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java +++ b/core/src/main/java/org/apache/iceberg/jdbc/JdbcCatalog.java @@ -420,7 +420,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (cascade) { // recursively delete all nested namespaces listNamespaces(namespace).forEach(n -> dropNamespace(n, true)); diff --git a/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java b/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java index be57be64c744..2e300aebf66e 100644 --- a/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java +++ b/core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java @@ -129,7 +129,8 @@ public static void dropNamespace(SupportsNamespaces catalog, Namespace namespace } } - public static void dropNamespace(SupportsNamespaces catalog, Namespace namespace, boolean cascade) { + public static void dropNamespace( + SupportsNamespaces catalog, Namespace namespace, boolean cascade) { boolean dropped = catalog.dropNamespace(namespace, cascade); if (!dropped) { throw new NoSuchNamespaceException("Namespace does not exist: %s", namespace); diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java b/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java index 000165d82ab1..e1560448a8c6 100644 --- a/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java +++ b/core/src/main/java/org/apache/iceberg/rest/RESTCatalog.java @@ -229,7 +229,8 @@ public boolean dropNamespace(Namespace ns) throws NamespaceNotEmptyException { } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { return nsDelegate.dropNamespace(namespace, cascade); } diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index 91f4b38c756a..3909f82b4d8b 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -379,7 +379,7 @@ public void testDropNamespaceCascade() { Table table = catalog.buildTable(ident, SCHEMA).create(); Assert.assertTrue( - "Dropping an existing namespace should return true", catalog.dropNamespace(NS)); + "Dropping an existing namespace should return true", catalog.dropNamespace(NS)); Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); } diff --git a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java index a2d647aa7e63..e469d27f8f10 100644 --- a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java +++ b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java @@ -474,7 +474,7 @@ public void testDropNamespaceCascade() throws IOException { HadoopCatalog catalog = new HadoopCatalog(); catalog.setConf(new Configuration()); catalog.initialize( - "hadoop", ImmutableMap.of(CatalogProperties.WAREHOUSE_LOCATION, warehouseLocation)); + "hadoop", ImmutableMap.of(CatalogProperties.WAREHOUSE_LOCATION, warehouseLocation)); Namespace namespace1 = Namespace.of("db"); Namespace namespace2 = Namespace.of("db", "ns1"); @@ -482,7 +482,7 @@ public void testDropNamespaceCascade() throws IOException { TableIdentifier tbl2 = TableIdentifier.of(namespace2, "tbl1"); Lists.newArrayList(tbl1, tbl2) - .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); catalog.dropNamespace(namespace1, true); String metaLocation = warehouseLocation + "/" + "db"; diff --git a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java index b017a07ebcbf..107cf003fdc0 100644 --- a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java +++ b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java @@ -634,11 +634,10 @@ public void testDropNamespaceCascade() { TableIdentifier tbl4 = TableIdentifier.of("db", "tbl"); Lists.newArrayList(tbl0, tbl1, tbl2, tbl3, tbl4) - .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); catalog.dropNamespace(tbl4.namespace(), true); Assert.assertFalse(catalog.namespaceExists(tbl1.namespace())); - } @Test diff --git a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java index 17bbeaac93fc..3a7486be1841 100644 --- a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java +++ b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java @@ -24,7 +24,6 @@ import java.util.Map; import java.util.function.Consumer; import java.util.stream.Collectors; - import org.apache.http.NameValuePair; import org.apache.http.client.utils.URIBuilder; import org.apache.iceberg.catalog.Catalog; @@ -291,7 +290,8 @@ public T handleRequest( if (asNamespaceCatalog != null) { Namespace namespace = namespaceFromPathVars(vars); if (vars.containsKey("cascade")) { - CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace, Boolean.parseBoolean(vars.get("cascade"))); + CatalogHandlers.dropNamespace( + asNamespaceCatalog, namespace, Boolean.parseBoolean(vars.get("cascade"))); } else { CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace); } @@ -418,13 +418,19 @@ public T delete( Map headers, Consumer errorHandler) { URIBuilder uri = toUri(path); - return execute(HTTPMethod.DELETE, uri.getPath().substring(1), toQueryParams(uri), null, responseType, headers, errorHandler); + return execute( + HTTPMethod.DELETE, + uri.getPath().substring(1), + toQueryParams(uri), + null, + responseType, + headers, + errorHandler); } private Map toQueryParams(URIBuilder uri) { - return uri.getQueryParams() - .stream() - .collect(Collectors.toMap(NameValuePair::getName, NameValuePair::getValue)); + return uri.getQueryParams().stream() + .collect(Collectors.toMap(NameValuePair::getName, NameValuePair::getValue)); } private URIBuilder toUri(String path) { diff --git a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java index ba7367908cb7..f4089311c848 100644 --- a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java +++ b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java @@ -340,10 +340,11 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (cascade) { throw new RuntimeException("cascade not supported yet"); - }else { + } else { return dropNamespace(namespace); } } diff --git a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java index 47492a69397a..3dc616f01615 100644 --- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java +++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java @@ -364,24 +364,23 @@ public boolean dropNamespace(Namespace namespace) { } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (!isValidateNamespace(namespace)) { return false; } - if(cascade){ + if (cascade) { try { List tables = clients.run(client -> client.getAllTables("")); if (!tables.isEmpty()) { clients.run( - client -> { - for (String table : tables) { - client.dropTable( - namespace.level(0), - table); - LOG.info("Dropped table: {}", table); - } - return null; - }); + client -> { + for (String table : tables) { + client.dropTable(namespace.level(0), table); + LOG.info("Dropped table: {}", table); + } + return null; + }); } LOG.info("Dropped tables in namespace: {}", namespace); @@ -389,12 +388,18 @@ public boolean dropNamespace(Namespace namespace, boolean cascade) throws Namesp return false; } catch (TException e) { - throw new RuntimeException("Failed to drop namespace " + namespace + " in Hive Metastore", e); + throw new RuntimeException( + "Failed to drop namespace " + namespace + " in Hive Metastore", e); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException( - "Interrupted in call to drop dropDatabase( " + namespace + ", " + cascade + ") in Hive Metastore", e); + "Interrupted in call to drop dropDatabase( " + + namespace + + ", " + + cascade + + ") in Hive Metastore", + e); } } return dropNamespace(namespace); diff --git a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java index 3976a247c8fc..98500b81d4ed 100644 --- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java +++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java @@ -287,10 +287,11 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (cascade) { throw new NotImplementedException("cascade not supported yet"); - }else { + } else { return dropNamespace(namespace); } } diff --git a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java index e954530d9653..d36e3435e73b 100644 --- a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java +++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java @@ -121,13 +121,13 @@ public void testCreatingAndDroppingNamespaceCascade() throws NessieNotFoundExcep TableIdentifier identifier = TableIdentifier.of(namespace, "tbl"); Schema schema = - new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); + new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); Assertions.assertThat(catalog.createTable(identifier, schema)).isNotNull(); ContentKey key = NessieUtil.toKey(identifier); Assertions.assertThat( - api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) - .isPresent(); + api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) + .isPresent(); catalog.dropNamespace(namespace, true); Assertions.assertThat(catalog.namespaceExists(namespace)).isFalse(); diff --git a/spark/v3.3/spark/hs_err_pid13074.log b/spark/v3.3/spark/hs_err_pid13074.log new file mode 100644 index 000000000000..2ca6cbe60a9a --- /dev/null +++ b/spark/v3.3/spark/hs_err_pid13074.log @@ -0,0 +1,883 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGILL (0x4) at pc=0x000000013457cf12, pid=13074, tid=0x0000000000002003 +# +# JRE version: OpenJDK Runtime Environment AppleJDK-8.0.312.7.1 (build 1.8.0_312-b07) +# Java VM: OpenJDK 64-Bit Server VM AppleJDK-8.0.312.7.1 (25.312-b07 mixed mode bsd-amd64 compressed oops) +# Problematic frame: +# C [libboson-8249353338003169445.dylib+0x2c2f12] std::panicking::try::h2715e49523c5b40c+0x32 +# +# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again +# +# If you would like to submit a bug report, please visit: +# http://bugreport.java.com/bugreport/crash.jsp +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- T H R E A D --------------- + +Current thread (0x00007f80bb00c800): JavaThread "Test worker" [_thread_in_native, id=8195, stack(0x000000030537a000,0x000000030547a000)] + +siginfo: si_signo: 4 (SIGILL), si_code: 1 (ILL_ILLOPC), si_addr: 0x000000013457cf12 + +Registers: +RAX=0x0000600006e1f4e0, RBX=0x00000003054772a0, RCX=0x0000000000000000, RDX=0x0000000000000004 +RSP=0x0000000305477130, RBP=0x0000000305477210, RSI=0x0000000000000004, RDI=0x00007f80bb00c800 +R8 =0x0000000000000000, R9 =0x000000000000005e, R10=0x0000000000000060, R11=0x00000000af40dffb +R12=0x0000000000000000, R13=0x000000013291b430, R14=0x000000000000000f, R15=0x00007f80bb00c800 +RIP=0x000000013457cf12, EFLAGS=0x0000000000000246, ERR=0x0000000000000000 + TRAPNO=0x0000000000000006 + +Top of Stack: (sp=0x0000000305477130) +0x0000000305477130: 000000013291ba90 00000003054771d8 +0x0000000305477140: 0000000305477180 000000013291b430 +0x0000000305477150: 00007f80bb00c800 00000003054772e7 +0x0000000305477160: 00007f80bb804ab0 00007f80bb00c800 +0x0000000305477170: 0000000305477190 0000000109cef653 +0x0000000305477180: 00007f80bb00c800 00007f80bb00c800 +0x0000000305477190: 0000000305477220 0000000109bdfd66 +0x00000003054771a0: 00006000004e05a0 00007f80bb8049a0 +0x00000003054771b0: 00007f80bb80490f 0000600006e1f4e0 +0x00000003054771c0: 0000000305477388 0000000305477308 +0x00000003054771d0: 000000013291b430 00007f80bb00c800 +0x00000003054771e0: 00006000024ca700 0000600002ee4600 +0x00000003054771f0: 00000003054772e7 000000013291b430 +0x0000000305477200: 0000000305477388 00007f80bb00c800 +0x0000000305477210: 00000003054772f0 0000000134470b49 +0x0000000305477220: 0000000305477290 0000000109bdfe80 +0x0000000305477230: 000000013291b430 0000000000000004 +0x0000000305477240: 000000013291b430 00007f80bb00c800 +0x0000000305477250: 000000000000153d 000000013291b430 +0x0000000305477260: 00007f80bb00c800 000000013291b430 +0x0000000305477270: 0000000305477290 0000000109ceeab7 +0x0000000305477280: 000000013291b430 00007f80bb00c800 +0x0000000305477290: 0000000305477300 0000000109a3ad2f +0x00000003054772a0: 00000003054772e0 000000013291b430 +0x00000003054772b0: 00007f80bb00c800 00007f80bb00c800 +0x00000003054772c0: 00007f80bb00c800 000000013291b430 +0x00000003054772d0: 00007f80bb00c800 000000013291b430 +0x00000003054772e0: 00007f80bb00ca50 000000013291b430 +0x00000003054772f0: 0000000305477310 00000001344f356d +0x0000000305477300: 0000000305477388 00007f80bb00ca50 +0x0000000305477310: 0000000305477368 000000010af8ae47 +0x0000000305477320: 000000010af8ab62 0000000305477328 + +Instructions: (pc=0x000000013457cf12) +0x000000013457cef2: fb 48 8b 12 48 8d 7d a0 e8 c1 74 b8 00 44 0f b6 +0x000000013457cf02: 75 a0 49 83 fe 0f 0f 85 e9 00 00 00 48 8b 45 a8 +0x000000013457cf12: c5 f8 10 45 b0 c5 f8 29 85 60 ff ff ff 48 89 45 +0x000000013457cf22: a0 c5 f8 11 45 a8 48 8d bd 28 ff ff ff 48 8d 75 + +Register to memory mapping: + +RAX=0x0000600006e1f4e0 is an unknown value +RBX=0x00000003054772a0 is pointing into the stack for thread: 0x00007f80bb00c800 +RCX=0x0000000000000000 is an unknown value +RDX=0x0000000000000004 is an unknown value +RSP=0x0000000305477130 is pointing into the stack for thread: 0x00007f80bb00c800 +RBP=0x0000000305477210 is pointing into the stack for thread: 0x00007f80bb00c800 +RSI=0x0000000000000004 is an unknown value +RDI=0x00007f80bb00c800 is a thread +R8 =0x0000000000000000 is an unknown value +R9 =0x000000000000005e is an unknown value +R10=0x0000000000000060 is an unknown value +R11=0x00000000af40dffb is an unknown value +R12=0x0000000000000000 is an unknown value +R13={method} {0x000000013291b430} 'init' '(Ljava/lang/String;)V' in 'com/apple/boson/NativeBase' +R14=0x000000000000000f is an unknown value +R15=0x00007f80bb00c800 is a thread + + +Stack: [0x000000030537a000,0x000000030547a000], sp=0x0000000305477130, free space=1012k +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libboson-8249353338003169445.dylib+0x2c2f12] std::panicking::try::h2715e49523c5b40c+0x32 +C [libboson-8249353338003169445.dylib+0x1b6b49] boson::errors::try_unwrap_or_throw::hc18b9582fe6977ce+0x19 +C [libboson-8249353338003169445.dylib+0x23956d] Java_com_apple_boson_NativeBase_init+0x1d +j com.apple.boson.NativeBase.init(Ljava/lang/String;)V+0 +j com.apple.boson.NativeBase.initWithLogConf()V+84 +j com.apple.boson.NativeBase.load()V+27 +j com.apple.boson.NativeBase.()V+26 +v ~StubRoutines::call_stub +V [libjvm.dylib+0x2c938f] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x691 +V [libjvm.dylib+0x2997fc] InstanceKlass::call_class_initializer_impl(instanceKlassHandle, Thread*)+0xf0 +V [libjvm.dylib+0x29864d] InstanceKlass::initialize_impl(instanceKlassHandle, Thread*)+0x46f +V [libjvm.dylib+0x2981ca] InstanceKlass::initialize(Thread*)+0x3a +V [libjvm.dylib+0x2983ae] InstanceKlass::initialize_impl(instanceKlassHandle, Thread*)+0x1d0 +V [libjvm.dylib+0x2981ca] InstanceKlass::initialize(Thread*)+0x3a +V [libjvm.dylib+0x3cd339] LinkResolver::resolve_static_call(CallInfo&, KlassHandle&, Symbol*, Symbol*, KlassHandle, bool, bool, Thread*)+0x99 +V [libjvm.dylib+0x3d0763] LinkResolver::resolve_invokestatic(CallInfo&, constantPoolHandle, int, Thread*)+0x13f +V [libjvm.dylib+0x3d0487] LinkResolver::resolve_invoke(CallInfo&, Handle, constantPoolHandle, int, Bytecodes::Code, Thread*)+0x40d +V [libjvm.dylib+0x2c2a70] InterpreterRuntime::resolve_invoke(JavaThread*, Bytecodes::Code)+0x366 +j com.apple.boson.parquet.Utils.initColumnReader(Lorg/apache/parquet/column/ColumnDescriptor;IZ)J+161 +j com.apple.boson.parquet.AbstractColumnReader.initNative()V+23 +j com.apple.boson.parquet.ColumnReader.(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZ)V+67 +j com.apple.boson.parquet.Utils.getColumnReader(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZZ)Lcom/apple/boson/parquet/ColumnReader;+39 +j com.apple.boson.parquet.BosonIcebergColumnReader.reset()V+29 +j org.apache.iceberg.spark.data.vectorized.boson.BosonBaseBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+69 +j org.apache.iceberg.spark.data.vectorized.boson.BosonColumnarBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+4 +j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.advance()V+122 +j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.next()Ljava/lang/Object;+28 +j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetVectorizedReads.assertRecordsMatch(Lorg/apache/iceberg/Schema;ILjava/lang/Iterable;Ljava/io/File;ZZI)V+81 +j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetDictionaryEncodedVectorizedReads.testMixedDictionaryNonDictionaryReads()V+255 +v ~StubRoutines::call_stub +V [libjvm.dylib+0x2c938f] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x691 +V [libjvm.dylib+0x4d526a] Reflection::invoke(instanceKlassHandle, methodHandle, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*)+0x752 +V [libjvm.dylib+0x4d5e22] Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0x18a +V [libjvm.dylib+0x344486] JVM_InvokeMethod+0x210 +J 38216 sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x000000011115336d [0x0000000111153280+0xed] +J 38152 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x0000000110caaad0 [0x0000000110caa700+0x3d0] +J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] +j org.junit.runners.model.FrameworkMethod$1.runReflectiveCall()Ljava/lang/Object;+15 +J 44566 C1 org.junit.internal.runners.model.ReflectiveCallable.run()Ljava/lang/Object; (11 bytes) @ 0x0000000110800fc4 [0x0000000110800ec0+0x104] +j org.junit.runners.model.FrameworkMethod.invokeExplosively(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+10 +j org.junit.internal.runners.statements.InvokeMethod.evaluate()V+12 +j org.junit.rules.ExternalResource$1.evaluate()V+19 +J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] +j org.junit.runners.BlockJUnit4ClassRunner$1.evaluate()V+11 +j org.junit.runners.ParentRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V+17 +j org.junit.runners.BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V+38 +j org.junit.runners.BlockJUnit4ClassRunner.runChild(Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V+6 +j org.junit.runners.ParentRunner$4.run()V+12 +j org.junit.runners.ParentRunner$1.schedule(Ljava/lang/Runnable;)V+1 +j org.junit.runners.ParentRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+44 +j org.junit.runners.ParentRunner.access$100(Lorg/junit/runners/ParentRunner;Lorg/junit/runner/notification/RunNotifier;)V+2 +j org.junit.runners.ParentRunner$2.evaluate()V+8 +J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] +j org.junit.runners.ParentRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+24 +j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(Ljava/lang/String;)V+296 +j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/String;)V+14 +j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/Object;)V+5 +j org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+26 +j org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+5 +j sun.reflect.GeneratedMethodAccessor57.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+40 +J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] +J 46571 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V (42 bytes) @ 0x000000010d7db76c [0x000000010d7db3e0+0x38c] +J 46570 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V (9 bytes) @ 0x0000000111583e9c [0x0000000111583d40+0x15c] +j org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(Ljava/lang/Object;)V+22 +J 43919 C1 org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (184 bytes) @ 0x0000000110baf0bc [0x0000000110badd60+0x135c] +j com.sun.proxy.$Proxy2.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+16 +j org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run()V+34 +j org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(Ljava/lang/Runnable;)V+1 +j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+80 +j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Ljava/lang/Object;)V+5 +j org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+65 +j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Void;+343 +j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Object;+1 +j worker.org.gradle.process.internal.worker.GradleWorkerMain.run()V+250 +j worker.org.gradle.process.internal.worker.GradleWorkerMain.main([Ljava/lang/String;)V+7 +v ~StubRoutines::call_stub +V [libjvm.dylib+0x2c938f] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x691 +V [libjvm.dylib+0x30426f] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x248 +V [libjvm.dylib+0x3078ee] jni_CallStaticVoidMethod+0x1f7 +C [java+0x2d92] JavaMain+0x9df +C [libsystem_pthread.dylib+0x6259] _pthread_start+0x7d +C [libsystem_pthread.dylib+0x1c7b] thread_start+0xf +C 0x0000000000000000 + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j com.apple.boson.NativeBase.init(Ljava/lang/String;)V+0 +j com.apple.boson.NativeBase.initWithLogConf()V+84 +j com.apple.boson.NativeBase.load()V+27 +j com.apple.boson.NativeBase.()V+26 +v ~StubRoutines::call_stub +j com.apple.boson.parquet.Utils.initColumnReader(Lorg/apache/parquet/column/ColumnDescriptor;IZ)J+161 +j com.apple.boson.parquet.AbstractColumnReader.initNative()V+23 +j com.apple.boson.parquet.ColumnReader.(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZ)V+67 +j com.apple.boson.parquet.Utils.getColumnReader(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZZ)Lcom/apple/boson/parquet/ColumnReader;+39 +j com.apple.boson.parquet.BosonIcebergColumnReader.reset()V+29 +j org.apache.iceberg.spark.data.vectorized.boson.BosonBaseBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+69 +j org.apache.iceberg.spark.data.vectorized.boson.BosonColumnarBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+4 +j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.advance()V+122 +j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.next()Ljava/lang/Object;+28 +j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetVectorizedReads.assertRecordsMatch(Lorg/apache/iceberg/Schema;ILjava/lang/Iterable;Ljava/io/File;ZZI)V+81 +j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetDictionaryEncodedVectorizedReads.testMixedDictionaryNonDictionaryReads()V+255 +v ~StubRoutines::call_stub +J 38216 sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00000001111532f7 [0x0000000111153280+0x77] +J 38152 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x0000000110caaad0 [0x0000000110caa700+0x3d0] +J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] +j org.junit.runners.model.FrameworkMethod$1.runReflectiveCall()Ljava/lang/Object;+15 +J 44566 C1 org.junit.internal.runners.model.ReflectiveCallable.run()Ljava/lang/Object; (11 bytes) @ 0x0000000110800fc4 [0x0000000110800ec0+0x104] +j org.junit.runners.model.FrameworkMethod.invokeExplosively(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+10 +j org.junit.internal.runners.statements.InvokeMethod.evaluate()V+12 +j org.junit.rules.ExternalResource$1.evaluate()V+19 +J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] +j org.junit.runners.BlockJUnit4ClassRunner$1.evaluate()V+11 +j org.junit.runners.ParentRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V+17 +j org.junit.runners.BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V+38 +j org.junit.runners.BlockJUnit4ClassRunner.runChild(Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V+6 +j org.junit.runners.ParentRunner$4.run()V+12 +j org.junit.runners.ParentRunner$1.schedule(Ljava/lang/Runnable;)V+1 +j org.junit.runners.ParentRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+44 +j org.junit.runners.ParentRunner.access$100(Lorg/junit/runners/ParentRunner;Lorg/junit/runner/notification/RunNotifier;)V+2 +j org.junit.runners.ParentRunner$2.evaluate()V+8 +J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] +j org.junit.runners.ParentRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+24 +j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(Ljava/lang/String;)V+296 +j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/String;)V+14 +j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/Object;)V+5 +j org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+26 +j org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+5 +j sun.reflect.GeneratedMethodAccessor57.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+40 +J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] +J 46571 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V (42 bytes) @ 0x000000010d7db76c [0x000000010d7db3e0+0x38c] +J 46570 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V (9 bytes) @ 0x0000000111583e9c [0x0000000111583d40+0x15c] +j org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(Ljava/lang/Object;)V+22 +J 43919 C1 org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (184 bytes) @ 0x0000000110baf0bc [0x0000000110badd60+0x135c] +j com.sun.proxy.$Proxy2.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+16 +j org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run()V+34 +j org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(Ljava/lang/Runnable;)V+1 +j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+80 +j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Ljava/lang/Object;)V+5 +j org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+65 +j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Void;+343 +j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Object;+1 +j worker.org.gradle.process.internal.worker.GradleWorkerMain.run()V+250 +j worker.org.gradle.process.internal.worker.GradleWorkerMain.main([Ljava/lang/String;)V+7 +v ~StubRoutines::call_stub + +--------------- P R O C E S S --------------- + +Java Threads: ( => current thread ) + 0x00007f80bd5d0800 JavaThread "ForkJoinPool.commonPool-worker-13" daemon [_thread_blocked, id=116527, stack(0x0000000308a52000,0x0000000308b52000)] + 0x00007f806c6e1000 JavaThread "ForkJoinPool.commonPool-worker-4" daemon [_thread_blocked, id=160063, stack(0x0000000308d5b000,0x0000000308e5b000)] + 0x00007f80bcc57800 JavaThread "Attach Listener" daemon [_thread_blocked, id=240323, stack(0x0000000308b55000,0x0000000308c55000)] + 0x00007f80bd5d4000 JavaThread "pool-708-thread-2" [_thread_in_native, id=192003, stack(0x000000030ef7e000,0x000000030f07e000)] + 0x00007f805f673800 JavaThread "pool-708-thread-1" [_thread_in_native, id=242199, stack(0x000000030ee7b000,0x000000030ef7b000)] + 0x00007f80abe67000 JavaThread "pool-709-thread-1" [_thread_blocked, id=111191, stack(0x000000030791f000,0x0000000307a1f000)] + 0x00007f80bdd4e000 JavaThread "QueryStageCreator-11" daemon [_thread_blocked, id=137219, stack(0x00000003103ba000,0x00000003104ba000)] + 0x00007f80be1fc000 JavaThread "QueryStageCreator-10" daemon [_thread_blocked, id=129335, stack(0x000000030e869000,0x000000030e969000)] + 0x00007f80692a4000 JavaThread "pool-682-thread-1" [_thread_in_native, id=109859, stack(0x000000030f38a000,0x000000030f48a000)] + 0x00007f80bd83a800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=46771, stack(0x0000000309573000,0x0000000309673000)] + 0x00007f805cd29800 JavaThread "pool-653-thread-2" [_thread_in_native, id=121767, stack(0x000000030833d000,0x000000030843d000)] + 0x00007f805ba85000 JavaThread "pool-653-thread-1" [_thread_in_native, id=67667, stack(0x000000030f081000,0x000000030f181000)] + 0x00007f8069259800 JavaThread "pool-627-thread-1" [_thread_in_native, id=97843, stack(0x000000030d633000,0x000000030d733000)] + 0x00007f80bc45a000 JavaThread "process reaper" daemon [_thread_blocked, id=69723, stack(0x0000000306152000,0x000000030617a000)] + 0x00007f805d07c800 JavaThread "pool-601-thread-1" [_thread_in_native, id=87627, stack(0x0000000308543000,0x0000000308643000)] + 0x00007f805ce66800 JavaThread "iceberg-worker-pool-9" daemon [_thread_blocked, id=103819, stack(0x000000030e560000,0x000000030e660000)] + 0x00007f80bcf2d000 JavaThread "iceberg-worker-pool-8" daemon [_thread_blocked, id=80791, stack(0x000000030e45d000,0x000000030e55d000)] + 0x00007f80bcf2c000 JavaThread "iceberg-worker-pool-7" daemon [_thread_blocked, id=122915, stack(0x000000030e35a000,0x000000030e45a000)] + 0x00007f80bccb9800 JavaThread "iceberg-worker-pool-6" daemon [_thread_blocked, id=119571, stack(0x000000030e154000,0x000000030e254000)] + 0x00007f80bde1a000 JavaThread "iceberg-worker-pool-5" daemon [_thread_blocked, id=89123, stack(0x000000030e051000,0x000000030e151000)] + 0x00007f80abdc8000 JavaThread "iceberg-worker-pool-4" daemon [_thread_blocked, id=101999, stack(0x000000030df4e000,0x000000030e04e000)] + 0x00007f80abdbf800 JavaThread "iceberg-worker-pool-3" daemon [_thread_blocked, id=117135, stack(0x000000030de4b000,0x000000030df4b000)] + 0x00007f80bcdec800 JavaThread "iceberg-worker-pool-2" daemon [_thread_blocked, id=94583, stack(0x000000030dd48000,0x000000030de48000)] + 0x00007f80abe66000 JavaThread "iceberg-worker-pool-1" daemon [_thread_blocked, id=123219, stack(0x000000030dc45000,0x000000030dd45000)] + 0x00007f806b070000 JavaThread "iceberg-worker-pool-0" daemon [_thread_blocked, id=98863, stack(0x000000030db42000,0x000000030dc42000)] + 0x00007f80688bd000 JavaThread "pool-573-thread-1" [_thread_in_native, id=51359, stack(0x000000030da3f000,0x000000030db3f000)] + 0x00007f80aafcd000 JavaThread "pool-322-thread-2" [_thread_in_native, id=122475, stack(0x000000030d93c000,0x000000030da3c000)] + 0x00007f80bdf82800 JavaThread "pool-322-thread-1" [_thread_in_native, id=63027, stack(0x000000030d839000,0x000000030d939000)] + 0x00007f80aafb2000 JavaThread "pool-296-thread-1" [_thread_in_native, id=101623, stack(0x000000030e257000,0x000000030e357000)] + 0x00007f80bcf52000 JavaThread "pool-270-thread-1" [_thread_in_native, id=90199, stack(0x000000030d736000,0x000000030d836000)] + 0x00007f805ccdb000 JavaThread "pool-244-thread-2" [_thread_in_native, id=117731, stack(0x000000030d42d000,0x000000030d52d000)] + 0x00007f805e602800 JavaThread "pool-244-thread-1" [_thread_in_native, id=117943, stack(0x000000030d32a000,0x000000030d42a000)] + 0x00007f805e64c000 JavaThread "pool-218-thread-2" [_thread_in_native, id=95591, stack(0x000000030d124000,0x000000030d224000)] + 0x00007f80bc94e000 JavaThread "pool-218-thread-1" [_thread_in_native, id=122287, stack(0x000000030d021000,0x000000030d121000)] + 0x00007f80bdec2000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=127747, stack(0x000000030894f000,0x0000000308a4f000)] + 0x00007f805aa60000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=70271, stack(0x000000030884c000,0x000000030894c000)] + 0x00007f80bca99000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=81535, stack(0x0000000308749000,0x0000000308849000)] + 0x00007f80bd6cf000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=44791, stack(0x0000000308646000,0x0000000308746000)] + 0x00007f805a883800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=124275, stack(0x000000030ca0f000,0x000000030cb0f000)] + 0x00007f805c57d800 JavaThread "pool-173-thread-2" [_thread_in_native, id=124759, stack(0x000000030c90c000,0x000000030ca0c000)] + 0x00007f80abeb4800 JavaThread "pool-173-thread-1" [_thread_in_native, id=82211, stack(0x000000030c809000,0x000000030c909000)] + 0x00007f80bdaa9000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=67959, stack(0x0000000309064000,0x0000000309164000)] + 0x00007f80bc888000 JavaThread "pool-144-thread-2" [_thread_in_native, id=60935, stack(0x0000000308440000,0x0000000308540000)] + 0x00007f80bc6f3800 JavaThread "pool-144-thread-1" [_thread_in_native, id=52331, stack(0x000000030c500000,0x000000030c600000)] + 0x00007f805d72d800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=90679, stack(0x000000030c1f7000,0x000000030c2f7000)] + 0x00007f805c90d000 JavaThread "pool-116-thread-1" [_thread_in_native, id=89935, stack(0x000000030c0f4000,0x000000030c1f4000)] + 0x00007f80bc9c0800 JavaThread "pool-90-thread-2" [_thread_in_native, id=89423, stack(0x000000030beee000,0x000000030bfee000)] + 0x00007f80bc6b3000 JavaThread "pool-90-thread-1" [_thread_in_native, id=129043, stack(0x000000030bdeb000,0x000000030beeb000)] + 0x00007f80bc6a9800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=78031, stack(0x000000030b1c7000,0x000000030b2c7000)] + 0x00007f805b158000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=74279, stack(0x000000030b0c4000,0x000000030b1c4000)] + 0x00007f80bdc4c000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=78907, stack(0x000000030afc1000,0x000000030b0c1000)] + 0x00007f80bc84c000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=66895, stack(0x000000030997f000,0x0000000309a7f000)] + 0x00007f80bb66c000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=84339, stack(0x000000030823a000,0x000000030833a000)] + 0x00007f80bd4a1800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=54895, stack(0x0000000308137000,0x0000000308237000)] + 0x00007f80be71c000 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=53015, stack(0x0000000308034000,0x0000000308134000)] + 0x00007f80bb7f7000 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=65031, stack(0x0000000307f31000,0x0000000308031000)] + 0x00007f80aa858000 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=65555, stack(0x0000000307e2e000,0x0000000307f2e000)] + 0x00007f80abab7800 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=66167, stack(0x0000000307d2b000,0x0000000307e2b000)] + 0x00007f80bde28000 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=46463, stack(0x0000000307c28000,0x0000000307d28000)] + 0x00007f80bb708000 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=53583, stack(0x0000000307a22000,0x0000000307b22000)] + 0x00007f805b612000 JavaThread "pool-35-thread-2" [_thread_in_native, id=47723, stack(0x0000000307b25000,0x0000000307c25000)] + 0x00007f80bc9f3800 JavaThread "pool-35-thread-1" [_thread_in_native, id=80059, stack(0x000000030aebe000,0x000000030afbe000)] + 0x00007f80ab9b0800 JavaThread "pool-9-thread-1" [_thread_in_native, id=85047, stack(0x000000030a29a000,0x000000030a39a000)] + 0x00007f80bd879000 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=36867, stack(0x000000030781c000,0x000000030791c000)] + 0x00007f80bc2c5000 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=39967, stack(0x0000000307719000,0x0000000307819000)] + 0x00007f80bc2c4000 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=41495, stack(0x0000000307616000,0x0000000307716000)] + 0x00007f80be088000 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=38147, stack(0x0000000307513000,0x0000000307613000)] + 0x00007f80bc35c800 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=38411, stack(0x0000000307410000,0x0000000307510000)] + 0x00007f80bc35b800 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=35879, stack(0x000000030730d000,0x000000030740d000)] + 0x00007f805ad33800 JavaThread "derby.rawStoreDaemon" daemon [_thread_blocked, id=35387, stack(0x000000030720a000,0x000000030730a000)] + 0x00007f80be0a5800 JavaThread "Timer-0" daemon [_thread_blocked, id=39323, stack(0x0000000307107000,0x0000000307207000)] + 0x00007f80be50a800 JavaThread "iceberg-lock-manager-2" daemon [_thread_blocked, id=34339, stack(0x0000000307004000,0x0000000307104000)] + 0x00007f80be509800 JavaThread "iceberg-lock-manager-3" daemon [_thread_blocked, id=34563, stack(0x0000000306f01000,0x0000000307001000)] + 0x00007f80ab960000 JavaThread "iceberg-lock-manager-1" daemon [_thread_blocked, id=41767, stack(0x0000000306dfe000,0x0000000306efe000)] + 0x00007f805b126800 JavaThread "iceberg-lock-manager-0" daemon [_thread_blocked, id=33795, stack(0x0000000306cfb000,0x0000000306dfb000)] + 0x00007f80bc40f000 JavaThread "org.apache.hadoop.fs.FileSystem$Statistics$StatisticsDataReferenceCleaner" daemon [_thread_blocked, id=33079, stack(0x0000000306bcd000,0x0000000306ccd000)] + 0x00007f80bd4a0800 JavaThread "/127.0.0.1:59642 to /127.0.0.1:59640 workers Thread 3" [_thread_in_native, id=28163, stack(0x0000000306aca000,0x0000000306bca000)] + 0x00007f80bd4b6800 JavaThread "/127.0.0.1:59642 to /127.0.0.1:59640 workers Thread 2" [_thread_blocked, id=28975, stack(0x00000003069c7000,0x0000000306ac7000)] + 0x00007f80abbb7800 JavaThread "/127.0.0.1:59642 to /127.0.0.1:59640 workers" [_thread_blocked, id=24379, stack(0x00000003068c4000,0x00000003069c4000)] + 0x00007f80bd015000 JavaThread "Service Thread" daemon [_thread_blocked, id=30215, stack(0x00000003066be000,0x00000003067be000)] + 0x00007f80bc01f000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=30979, stack(0x00000003065bb000,0x00000003066bb000)] + 0x00007f80ab81c800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=23043, stack(0x00000003064b8000,0x00000003065b8000)] + 0x00007f80ab81b800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=22787, stack(0x00000003063b5000,0x00000003064b5000)] + 0x00007f80ba82e000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=22531, stack(0x00000003062b2000,0x00000003063b2000)] + 0x00007f80ab808800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=32259, stack(0x00000003061af000,0x00000003062af000)] + 0x00007f80bc00f800 JavaThread "Finalizer" daemon [_thread_blocked, id=20771, stack(0x0000000305f9e000,0x000000030609e000)] + 0x00007f80aa850000 JavaThread "Reference Handler" daemon [_thread_blocked, id=17187, stack(0x0000000305e9b000,0x0000000305f9b000)] +=>0x00007f80bb00c800 JavaThread "Test worker" [_thread_in_native, id=8195, stack(0x000000030537a000,0x000000030547a000)] + +Other Threads: + 0x00007f80aa84f000 VMThread [stack: 0x0000000305d98000,0x0000000305e98000] [id=16643] + 0x00007f80ab809000 WatcherThread [stack: 0x00000003067c1000,0x00000003068c1000] [id=23823] + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +heap address: 0x0000000720000000, size: 2560 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +Narrow klass base: 0x0000000000000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x00000007c0000000 + +Heap: + PSYoungGen total 582656K, used 285092K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 96% used [0x000000078ab00000,0x000000079bf2e740,0x000000079c800000) + from space 290816K, 0% used [0x00000007ae400000,0x00000007ae63ac08,0x00000007c0000000) + to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) + ParOldGen total 1614848K, used 1493457K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 92% used [0x0000000720000000,0x000000077b274470,0x0000000782900000) + Metaspace used 236739K, capacity 254086K, committed 254320K, reserved 1269760K + class space used 28627K, capacity 33002K, committed 33200K, reserved 1048576K + +Card table byte_map: [0x0000000119f73000,0x000000011a474000] byte_map_base: 0x0000000116673000 + +Marking Bits: (ParMarkBitMap*) 0x0000000109e85f18 + Begin Bits: [0x000000011a474000, 0x000000011cc74000) + End Bits: [0x000000011cc74000, 0x000000011f474000) + +Polling page: 0x0000000108d65000 + +CodeCache: size=245760Kb used=29642Kb max_used=113867Kb free=216117Kb + bounds [0x000000010af73000, 0x0000000111f53000, 0x0000000119f73000] + total_blobs=10066 nmethods=8925 adapters=1050 + compilation: enabled + +Compilation events (10 events): +Event: 278.816 Thread 0x00007f80ab81c800 46972 4 sun.invoke.util.VerifyType::isNullConversion (157 bytes) +Event: 278.817 Thread 0x00007f80ab81b800 nmethod 46965 0x000000010c3e3fd0 code [0x000000010c3e4160, 0x000000010c3e4468] +Event: 278.817 Thread 0x00007f80ba82e000 nmethod 46971 0x0000000111ec2c10 code [0x0000000111ec2d60, 0x0000000111ec2dd8] +Event: 278.817 Thread 0x00007f80ab81b800 46973 4 java.lang.invoke.BoundMethodHandle::rebind (14 bytes) +Event: 278.817 Thread 0x00007f80ba82e000 46974 4 java.lang.invoke.BoundMethodHandle::tooComplex (27 bytes) +Event: 278.818 Thread 0x00007f80ba82e000 nmethod 46974 0x000000010c3e2710 code [0x000000010c3e2860, 0x000000010c3e2938] +Event: 278.818 Thread 0x00007f80ab81b800 nmethod 46973 0x000000010c3e3c10 code [0x000000010c3e3d60, 0x000000010c3e3e58] +Event: 278.818 Thread 0x00007f80ba82e000 46975 4 java.lang.invoke.LambdaForm::expressionCount (11 bytes) +Event: 278.818 Thread 0x00007f80ba82e000 nmethod 46975 0x0000000111ecacd0 code [0x0000000111ecae20, 0x0000000111ecae98] +Event: 278.819 Thread 0x00007f80ab81c800 nmethod 46972 0x000000010c3e5c10 code [0x000000010c3e5e00, 0x000000010c3e6240] + +GC Heap History (10 events): +Event: 275.084 GC heap before +{Heap before GC invocations=206 (full 14): + PSYoungGen total 582656K, used 555973K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) + from space 290816K, 90% used [0x000000079c800000,0x00000007ac9f1578,0x00000007ae400000) + to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) + ParOldGen total 1614848K, used 1325971K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 82% used [0x0000000720000000,0x0000000770ee4d98,0x0000000782900000) + Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K + class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K +Event: 275.125 GC heap after +Heap after GC invocations=206 (full 14): + PSYoungGen total 582656K, used 282312K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) + from space 290816K, 97% used [0x00000007ae400000,0x00000007bf7b2318,0x00000007c0000000) + to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) + ParOldGen total 1614848K, used 1326059K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 82% used [0x0000000720000000,0x0000000770efad98,0x0000000782900000) + Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K + class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K +} +Event: 275.253 GC heap before +{Heap before GC invocations=207 (full 14): + PSYoungGen total 582656K, used 574152K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) + from space 290816K, 97% used [0x00000007ae400000,0x00000007bf7b2318,0x00000007c0000000) + to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) + ParOldGen total 1614848K, used 1326059K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 82% used [0x0000000720000000,0x0000000770efad98,0x0000000782900000) + Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K + class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K +Event: 275.385 GC heap after +Heap after GC invocations=207 (full 14): + PSYoungGen total 582656K, used 160430K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) + from space 290816K, 55% used [0x000000079c800000,0x00000007a64ab880,0x00000007ae400000) + to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) + ParOldGen total 1614848K, used 1432691K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 88% used [0x0000000720000000,0x000000077771cdb8,0x0000000782900000) + Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K + class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K +} +Event: 275.813 GC heap before +{Heap before GC invocations=208 (full 14): + PSYoungGen total 582656K, used 452270K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) + from space 290816K, 55% used [0x000000079c800000,0x00000007a64ab880,0x00000007ae400000) + to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) + ParOldGen total 1614848K, used 1432691K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 88% used [0x0000000720000000,0x000000077771cdb8,0x0000000782900000) + Metaspace used 236388K, capacity 253710K, committed 253936K, reserved 1269760K + class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K +Event: 275.884 GC heap after +Heap after GC invocations=208 (full 14): + PSYoungGen total 582656K, used 115330K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) + from space 290816K, 39% used [0x00000007ae400000,0x00000007b54a0b48,0x00000007c0000000) + to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) + ParOldGen total 1614848K, used 1493401K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 92% used [0x0000000720000000,0x000000077b266470,0x0000000782900000) + Metaspace used 236388K, capacity 253710K, committed 253936K, reserved 1269760K + class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K +} +Event: 276.492 GC heap before +{Heap before GC invocations=209 (full 14): + PSYoungGen total 582656K, used 406965K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 99% used [0x000000078ab00000,0x000000079c7ccb58,0x000000079c800000) + from space 290816K, 39% used [0x00000007ae400000,0x00000007b54a0b48,0x00000007c0000000) + to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) + ParOldGen total 1614848K, used 1493401K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 92% used [0x0000000720000000,0x000000077b266470,0x0000000782900000) + Metaspace used 236426K, capacity 253716K, committed 253936K, reserved 1269760K + class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K +Event: 276.501 GC heap after +Heap after GC invocations=209 (full 14): + PSYoungGen total 582656K, used 7339K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) + from space 290816K, 2% used [0x000000079c800000,0x000000079cf2adf8,0x00000007ae400000) + to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) + ParOldGen total 1614848K, used 1493417K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 92% used [0x0000000720000000,0x000000077b26a470,0x0000000782900000) + Metaspace used 236426K, capacity 253716K, committed 253936K, reserved 1269760K + class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K +} +Event: 276.898 GC heap before +{Heap before GC invocations=210 (full 14): + PSYoungGen total 582656K, used 299179K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) + from space 290816K, 2% used [0x000000079c800000,0x000000079cf2adf8,0x00000007ae400000) + to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) + ParOldGen total 1614848K, used 1493417K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 92% used [0x0000000720000000,0x000000077b26a470,0x0000000782900000) + Metaspace used 236449K, capacity 253788K, committed 253936K, reserved 1269760K + class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K +Event: 276.904 GC heap after +Heap after GC invocations=210 (full 14): + PSYoungGen total 582656K, used 2283K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) + eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) + from space 290816K, 0% used [0x00000007ae400000,0x00000007ae63ac08,0x00000007c0000000) + to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) + ParOldGen total 1614848K, used 1493457K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) + object space 1614848K, 92% used [0x0000000720000000,0x000000077b274470,0x0000000782900000) + Metaspace used 236449K, capacity 253788K, committed 253936K, reserved 1269760K + class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K +} + +Deoptimization events (10 events): +Event: 277.125 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000111dc1bc0 method=org.apache.iceberg.spark.data.RandomData$RandomDataGenerator.primitive(Lorg/apache/iceberg/types/Type$PrimitiveType;)Ljava/lang/Object; @ 6 +Event: 277.130 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000010b2ec078 method=org.apache.parquet.schema.PrimitiveComparator$9.compare(ILjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;I)I @ 6 +Event: 277.131 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000010bc4be4c method=org.apache.parquet.schema.PrimitiveComparator$9.compare(ILjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;I)I @ 6 +Event: 277.647 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000011123b630 method=java.util.regex.Pattern$CharProperty.match(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z @ 40 +Event: 277.651 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000011164b404 method=java.nio.Buffer.limit(I)Ljava/nio/Buffer; @ 30 +Event: 277.713 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 +Event: 277.714 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 +Event: 277.715 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 +Event: 277.715 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 +Event: 277.736 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010c3e7b54 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 + +Classes redefined (2 events): +Event: 252.822 Thread 0x00007f80aa84f000 redefined class name=java.lang.Object, count=1 +Event: 252.844 Thread 0x00007f80aa84f000 redefined class name=org.apache.iceberg.data.DeleteFilter, count=2 + +Internal exceptions (10 events): +Event: 255.507 Thread 0x00007f80bb00c800 Exception (0x00000007a12aadf8) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] +Event: 255.959 Thread 0x00007f80bb00c800 Exception (0x00000007a5e14820) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/interpreter/linkResolver.cpp, line 620 +Event: 255.959 Thread 0x00007f80bb00c800 Exception (0x00000007a5e17eb8) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] +Event: 256.738 Thread 0x00007f80bb00c800 Exception (0x000000078c7bdc98) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/interpreter/linkResolver.cpp, line 620] +Event: 256.947 Thread 0x00007f80bb00c800 Exception (0x000000078e677820) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/interpreter/linkResolve +Event: 257.510 Thread 0x00007f80bb00c800 Exception (0x000000078faccec8) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] +Event: 257.985 Thread 0x00007f80bb00c800 Implicit null exception at 0x0000000111edbc8b to 0x0000000111edeea1 +Event: 259.203 Thread 0x00007f80bb00c800 Implicit null exception at 0x0000000111f45f98 to 0x0000000111f46121 +Event: 261.318 Thread 0x00007f80bb00c800 Exception (0x0000000799964250) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] +Event: 277.648 Thread 0x00007f80bb00c800 Exception (0x000000079bac7388) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/prims/jni.cpp, line 711] + +Events (10 events): +Event: 278.808 loading class com/apple/boson/Utils +Event: 278.808 loading class com/apple/boson/Utils done +Event: 278.808 loading class com/apple/boson/Utils$ +Event: 278.808 loading class com/apple/boson/Utils$ done +Event: 278.816 loading class scala/Function1 +Event: 278.816 loading class scala/Function1 done +Event: 278.824 loading class scala/Function1 +Event: 278.824 loading class scala/Function1 done +Event: 278.826 loading class scala/Function1 +Event: 278.826 loading class scala/Function1 done + + +Dynamic libraries: +0x00007ff825538000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa +0x00007ff81002f000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x00007ff812cea000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData +0x00007ff80dd1a000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation +0x00007ff8190aa000 /usr/lib/libSystem.B.dylib +0x00007ff811038000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation +0x00007ffb0db97000 /System/Library/PrivateFrameworks/CollectionViewCore.framework/Versions/A/CollectionViewCore +0x00007ff81f4f6000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices +0x00007ff817151000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap +0x00007ff81afd9000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport +0x00007ff81b062000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity +0x00007ffb23e69000 /System/Library/PrivateFrameworks/WindowManagement.framework/Versions/A/WindowManagement +0x00007ff80da04000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration +0x00007ff81a3d6000 /usr/lib/libspindump.dylib +0x00007ff811206000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers +0x00007ff815631000 /usr/lib/libapp_launch_measurement.dylib +0x00007ff8142a5000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics +0x00007ff815634000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout +0x00007ff8169c5000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal +0x00007ff817914000 /usr/lib/liblangid.dylib +0x00007ff817156000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG +0x00007ff811b40000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight +0x00007ff811f2a000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics +0x00007ff81fbc8000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate +0x00007ff819e4b000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices +0x00007ff8169a8000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface +0x00007ff8142cf000 /usr/lib/libDiagnosticMessagesClient.dylib +0x00007ff818fc0000 /usr/lib/libz.1.dylib +0x00007ff82314a000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices +0x00007ff81713d000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation +0x00007ff80f8f7000 /usr/lib/libicucore.A.dylib +0x00007ff81be7c000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox +0x00007ff81afe4000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore +0x00007ff9147cf000 /System/Library/PrivateFrameworks/TextInput.framework/Versions/A/TextInput +0x00007ff811ab5000 /usr/lib/libMobileGestalt.dylib +0x00007ff816e45000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x00007ff814fd2000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore +0x00007ff80f575000 /System/Library/Frameworks/Security.framework/Versions/A/Security +0x00007ff81f52e000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition +0x00007ff815371000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI +0x00007ff80ee56000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio +0x00007ff8143a9000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration +0x00007ff81a7f4000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport +0x00007ff811ab4000 /usr/lib/libenergytrace.dylib +0x00007ff80ff11000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit +0x00007ff81f927000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices +0x00007ff8155c9000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis +0x00007ffa230c5000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL +0x00007ff81567c000 /usr/lib/libxml2.2.dylib +0x00007ff818520000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag +0x00007ff80cb94000 /usr/lib/libobjc.A.dylib +0x00007ff80ce5a000 /usr/lib/libc++.1.dylib +0x00007ff81274c000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync +0x00007ff80cf65000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x00007ff8174f1000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage +0x00007ff80ec67000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText +0x00007ff81718e000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO +0x00007ff8190b0000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking +0x00007ff819330000 /usr/lib/libcompression.dylib +0x00007ff81af0b000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO +0x00007ff819a7b000 /usr/lib/libate.dylib +0x00007ff8190a5000 /usr/lib/system/libcache.dylib +0x00007ff819060000 /usr/lib/system/libcommonCrypto.dylib +0x00007ff819089000 /usr/lib/system/libcompiler_rt.dylib +0x00007ff81907f000 /usr/lib/system/libcopyfile.dylib +0x00007ff80ccc3000 /usr/lib/system/libcorecrypto.dylib +0x00007ff80cd87000 /usr/lib/system/libdispatch.dylib +0x00007ff80cf0f000 /usr/lib/system/libdyld.dylib +0x00007ff81909b000 /usr/lib/system/libkeymgr.dylib +0x00007ff81903f000 /usr/lib/system/libmacho.dylib +0x00007ff81860d000 /usr/lib/system/libquarantine.dylib +0x00007ff819099000 /usr/lib/system/libremovefile.dylib +0x00007ff811b0e000 /usr/lib/system/libsystem_asl.dylib +0x00007ff80cc65000 /usr/lib/system/libsystem_blocks.dylib +0x00007ff80cdd1000 /usr/lib/system/libsystem_c.dylib +0x00007ff819091000 /usr/lib/system/libsystem_collections.dylib +0x00007ff817905000 /usr/lib/system/libsystem_configuration.dylib +0x00007ff816979000 /usr/lib/system/libsystem_containermanager.dylib +0x00007ff818cf8000 /usr/lib/system/libsystem_coreservices.dylib +0x00007ff80fb8b000 /usr/lib/system/libsystem_darwin.dylib +0x00007ff81909c000 /usr/lib/system/libsystem_dnssd.dylib +0x00007ff80cdce000 /usr/lib/system/libsystem_featureflags.dylib +0x00007ff80cf3a000 /usr/lib/system/libsystem_info.dylib +0x00007ff818fd3000 /usr/lib/system/libsystem_m.dylib +0x00007ff80cd5a000 /usr/lib/system/libsystem_malloc.dylib +0x00007ff811a9d000 /usr/lib/system/libsystem_networkextension.dylib +0x00007ff80ffd0000 /usr/lib/system/libsystem_notify.dylib +0x00007ff817909000 /usr/lib/system/libsystem_sandbox.dylib +0x00007ff819096000 /usr/lib/system/libsystem_secinit.dylib +0x00007ff80cec9000 /usr/lib/system/libsystem_kernel.dylib +0x00007ff80cf30000 /usr/lib/system/libsystem_platform.dylib +0x00007ff80cf03000 /usr/lib/system/libsystem_pthread.dylib +0x00007ff81355e000 /usr/lib/system/libsystem_symptoms.dylib +0x00007ff80cca9000 /usr/lib/system/libsystem_trace.dylib +0x00007ff81906c000 /usr/lib/system/libunwind.dylib +0x00007ff80cc69000 /usr/lib/system/libxpc.dylib +0x00007ff80ceb3000 /usr/lib/libc++abi.dylib +0x00007ff819077000 /usr/lib/liboah.dylib +0x00007ff81980b000 /usr/lib/liblzma.5.dylib +0x00007ff8190ac000 /usr/lib/libfakelink.dylib +0x00007ff8116f7000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork +0x00007ff8191e9000 /usr/lib/libarchive.2.dylib +0x00007ff81d7cf000 /System/Library/Frameworks/Combine.framework/Versions/A/Combine +0x00007ff81b8f4000 /usr/lib/swift/libswiftCore.dylib +0x00007ff911814000 /usr/lib/swift/libswiftCoreFoundation.dylib +0x00007ff90f7cd000 /usr/lib/swift/libswiftDarwin.dylib +0x00007ff821149000 /usr/lib/swift/libswiftDispatch.dylib +0x00007ff911830000 /usr/lib/swift/libswiftIOKit.dylib +0x00007ff823583000 /usr/lib/swift/libswiftObjectiveC.dylib +0x00007ff911825000 /usr/lib/swift/libswiftXPC.dylib +0x00007ffb2a743000 /usr/lib/swift/libswift_Concurrency.dylib +0x00007ffb2a882000 /usr/lib/swift/libswift_StringProcessing.dylib +0x00007ff823587000 /usr/lib/swift/libswiftos.dylib +0x00007ff80fe92000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal +0x00007ff818634000 /usr/lib/libbsm.0.dylib +0x00007ff819044000 /usr/lib/system/libkxld.dylib +0x00007ff8155fd000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents +0x00007ff80fb96000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore +0x00007ff814312000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata +0x00007ff818cfe000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices +0x00007ff819271000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit +0x00007ff8134e5000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE +0x00007ff80d3fd000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices +0x00007ff8197bc000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices +0x00007ff81560a000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList +0x00007ff8192fd000 /usr/lib/libapple_nghttp2.dylib +0x00007ff8116f3000 /usr/lib/libnetwork.dylib +0x00007ff813163000 /usr/lib/libsqlite3.dylib +0x00007ff813566000 /System/Library/Frameworks/Network.framework/Versions/A/Network +0x00007ffb2972d000 /usr/lib/libCoreEntitlements.dylib +0x00007ffb17068000 /System/Library/PrivateFrameworks/MessageSecurity.framework/Versions/A/MessageSecurity +0x00007ff81314a000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer +0x00007ff818cd7000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression +0x00007ff81861c000 /usr/lib/libcoretls.dylib +0x00007ff819825000 /usr/lib/libcoretls_cfhelpers.dylib +0x00007ff81932a000 /usr/lib/libpam.2.dylib +0x00007ff819893000 /usr/lib/libxar.1.dylib +0x00007ff819e27000 /usr/lib/libheimdal-asn1.dylib +0x00007ff8190b1000 /usr/lib/libpcap.A.dylib +0x00007ff813555000 /usr/lib/libdns_services.dylib +0x00007ff817910000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo +0x00007ff818329000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer +0x00007ff818ce8000 /usr/lib/libbz2.1.0.dylib +0x00007ff818610000 /usr/lib/libCheckFix.dylib +0x00007ff811b25000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC +0x00007ff817916000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP +0x00007ff8142d1000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities +0x00007ff818644000 /usr/lib/libmecab.dylib +0x00007ff80da83000 /usr/lib/libCRFSuite.dylib +0x00007ff81869e000 /usr/lib/libgermantok.dylib +0x00007ff8192d8000 /usr/lib/libThaiTokenizer.dylib +0x00007ff8143b1000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage +0x00007ff81f8fa000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib +0x00007ff8198d5000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib +0x00007ff818124000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib +0x00007ff80d7b9000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib +0x00007ff81940f000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib +0x00007ff8186a1000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib +0x00007ff819315000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib +0x00007ff819409000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib +0x00007ff817a02000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib +0x00007ff80d98d000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib +0x00007ffb16367000 /System/Library/PrivateFrameworks/MIL.framework/Versions/A/MIL +0x00007ff8190e6000 /usr/lib/libiconv.2.dylib +0x00007ff81903e000 /usr/lib/libcharset.1.dylib +0x00007ff8155e1000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory +0x00007ff8155d5000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory +0x00007ff819827000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS +0x00007ff818553000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation +0x00007ff8198a1000 /usr/lib/libutil.dylib +0x00007ffb154f8000 /System/Library/PrivateFrameworks/InstalledContentLibrary.framework/Versions/A/InstalledContentLibrary +0x00007ff80fed5000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore +0x00007ffa2c6cf000 /System/Library/PrivateFrameworks/AppleMobileFileIntegrity.framework/Versions/A/AppleMobileFileIntegrity +0x00007ff9117f4000 /usr/lib/libmis.dylib +0x00007ff91fe26000 /System/Library/PrivateFrameworks/MobileSystemServices.framework/Versions/A/MobileSystemServices +0x00007ffa19fc0000 /System/Library/PrivateFrameworks/ConfigProfileHelper.framework/Versions/A/ConfigProfileHelper +0x00007ff8192da000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce +0x00007ff80e72c000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling +0x00007ff8198a5000 /usr/lib/libxslt.1.dylib +0x00007ff8191d8000 /usr/lib/libcmph.dylib +0x00007ff818317000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji +0x00007ff8179fc000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData +0x00007ff80d943000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon +0x00007ff8185e1000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement +0x00007ffb29867000 /usr/lib/libTLE.dylib +0x00007ffb2a7c7000 /usr/lib/swift/libswift_RegexParser.dylib +0x00007ff81a6be000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG +0x00007ff819e0c000 /usr/lib/libexpat.1.dylib +0x00007ff81ad68000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib +0x00007ff81ad95000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib +0x00007ff81ae85000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib +0x00007ff81a709000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib +0x00007ff81ae25000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib +0x00007ff81ae1c000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib +0x00007ff816cdb000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib +0x00007ff81348a000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices +0x00007ff825b75000 /System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator +0x00007ff81a7f0000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient +0x00007ff80e88e000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay +0x00007ff816bca000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia +0x00007ff8169bc000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator +0x00007ff81575b000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo +0x00007ff819328000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders +0x00007ff81a82d000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox +0x00007ff8133ce000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard +0x00007ff81ae15000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler +0x00007ff81adf9000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment +0x00007ff81ae1f000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay +0x00007ffb11b67000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libllvm-flatbuffers.dylib +0x00007ffa230b9000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib +0x00007ffb11b63000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libGPUCompilerUtils.dylib +0x00007ff81ae8b000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore +0x00007ffa26ba1000 /System/Library/Frameworks/ExtensionFoundation.framework/Versions/A/ExtensionFoundation +0x00007ff8218c6000 /System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime +0x00007ff81a3c0000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport +0x00007ff81c747000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata +0x00007ff80e9ba000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore +0x00007ff816ba4000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk +0x00007ff81c014000 /usr/lib/libAudioStatistics.dylib +0x00007ff910c77000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy +0x00007ff81c2b2000 /usr/lib/libSMC.dylib +0x00007ff8253dd000 /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI +0x00007ff81ad36000 /usr/lib/libAudioToolboxUtility.dylib +0x00007ff82a910000 /System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient +0x00007ff81c754000 /usr/lib/libperfcheck.dylib +0x00007ff819cf0000 /System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit +0x00007ff818546000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices +0x00007ffa23114000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib +0x00007ffa230d8000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib +0x00007ffa232e1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib +0x00007ffa230e1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib +0x00007ffa230d5000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib +0x00007ffb29846000 /usr/lib/libRosetta.dylib +0x00007ffa230c0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib +0x00007ff817889000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore +0x00007ff818c41000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage +0x00007ff8186b7000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork +0x00007ff818b2a000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix +0x00007ff8188e5000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector +0x00007ff818b65000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray +0x00007ffa27f11000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSFunctions.framework/Versions/A/MPSFunctions +0x00007ff80d67a000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools +0x00007ff81790f000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary +0x00007ff819bab000 /usr/lib/libIOReport.dylib +0x00007ffa23da8000 /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL +0x00007ff819f52000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer +0x00007ffb11a78000 /System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices +0x00007ff81a37b000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG +0x00007ff815325000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib +0x00007ff81a3ca000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib +0x00007ffb11a79000 /System/Library/PrivateFrameworks/FontServices.framework/libXTFontStaticRegistryData.dylib +0x00007ffb22d12000 /System/Library/PrivateFrameworks/VideoToolboxParavirtualizationSupport.framework/Versions/A/VideoToolboxParavirtualizationSupport +0x00007ff819dbc000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA +0x00007ff81c054000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS +0x00007ff81283c000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices +0x00007ff81ae97000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore +0x00007ff81c407000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD +0x00007ff81c3ff000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy +0x00007ff81c028000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis +0x00007ff81ae55000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI +0x00007ff81c392000 /usr/lib/libcups.2.dylib +0x00007ff81c763000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos +0x00007ff81c772000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS +0x00007ff81c0c2000 /usr/lib/libresolv.9.dylib +0x00007ff81a3db000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal +0x00007ff823506000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib +0x00007ff81c7bd000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth +0x00007ffa25e77000 /System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio +0x00007ff82a959000 /System/Library/PrivateFrameworks/AXCoreUtilities.framework/Versions/A/AXCoreUtilities +0x00007ff81bfa4000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession +0x00007ff81d5a6000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth +0x00007ff819ec2000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience +0x00007ff81be4b000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib +0x00007ff81c413000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration +0x00007ff8204ff000 /System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog +0x00007ff820441000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth +0x00007ff823507000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit +0x00007ff8183b0000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils +0x00007ffb10629000 /System/Library/PrivateFrameworks/CoreUtilsExtras.framework/Versions/A/CoreUtilsExtras +0x00007ffb1538b000 /System/Library/PrivateFrameworks/IO80211.framework/Versions/A/IO80211 +0x00007ff819e30000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation +0x00007ff81f51e000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore +0x0000000109776000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/server/libjvm.dylib +0x0000000108dd3000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libverify.dylib +0x0000000108e2b000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libjava.dylib +0x0000000108df8000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libzip.dylib +0x0000000109735000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libnio.dylib +0x000000012206b000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libnet.dylib +0x0000000123dab000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libmanagement.dylib +0x00000001257e3000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libosx.dylib +0x000000012582f000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libosxapp.dylib +0x00007ff910687000 /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon +0x00007ff82709c000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels +0x00007ff822e78000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help +0x00007ff8270a0000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture +0x00007ff827070000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting +0x00007ff827098000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink +0x00007ff910683000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print +0x00007ff827094000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI +0x00007ff90f83b000 /System/Library/Frameworks/ExceptionHandling.framework/Versions/A/ExceptionHandling +0x00007ffa2714d000 /System/Library/Frameworks/JavaNativeFoundation.framework/Versions/A/JavaNativeFoundation +0x00007ffa27159000 /System/Library/Frameworks/JavaRuntimeSupport.framework/Versions/A/JavaRuntimeSupport +0x00007ff8217f5000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication +0x00007ff8217ba000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols +0x000000012580a000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libjaas_unix.dylib +0x0000000125eb3000 /private/var/folders/fz/_fgnwbcd31901m5zpzfkyhbc0000gn/T/snappy-1.1.8-fc2bf04d-aff8-42d0-ad90-cb6cfbed202b-libsnappyjava.dylib +0x000000012c625000 /private/var/folders/fz/_fgnwbcd31901m5zpzfkyhbc0000gn/T/libzstd-jni-1.5.2-44450640962306436155.dylib +0x000000012c58c000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libattach.dylib +0x0000000131414000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libinstrument.dylib +0x00000001342ba000 /private/var/folders/fz/_fgnwbcd31901m5zpzfkyhbc0000gn/T/libboson-8249353338003169445.dylib + +VM Arguments: +jvm_args: -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dorg.gradle.internal.worker.tmpdir=/Users/abid/workspace/aiml-iceberg/spark/v3.3/spark/.out/tmp/test/work -Dorg.gradle.native=false -Xmx2560m -Xbootclasspath:/Users/abid/.gradle/caches/modules-2/files-2.1/com.google.errorprone/javac/9+181-r4173-1/bdf4c0aa7d540ee1f7bf14d47447aea4bbf450c5/javac-9+181-r4173-1.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/classes -Dfile.encoding=utf-8 -Duser.country=US -Duser.language=en -Duser.variant -ea +java_command: worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 109' +java_class_path (initial): /Users/abid/.gradle/caches/7.4.2/workerMain/gradle-worker.jar +Launcher Type: SUN_STANDARD + +Environment Variables: +JAVA_HOME=/Users/abid/.jenv/versions/1.8 +PATH=/Users/abid/.jenv/versions/1.8/bin:/opt/homebrew/Cellar/jenv/0.5.4/libexec/libexec:/Users/abid/.jenv/shims:/Users/abid/workspace/apache-maven-3.8.5/bin:/opt/homebrew/Cellar/pyenv-virtualenv/1.2.1/shims:/Users/abid/.pyenv/shims:/Users/abid/workspace/hive/bin:/Users/abid/workspace/scripts:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin:/Users/abid/.cargo/bin:/Users/abid/Library/Application +SHELL=/bin/zsh + +Signal Handlers: +SIGSEGV: [libjvm.dylib+0x598df5], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.dylib+0x598df5], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART +SIGUSR2: [libjvm.dylib+0x48d606], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:Bsduname:Darwin 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:37 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T6000 x86_64 +rlimit: STACK 8176k, CORE 0k, NPROC 5333, NOFILE 122880, AS infinity +load average:17.09 15.51 11.54 + +CPU:total 10 (initial active 10) (1 cores per cpu, 1 threads per core) family 6 model 44 stepping 0, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, aes, clmul, tsc, tscinvbit, tscinv + +Memory: 4k page, physical 33554432k(92892k free) + +/proc/meminfo: + + +vm_info: OpenJDK 64-Bit Server VM (25.312-b07) for bsd-amd64 JRE (1.8.0_312-b07), built on Oct 21 2021 03:52:24 by "admin" with gcc 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.3) + +time: Tue Mar 21 23:30:32 2023 +timezone: PDT +elapsed time: 278.848787 seconds (0d 0h 4m 38s) + From 00671d2f2078026b565c2d7e9c2eddb8329b4eab Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Fri, 31 Mar 2023 19:22:38 -0700 Subject: [PATCH 04/27] more tests for drop namespace with cascade --- .../aws/dynamodb/TestDynamoDbCatalog.java | 14 ++++++++ .../iceberg/aws/dynamodb/DynamoDbCatalog.java | 4 ++- .../apache/iceberg/aws/glue/GlueCatalog.java | 5 ++- .../iceberg/aws/glue/TestGlueCatalog.java | 35 +++++++++++++++++++ .../iceberg/rest/RESTSessionCatalog.java | 11 +++++- .../apache/iceberg/rest/ResourcePaths.java | 4 +++ .../apache/iceberg/dell/ecs/EcsCatalog.java | 5 ++- .../iceberg/dell/ecs/TestEcsCatalog.java | 11 ++++++ .../org/apache/iceberg/hive/HiveCatalog.java | 8 ++++- .../apache/iceberg/hive/TestHiveCatalog.java | 27 ++++++++++++++ .../apache/iceberg/nessie/NessieCatalog.java | 5 ++- open-api/rest-catalog-open-api.yaml | 8 +++++ 12 files changed, 125 insertions(+), 12 deletions(-) diff --git a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java index f6fbfa55cfc2..dc648252fcd4 100644 --- a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java +++ b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java @@ -359,6 +359,20 @@ public void testDropNamespace() { Assert.assertFalse("namespace must not exist", response.hasItem()); } + @Test + public void testDropNamespaceCascade() { + Namespace namespace = Namespace.of(genRandomName()); + catalog.createNamespace(namespace); + TableIdentifier tableIdentifier = TableIdentifier.of(namespace, genRandomName()); + catalog.createTable(tableIdentifier, SCHEMA); + catalog.dropNamespace(namespace, true); + GetItemResponse response = dynamo.getItem(GetItemRequest.builder() + .tableName(catalogTableName) + .key(DynamoDbCatalog.namespacePrimaryKey(namespace)) + .build()); + Assert.assertFalse("namespace must not exist", response.hasItem()); + } + @Test public void testRegisterTable() { Namespace namespace = Namespace.of(genRandomName()); diff --git a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java index 3010f174756d..19d1cf4222a1 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java @@ -287,7 +287,9 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept @Override public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { - listTables(namespace).forEach(this::dropTable); + if (cascade) { + listTables(namespace).forEach(this::dropTable); + } return dropNamespace(namespace); } diff --git a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java index 105970eb1dc5..6be030bde72b 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java @@ -565,10 +565,9 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - throw new NotImplementedException("cascade not supported yet"); - } else { - return dropNamespace(namespace); + listTables(namespace).forEach(this::dropTable); } + return dropNamespace(namespace); } @Override diff --git a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java index a915a97d0ece..5fafc1bf199d 100644 --- a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java +++ b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java @@ -552,6 +552,41 @@ public void testDropNamespaceThatContainsNonIcebergTable() { .hasMessage("Cannot drop namespace db1 because it still contains non-Iceberg tables"); } + @Test + public void testDropNamespaceCascade() { + Table table = Table.builder() + .databaseName("db1") + .name("t1") + .parameters( + ImmutableMap.of( + BaseMetastoreTableOperations.TABLE_TYPE_PROP, + BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE)) + .build(); + GetTablesResponse getTablesResponse = GetTablesResponse.builder() + .tableList(table) + .build(); + GetTableResponse getTableResponse = GetTableResponse.builder() + .table(table) + .build(); + Mockito.doReturn(getTablesResponse) + .doReturn(GetTablesResponse.builder().build()) + .when(glue) + .getTables(Mockito.any(GetTablesRequest.class)); + Mockito.doReturn(getTableResponse) + .doReturn(GetTableResponse.builder().build()) + .when(glue) + .getTable(Mockito.any(GetTableRequest.class)); + Mockito.doReturn( + GetDatabaseResponse.builder().database(Database.builder().name("db1").build()).build()) + .when(glue) + .getDatabase(Mockito.any(GetDatabaseRequest.class)); + Mockito.doReturn(DeleteDatabaseResponse.builder().build()) + .when(glue) + .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); + Assert.assertTrue(glueCatalog.dropNamespace(Namespace.of("db1"), true)); + Mockito.verify(glue).deleteTable(Mockito.any(DeleteTableRequest.class)); + } + @Test public void testSetProperties() { Map parameters = Maps.newHashMap(); diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java index 5770c0230bfe..bde5afdddf87 100644 --- a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java +++ b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java @@ -444,17 +444,26 @@ public Map loadNamespaceMetadata(SessionContext context, Namespa @Override public boolean dropNamespace(SessionContext context, Namespace ns) { + return dropNamespaceInternal(context, ns, false); + } + + private boolean dropNamespaceInternal(SessionContext context, Namespace ns, boolean cascade) { checkNamespaceIsValid(ns); try { client.delete( - paths.namespace(ns), null, headers(context), ErrorHandlers.namespaceErrorHandler()); + paths.namespace(ns, cascade), null, headers(context), ErrorHandlers.namespaceErrorHandler()); return true; } catch (NoSuchNamespaceException e) { return false; } } + @Override + public boolean dropNamespace(SessionContext context, Namespace namespace, boolean cascade) { + return dropNamespaceInternal(context, namespace, cascade); + } + @Override public boolean updateNamespaceMetadata( SessionContext context, Namespace ns, Map updates, Set removals) { diff --git a/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java b/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java index 6fa09f33d2ba..57feef971a7f 100644 --- a/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java +++ b/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java @@ -53,6 +53,10 @@ public String namespace(Namespace ns) { return SLASH.join("v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns)); } + public String namespace(Namespace ns, boolean cascade) { + return SLASH.join("v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns) + "?cascade=" + cascade); + } + public String namespaceProperties(Namespace ns) { return SLASH.join("v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns), "properties"); } diff --git a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java index f4089311c848..5de9a1dd8d75 100644 --- a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java +++ b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java @@ -343,10 +343,9 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - throw new RuntimeException("cascade not supported yet"); - } else { - return dropNamespace(namespace); + listTables(namespace).forEach(this::dropTable); } + return dropNamespace(namespace); } @Override diff --git a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java index c61bd1db172d..e535284b5cad 100644 --- a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java +++ b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java @@ -144,6 +144,17 @@ public void testDropNamespace() { ecsCatalog.listNamespaces(Namespace.of("a")).isEmpty()); } + @Test + public void testDropNamespaceCascade() { + ecsCatalog.createNamespace(Namespace.of("a")); + ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); + + Assert.assertTrue("Drop namespace [a]", ecsCatalog.dropNamespace(Namespace.of("a"), true)); + + Assert.assertFalse( + "The [a] is absent", ecsCatalog.namespaceExists(Namespace.of("a"))); + } + @Test public void testDropTable() { ecsCatalog.createTable(TableIdentifier.of("a"), SCHEMA); diff --git a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java index 3dc616f01615..fe73720460af 100644 --- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java +++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java @@ -328,6 +328,10 @@ public List listNamespaces(Namespace namespace) { @Override public boolean dropNamespace(Namespace namespace) { + return dropNamespaceInternal(namespace, false); + } + + private boolean dropNamespaceInternal(Namespace namespace, boolean cascade) { if (!isValidateNamespace(namespace)) { return false; } @@ -339,7 +343,7 @@ public boolean dropNamespace(Namespace namespace) { namespace.level(0), false /* deleteData */, false /* ignoreUnknownDb */, - false /* cascade */); + cascade /* cascade */); return null; }); @@ -403,6 +407,8 @@ public boolean dropNamespace(Namespace namespace, boolean cascade) } } return dropNamespace(namespace); + public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + return dropNamespaceInternal(namespace, cascade); } @Override diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index 880510954dc2..a589e4e3bf9a 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -911,6 +911,33 @@ public void testDropNamespace() throws TException { }); } + @Test + public void testDropNamespaceCascade() throws TException { + Namespace namespace = Namespace.of("dbname_drop"); + TableIdentifier identifier = TableIdentifier.of(namespace, "table"); + Schema schema = + new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); + + catalog.createNamespace(namespace, meta); + catalog.createTable(identifier, schema); + Map nameMata = catalog.loadNamespaceMetadata(namespace); + Assert.assertTrue(nameMata.get("owner").equals("apache")); + Assert.assertTrue(nameMata.get("group").equals("iceberg")); + + Assert.assertTrue(catalog.dropNamespace(namespace, true)); + Assert.assertFalse(catalog.tableExists(identifier)); + Assert.assertFalse( + "Should fail to drop when namespace doesn't exist", + catalog.dropNamespace(Namespace.of("db.ns1"))); + AssertHelpers.assertThrows( + "Should fail to drop namespace exist" + namespace, + NoSuchNamespaceException.class, + "Namespace does not exist: ", + () -> { + catalog.loadNamespaceMetadata(namespace); + }); + } + @Test public void testDropTableWithoutMetadataFile() { TableIdentifier identifier = TableIdentifier.of(DB_NAME, "tbl"); diff --git a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java index 98500b81d4ed..7186dbbb2ee5 100644 --- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java +++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java @@ -290,10 +290,9 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - throw new NotImplementedException("cascade not supported yet"); - } else { - return dropNamespace(namespace); + listTables(namespace).forEach(this::dropTable); } + return dropNamespace(namespace); } @Override diff --git a/open-api/rest-catalog-open-api.yaml b/open-api/rest-catalog-open-api.yaml index 19b5ae9f3dfc..be51462d6fa7 100644 --- a/open-api/rest-catalog-open-api.yaml +++ b/open-api/rest-catalog-open-api.yaml @@ -316,6 +316,14 @@ paths: - Catalog API summary: Drop a namespace from the catalog. Namespace must be empty. operationId: dropNamespace + parameters: + - name: cascade + in: query + required: false + description: When true, deletes all objects under the namespace + schema: + type: boolean + default: false responses: 204: description: Success, no content From a4049d6404efe72a2f87cd2a1e1689b1be062433 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 07:43:09 -0700 Subject: [PATCH 05/27] cleanup --- .../org/apache/iceberg/hive/HiveCatalog.java | 39 - spark/v3.3/spark/hs_err_pid13074.log | 883 ------------------ 2 files changed, 922 deletions(-) delete mode 100644 spark/v3.3/spark/hs_err_pid13074.log diff --git a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java index fe73720460af..6f6727856b14 100644 --- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java +++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java @@ -368,45 +368,6 @@ private boolean dropNamespaceInternal(Namespace namespace, boolean cascade) { } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) - throws NamespaceNotEmptyException { - if (!isValidateNamespace(namespace)) { - return false; - } - if (cascade) { - try { - List tables = clients.run(client -> client.getAllTables("")); - if (!tables.isEmpty()) { - clients.run( - client -> { - for (String table : tables) { - client.dropTable(namespace.level(0), table); - LOG.info("Dropped table: {}", table); - } - return null; - }); - } - - LOG.info("Dropped tables in namespace: {}", namespace); - } catch (NoSuchObjectException e) { - return false; - - } catch (TException e) { - throw new RuntimeException( - "Failed to drop namespace " + namespace + " in Hive Metastore", e); - - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException( - "Interrupted in call to drop dropDatabase( " - + namespace - + ", " - + cascade - + ") in Hive Metastore", - e); - } - } - return dropNamespace(namespace); public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { return dropNamespaceInternal(namespace, cascade); } diff --git a/spark/v3.3/spark/hs_err_pid13074.log b/spark/v3.3/spark/hs_err_pid13074.log deleted file mode 100644 index 2ca6cbe60a9a..000000000000 --- a/spark/v3.3/spark/hs_err_pid13074.log +++ /dev/null @@ -1,883 +0,0 @@ -# -# A fatal error has been detected by the Java Runtime Environment: -# -# SIGILL (0x4) at pc=0x000000013457cf12, pid=13074, tid=0x0000000000002003 -# -# JRE version: OpenJDK Runtime Environment AppleJDK-8.0.312.7.1 (build 1.8.0_312-b07) -# Java VM: OpenJDK 64-Bit Server VM AppleJDK-8.0.312.7.1 (25.312-b07 mixed mode bsd-amd64 compressed oops) -# Problematic frame: -# C [libboson-8249353338003169445.dylib+0x2c2f12] std::panicking::try::h2715e49523c5b40c+0x32 -# -# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again -# -# If you would like to submit a bug report, please visit: -# http://bugreport.java.com/bugreport/crash.jsp -# The crash happened outside the Java Virtual Machine in native code. -# See problematic frame for where to report the bug. -# - ---------------- T H R E A D --------------- - -Current thread (0x00007f80bb00c800): JavaThread "Test worker" [_thread_in_native, id=8195, stack(0x000000030537a000,0x000000030547a000)] - -siginfo: si_signo: 4 (SIGILL), si_code: 1 (ILL_ILLOPC), si_addr: 0x000000013457cf12 - -Registers: -RAX=0x0000600006e1f4e0, RBX=0x00000003054772a0, RCX=0x0000000000000000, RDX=0x0000000000000004 -RSP=0x0000000305477130, RBP=0x0000000305477210, RSI=0x0000000000000004, RDI=0x00007f80bb00c800 -R8 =0x0000000000000000, R9 =0x000000000000005e, R10=0x0000000000000060, R11=0x00000000af40dffb -R12=0x0000000000000000, R13=0x000000013291b430, R14=0x000000000000000f, R15=0x00007f80bb00c800 -RIP=0x000000013457cf12, EFLAGS=0x0000000000000246, ERR=0x0000000000000000 - TRAPNO=0x0000000000000006 - -Top of Stack: (sp=0x0000000305477130) -0x0000000305477130: 000000013291ba90 00000003054771d8 -0x0000000305477140: 0000000305477180 000000013291b430 -0x0000000305477150: 00007f80bb00c800 00000003054772e7 -0x0000000305477160: 00007f80bb804ab0 00007f80bb00c800 -0x0000000305477170: 0000000305477190 0000000109cef653 -0x0000000305477180: 00007f80bb00c800 00007f80bb00c800 -0x0000000305477190: 0000000305477220 0000000109bdfd66 -0x00000003054771a0: 00006000004e05a0 00007f80bb8049a0 -0x00000003054771b0: 00007f80bb80490f 0000600006e1f4e0 -0x00000003054771c0: 0000000305477388 0000000305477308 -0x00000003054771d0: 000000013291b430 00007f80bb00c800 -0x00000003054771e0: 00006000024ca700 0000600002ee4600 -0x00000003054771f0: 00000003054772e7 000000013291b430 -0x0000000305477200: 0000000305477388 00007f80bb00c800 -0x0000000305477210: 00000003054772f0 0000000134470b49 -0x0000000305477220: 0000000305477290 0000000109bdfe80 -0x0000000305477230: 000000013291b430 0000000000000004 -0x0000000305477240: 000000013291b430 00007f80bb00c800 -0x0000000305477250: 000000000000153d 000000013291b430 -0x0000000305477260: 00007f80bb00c800 000000013291b430 -0x0000000305477270: 0000000305477290 0000000109ceeab7 -0x0000000305477280: 000000013291b430 00007f80bb00c800 -0x0000000305477290: 0000000305477300 0000000109a3ad2f -0x00000003054772a0: 00000003054772e0 000000013291b430 -0x00000003054772b0: 00007f80bb00c800 00007f80bb00c800 -0x00000003054772c0: 00007f80bb00c800 000000013291b430 -0x00000003054772d0: 00007f80bb00c800 000000013291b430 -0x00000003054772e0: 00007f80bb00ca50 000000013291b430 -0x00000003054772f0: 0000000305477310 00000001344f356d -0x0000000305477300: 0000000305477388 00007f80bb00ca50 -0x0000000305477310: 0000000305477368 000000010af8ae47 -0x0000000305477320: 000000010af8ab62 0000000305477328 - -Instructions: (pc=0x000000013457cf12) -0x000000013457cef2: fb 48 8b 12 48 8d 7d a0 e8 c1 74 b8 00 44 0f b6 -0x000000013457cf02: 75 a0 49 83 fe 0f 0f 85 e9 00 00 00 48 8b 45 a8 -0x000000013457cf12: c5 f8 10 45 b0 c5 f8 29 85 60 ff ff ff 48 89 45 -0x000000013457cf22: a0 c5 f8 11 45 a8 48 8d bd 28 ff ff ff 48 8d 75 - -Register to memory mapping: - -RAX=0x0000600006e1f4e0 is an unknown value -RBX=0x00000003054772a0 is pointing into the stack for thread: 0x00007f80bb00c800 -RCX=0x0000000000000000 is an unknown value -RDX=0x0000000000000004 is an unknown value -RSP=0x0000000305477130 is pointing into the stack for thread: 0x00007f80bb00c800 -RBP=0x0000000305477210 is pointing into the stack for thread: 0x00007f80bb00c800 -RSI=0x0000000000000004 is an unknown value -RDI=0x00007f80bb00c800 is a thread -R8 =0x0000000000000000 is an unknown value -R9 =0x000000000000005e is an unknown value -R10=0x0000000000000060 is an unknown value -R11=0x00000000af40dffb is an unknown value -R12=0x0000000000000000 is an unknown value -R13={method} {0x000000013291b430} 'init' '(Ljava/lang/String;)V' in 'com/apple/boson/NativeBase' -R14=0x000000000000000f is an unknown value -R15=0x00007f80bb00c800 is a thread - - -Stack: [0x000000030537a000,0x000000030547a000], sp=0x0000000305477130, free space=1012k -Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) -C [libboson-8249353338003169445.dylib+0x2c2f12] std::panicking::try::h2715e49523c5b40c+0x32 -C [libboson-8249353338003169445.dylib+0x1b6b49] boson::errors::try_unwrap_or_throw::hc18b9582fe6977ce+0x19 -C [libboson-8249353338003169445.dylib+0x23956d] Java_com_apple_boson_NativeBase_init+0x1d -j com.apple.boson.NativeBase.init(Ljava/lang/String;)V+0 -j com.apple.boson.NativeBase.initWithLogConf()V+84 -j com.apple.boson.NativeBase.load()V+27 -j com.apple.boson.NativeBase.()V+26 -v ~StubRoutines::call_stub -V [libjvm.dylib+0x2c938f] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x691 -V [libjvm.dylib+0x2997fc] InstanceKlass::call_class_initializer_impl(instanceKlassHandle, Thread*)+0xf0 -V [libjvm.dylib+0x29864d] InstanceKlass::initialize_impl(instanceKlassHandle, Thread*)+0x46f -V [libjvm.dylib+0x2981ca] InstanceKlass::initialize(Thread*)+0x3a -V [libjvm.dylib+0x2983ae] InstanceKlass::initialize_impl(instanceKlassHandle, Thread*)+0x1d0 -V [libjvm.dylib+0x2981ca] InstanceKlass::initialize(Thread*)+0x3a -V [libjvm.dylib+0x3cd339] LinkResolver::resolve_static_call(CallInfo&, KlassHandle&, Symbol*, Symbol*, KlassHandle, bool, bool, Thread*)+0x99 -V [libjvm.dylib+0x3d0763] LinkResolver::resolve_invokestatic(CallInfo&, constantPoolHandle, int, Thread*)+0x13f -V [libjvm.dylib+0x3d0487] LinkResolver::resolve_invoke(CallInfo&, Handle, constantPoolHandle, int, Bytecodes::Code, Thread*)+0x40d -V [libjvm.dylib+0x2c2a70] InterpreterRuntime::resolve_invoke(JavaThread*, Bytecodes::Code)+0x366 -j com.apple.boson.parquet.Utils.initColumnReader(Lorg/apache/parquet/column/ColumnDescriptor;IZ)J+161 -j com.apple.boson.parquet.AbstractColumnReader.initNative()V+23 -j com.apple.boson.parquet.ColumnReader.(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZ)V+67 -j com.apple.boson.parquet.Utils.getColumnReader(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZZ)Lcom/apple/boson/parquet/ColumnReader;+39 -j com.apple.boson.parquet.BosonIcebergColumnReader.reset()V+29 -j org.apache.iceberg.spark.data.vectorized.boson.BosonBaseBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+69 -j org.apache.iceberg.spark.data.vectorized.boson.BosonColumnarBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+4 -j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.advance()V+122 -j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.next()Ljava/lang/Object;+28 -j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetVectorizedReads.assertRecordsMatch(Lorg/apache/iceberg/Schema;ILjava/lang/Iterable;Ljava/io/File;ZZI)V+81 -j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetDictionaryEncodedVectorizedReads.testMixedDictionaryNonDictionaryReads()V+255 -v ~StubRoutines::call_stub -V [libjvm.dylib+0x2c938f] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x691 -V [libjvm.dylib+0x4d526a] Reflection::invoke(instanceKlassHandle, methodHandle, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*)+0x752 -V [libjvm.dylib+0x4d5e22] Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0x18a -V [libjvm.dylib+0x344486] JVM_InvokeMethod+0x210 -J 38216 sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x000000011115336d [0x0000000111153280+0xed] -J 38152 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x0000000110caaad0 [0x0000000110caa700+0x3d0] -J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] -j org.junit.runners.model.FrameworkMethod$1.runReflectiveCall()Ljava/lang/Object;+15 -J 44566 C1 org.junit.internal.runners.model.ReflectiveCallable.run()Ljava/lang/Object; (11 bytes) @ 0x0000000110800fc4 [0x0000000110800ec0+0x104] -j org.junit.runners.model.FrameworkMethod.invokeExplosively(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+10 -j org.junit.internal.runners.statements.InvokeMethod.evaluate()V+12 -j org.junit.rules.ExternalResource$1.evaluate()V+19 -J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] -j org.junit.runners.BlockJUnit4ClassRunner$1.evaluate()V+11 -j org.junit.runners.ParentRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V+17 -j org.junit.runners.BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V+38 -j org.junit.runners.BlockJUnit4ClassRunner.runChild(Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V+6 -j org.junit.runners.ParentRunner$4.run()V+12 -j org.junit.runners.ParentRunner$1.schedule(Ljava/lang/Runnable;)V+1 -j org.junit.runners.ParentRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+44 -j org.junit.runners.ParentRunner.access$100(Lorg/junit/runners/ParentRunner;Lorg/junit/runner/notification/RunNotifier;)V+2 -j org.junit.runners.ParentRunner$2.evaluate()V+8 -J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] -j org.junit.runners.ParentRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+24 -j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(Ljava/lang/String;)V+296 -j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/String;)V+14 -j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/Object;)V+5 -j org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+26 -j org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+5 -j sun.reflect.GeneratedMethodAccessor57.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+40 -J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] -J 46571 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V (42 bytes) @ 0x000000010d7db76c [0x000000010d7db3e0+0x38c] -J 46570 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V (9 bytes) @ 0x0000000111583e9c [0x0000000111583d40+0x15c] -j org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(Ljava/lang/Object;)V+22 -J 43919 C1 org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (184 bytes) @ 0x0000000110baf0bc [0x0000000110badd60+0x135c] -j com.sun.proxy.$Proxy2.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+16 -j org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run()V+34 -j org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(Ljava/lang/Runnable;)V+1 -j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+80 -j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Ljava/lang/Object;)V+5 -j org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+65 -j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Void;+343 -j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Object;+1 -j worker.org.gradle.process.internal.worker.GradleWorkerMain.run()V+250 -j worker.org.gradle.process.internal.worker.GradleWorkerMain.main([Ljava/lang/String;)V+7 -v ~StubRoutines::call_stub -V [libjvm.dylib+0x2c938f] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x691 -V [libjvm.dylib+0x30426f] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x248 -V [libjvm.dylib+0x3078ee] jni_CallStaticVoidMethod+0x1f7 -C [java+0x2d92] JavaMain+0x9df -C [libsystem_pthread.dylib+0x6259] _pthread_start+0x7d -C [libsystem_pthread.dylib+0x1c7b] thread_start+0xf -C 0x0000000000000000 - -Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) -j com.apple.boson.NativeBase.init(Ljava/lang/String;)V+0 -j com.apple.boson.NativeBase.initWithLogConf()V+84 -j com.apple.boson.NativeBase.load()V+27 -j com.apple.boson.NativeBase.()V+26 -v ~StubRoutines::call_stub -j com.apple.boson.parquet.Utils.initColumnReader(Lorg/apache/parquet/column/ColumnDescriptor;IZ)J+161 -j com.apple.boson.parquet.AbstractColumnReader.initNative()V+23 -j com.apple.boson.parquet.ColumnReader.(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZ)V+67 -j com.apple.boson.parquet.Utils.getColumnReader(Lorg/apache/spark/sql/types/DataType;Lorg/apache/parquet/column/ColumnDescriptor;IZZ)Lcom/apple/boson/parquet/ColumnReader;+39 -j com.apple.boson.parquet.BosonIcebergColumnReader.reset()V+29 -j org.apache.iceberg.spark.data.vectorized.boson.BosonBaseBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+69 -j org.apache.iceberg.spark.data.vectorized.boson.BosonColumnarBatchReader.setRowGroupInfo(Lorg/apache/parquet/column/page/PageReadStore;Ljava/util/Map;J)V+4 -j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.advance()V+122 -j org.apache.iceberg.parquet.VectorizedParquetReader$FileIterator.next()Ljava/lang/Object;+28 -j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetVectorizedReads.assertRecordsMatch(Lorg/apache/iceberg/Schema;ILjava/lang/Iterable;Ljava/io/File;ZZI)V+81 -j org.apache.iceberg.spark.data.parquet.vectorized.TestParquetDictionaryEncodedVectorizedReads.testMixedDictionaryNonDictionaryReads()V+255 -v ~StubRoutines::call_stub -J 38216 sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00000001111532f7 [0x0000000111153280+0x77] -J 38152 C2 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x0000000110caaad0 [0x0000000110caa700+0x3d0] -J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] -j org.junit.runners.model.FrameworkMethod$1.runReflectiveCall()Ljava/lang/Object;+15 -J 44566 C1 org.junit.internal.runners.model.ReflectiveCallable.run()Ljava/lang/Object; (11 bytes) @ 0x0000000110800fc4 [0x0000000110800ec0+0x104] -j org.junit.runners.model.FrameworkMethod.invokeExplosively(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+10 -j org.junit.internal.runners.statements.InvokeMethod.evaluate()V+12 -j org.junit.rules.ExternalResource$1.evaluate()V+19 -J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] -j org.junit.runners.BlockJUnit4ClassRunner$1.evaluate()V+11 -j org.junit.runners.ParentRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V+17 -j org.junit.runners.BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V+38 -j org.junit.runners.BlockJUnit4ClassRunner.runChild(Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V+6 -j org.junit.runners.ParentRunner$4.run()V+12 -j org.junit.runners.ParentRunner$1.schedule(Ljava/lang/Runnable;)V+1 -j org.junit.runners.ParentRunner.runChildren(Lorg/junit/runner/notification/RunNotifier;)V+44 -j org.junit.runners.ParentRunner.access$100(Lorg/junit/runners/ParentRunner;Lorg/junit/runner/notification/RunNotifier;)V+2 -j org.junit.runners.ParentRunner$2.evaluate()V+8 -J 44066 C1 org.junit.runners.ParentRunner$3.evaluate()V (22 bytes) @ 0x000000010b134d4c [0x000000010b134c40+0x10c] -j org.junit.runners.ParentRunner.run(Lorg/junit/runner/notification/RunNotifier;)V+24 -j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(Ljava/lang/String;)V+296 -j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/String;)V+14 -j org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(Ljava/lang/Object;)V+5 -j org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+26 -j org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+5 -j sun.reflect.GeneratedMethodAccessor57.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+40 -J 38204 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x0000000110ab8ef0 [0x0000000110ab8e40+0xb0] -J 46571 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Lorg/gradle/internal/dispatch/MethodInvocation;)V (42 bytes) @ 0x000000010d7db76c [0x000000010d7db3e0+0x38c] -J 46570 C1 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(Ljava/lang/Object;)V (9 bytes) @ 0x0000000111583e9c [0x0000000111583d40+0x15c] -j org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(Ljava/lang/Object;)V+22 -J 43919 C1 org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (184 bytes) @ 0x0000000110baf0bc [0x0000000110badd60+0x135c] -j com.sun.proxy.$Proxy2.processTestClass(Lorg/gradle/api/internal/tasks/testing/TestClassRunInfo;)V+16 -j org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run()V+34 -j org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(Ljava/lang/Runnable;)V+1 -j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+80 -j org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(Ljava/lang/Object;)V+5 -j org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(Lorg/gradle/process/internal/worker/WorkerProcessContext;)V+65 -j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Void;+343 -j org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call()Ljava/lang/Object;+1 -j worker.org.gradle.process.internal.worker.GradleWorkerMain.run()V+250 -j worker.org.gradle.process.internal.worker.GradleWorkerMain.main([Ljava/lang/String;)V+7 -v ~StubRoutines::call_stub - ---------------- P R O C E S S --------------- - -Java Threads: ( => current thread ) - 0x00007f80bd5d0800 JavaThread "ForkJoinPool.commonPool-worker-13" daemon [_thread_blocked, id=116527, stack(0x0000000308a52000,0x0000000308b52000)] - 0x00007f806c6e1000 JavaThread "ForkJoinPool.commonPool-worker-4" daemon [_thread_blocked, id=160063, stack(0x0000000308d5b000,0x0000000308e5b000)] - 0x00007f80bcc57800 JavaThread "Attach Listener" daemon [_thread_blocked, id=240323, stack(0x0000000308b55000,0x0000000308c55000)] - 0x00007f80bd5d4000 JavaThread "pool-708-thread-2" [_thread_in_native, id=192003, stack(0x000000030ef7e000,0x000000030f07e000)] - 0x00007f805f673800 JavaThread "pool-708-thread-1" [_thread_in_native, id=242199, stack(0x000000030ee7b000,0x000000030ef7b000)] - 0x00007f80abe67000 JavaThread "pool-709-thread-1" [_thread_blocked, id=111191, stack(0x000000030791f000,0x0000000307a1f000)] - 0x00007f80bdd4e000 JavaThread "QueryStageCreator-11" daemon [_thread_blocked, id=137219, stack(0x00000003103ba000,0x00000003104ba000)] - 0x00007f80be1fc000 JavaThread "QueryStageCreator-10" daemon [_thread_blocked, id=129335, stack(0x000000030e869000,0x000000030e969000)] - 0x00007f80692a4000 JavaThread "pool-682-thread-1" [_thread_in_native, id=109859, stack(0x000000030f38a000,0x000000030f48a000)] - 0x00007f80bd83a800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=46771, stack(0x0000000309573000,0x0000000309673000)] - 0x00007f805cd29800 JavaThread "pool-653-thread-2" [_thread_in_native, id=121767, stack(0x000000030833d000,0x000000030843d000)] - 0x00007f805ba85000 JavaThread "pool-653-thread-1" [_thread_in_native, id=67667, stack(0x000000030f081000,0x000000030f181000)] - 0x00007f8069259800 JavaThread "pool-627-thread-1" [_thread_in_native, id=97843, stack(0x000000030d633000,0x000000030d733000)] - 0x00007f80bc45a000 JavaThread "process reaper" daemon [_thread_blocked, id=69723, stack(0x0000000306152000,0x000000030617a000)] - 0x00007f805d07c800 JavaThread "pool-601-thread-1" [_thread_in_native, id=87627, stack(0x0000000308543000,0x0000000308643000)] - 0x00007f805ce66800 JavaThread "iceberg-worker-pool-9" daemon [_thread_blocked, id=103819, stack(0x000000030e560000,0x000000030e660000)] - 0x00007f80bcf2d000 JavaThread "iceberg-worker-pool-8" daemon [_thread_blocked, id=80791, stack(0x000000030e45d000,0x000000030e55d000)] - 0x00007f80bcf2c000 JavaThread "iceberg-worker-pool-7" daemon [_thread_blocked, id=122915, stack(0x000000030e35a000,0x000000030e45a000)] - 0x00007f80bccb9800 JavaThread "iceberg-worker-pool-6" daemon [_thread_blocked, id=119571, stack(0x000000030e154000,0x000000030e254000)] - 0x00007f80bde1a000 JavaThread "iceberg-worker-pool-5" daemon [_thread_blocked, id=89123, stack(0x000000030e051000,0x000000030e151000)] - 0x00007f80abdc8000 JavaThread "iceberg-worker-pool-4" daemon [_thread_blocked, id=101999, stack(0x000000030df4e000,0x000000030e04e000)] - 0x00007f80abdbf800 JavaThread "iceberg-worker-pool-3" daemon [_thread_blocked, id=117135, stack(0x000000030de4b000,0x000000030df4b000)] - 0x00007f80bcdec800 JavaThread "iceberg-worker-pool-2" daemon [_thread_blocked, id=94583, stack(0x000000030dd48000,0x000000030de48000)] - 0x00007f80abe66000 JavaThread "iceberg-worker-pool-1" daemon [_thread_blocked, id=123219, stack(0x000000030dc45000,0x000000030dd45000)] - 0x00007f806b070000 JavaThread "iceberg-worker-pool-0" daemon [_thread_blocked, id=98863, stack(0x000000030db42000,0x000000030dc42000)] - 0x00007f80688bd000 JavaThread "pool-573-thread-1" [_thread_in_native, id=51359, stack(0x000000030da3f000,0x000000030db3f000)] - 0x00007f80aafcd000 JavaThread "pool-322-thread-2" [_thread_in_native, id=122475, stack(0x000000030d93c000,0x000000030da3c000)] - 0x00007f80bdf82800 JavaThread "pool-322-thread-1" [_thread_in_native, id=63027, stack(0x000000030d839000,0x000000030d939000)] - 0x00007f80aafb2000 JavaThread "pool-296-thread-1" [_thread_in_native, id=101623, stack(0x000000030e257000,0x000000030e357000)] - 0x00007f80bcf52000 JavaThread "pool-270-thread-1" [_thread_in_native, id=90199, stack(0x000000030d736000,0x000000030d836000)] - 0x00007f805ccdb000 JavaThread "pool-244-thread-2" [_thread_in_native, id=117731, stack(0x000000030d42d000,0x000000030d52d000)] - 0x00007f805e602800 JavaThread "pool-244-thread-1" [_thread_in_native, id=117943, stack(0x000000030d32a000,0x000000030d42a000)] - 0x00007f805e64c000 JavaThread "pool-218-thread-2" [_thread_in_native, id=95591, stack(0x000000030d124000,0x000000030d224000)] - 0x00007f80bc94e000 JavaThread "pool-218-thread-1" [_thread_in_native, id=122287, stack(0x000000030d021000,0x000000030d121000)] - 0x00007f80bdec2000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=127747, stack(0x000000030894f000,0x0000000308a4f000)] - 0x00007f805aa60000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=70271, stack(0x000000030884c000,0x000000030894c000)] - 0x00007f80bca99000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=81535, stack(0x0000000308749000,0x0000000308849000)] - 0x00007f80bd6cf000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=44791, stack(0x0000000308646000,0x0000000308746000)] - 0x00007f805a883800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=124275, stack(0x000000030ca0f000,0x000000030cb0f000)] - 0x00007f805c57d800 JavaThread "pool-173-thread-2" [_thread_in_native, id=124759, stack(0x000000030c90c000,0x000000030ca0c000)] - 0x00007f80abeb4800 JavaThread "pool-173-thread-1" [_thread_in_native, id=82211, stack(0x000000030c809000,0x000000030c909000)] - 0x00007f80bdaa9000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=67959, stack(0x0000000309064000,0x0000000309164000)] - 0x00007f80bc888000 JavaThread "pool-144-thread-2" [_thread_in_native, id=60935, stack(0x0000000308440000,0x0000000308540000)] - 0x00007f80bc6f3800 JavaThread "pool-144-thread-1" [_thread_in_native, id=52331, stack(0x000000030c500000,0x000000030c600000)] - 0x00007f805d72d800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=90679, stack(0x000000030c1f7000,0x000000030c2f7000)] - 0x00007f805c90d000 JavaThread "pool-116-thread-1" [_thread_in_native, id=89935, stack(0x000000030c0f4000,0x000000030c1f4000)] - 0x00007f80bc9c0800 JavaThread "pool-90-thread-2" [_thread_in_native, id=89423, stack(0x000000030beee000,0x000000030bfee000)] - 0x00007f80bc6b3000 JavaThread "pool-90-thread-1" [_thread_in_native, id=129043, stack(0x000000030bdeb000,0x000000030beeb000)] - 0x00007f80bc6a9800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=78031, stack(0x000000030b1c7000,0x000000030b2c7000)] - 0x00007f805b158000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=74279, stack(0x000000030b0c4000,0x000000030b1c4000)] - 0x00007f80bdc4c000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=78907, stack(0x000000030afc1000,0x000000030b0c1000)] - 0x00007f80bc84c000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=66895, stack(0x000000030997f000,0x0000000309a7f000)] - 0x00007f80bb66c000 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=84339, stack(0x000000030823a000,0x000000030833a000)] - 0x00007f80bd4a1800 JavaThread "iceberg-hive-lock-heartbeat-0" daemon [_thread_blocked, id=54895, stack(0x0000000308137000,0x0000000308237000)] - 0x00007f80be71c000 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=53015, stack(0x0000000308034000,0x0000000308134000)] - 0x00007f80bb7f7000 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=65031, stack(0x0000000307f31000,0x0000000308031000)] - 0x00007f80aa858000 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=65555, stack(0x0000000307e2e000,0x0000000307f2e000)] - 0x00007f80abab7800 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=66167, stack(0x0000000307d2b000,0x0000000307e2b000)] - 0x00007f80bde28000 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=46463, stack(0x0000000307c28000,0x0000000307d28000)] - 0x00007f80bb708000 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=53583, stack(0x0000000307a22000,0x0000000307b22000)] - 0x00007f805b612000 JavaThread "pool-35-thread-2" [_thread_in_native, id=47723, stack(0x0000000307b25000,0x0000000307c25000)] - 0x00007f80bc9f3800 JavaThread "pool-35-thread-1" [_thread_in_native, id=80059, stack(0x000000030aebe000,0x000000030afbe000)] - 0x00007f80ab9b0800 JavaThread "pool-9-thread-1" [_thread_in_native, id=85047, stack(0x000000030a29a000,0x000000030a39a000)] - 0x00007f80bd879000 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=36867, stack(0x000000030781c000,0x000000030791c000)] - 0x00007f80bc2c5000 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=39967, stack(0x0000000307719000,0x0000000307819000)] - 0x00007f80bc2c4000 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=41495, stack(0x0000000307616000,0x0000000307716000)] - 0x00007f80be088000 JavaThread "BoneCP-pool-watch-thread" daemon [_thread_blocked, id=38147, stack(0x0000000307513000,0x0000000307613000)] - 0x00007f80bc35c800 JavaThread "BoneCP-keep-alive-scheduler" daemon [_thread_blocked, id=38411, stack(0x0000000307410000,0x0000000307510000)] - 0x00007f80bc35b800 JavaThread "com.google.common.base.internal.Finalizer" daemon [_thread_blocked, id=35879, stack(0x000000030730d000,0x000000030740d000)] - 0x00007f805ad33800 JavaThread "derby.rawStoreDaemon" daemon [_thread_blocked, id=35387, stack(0x000000030720a000,0x000000030730a000)] - 0x00007f80be0a5800 JavaThread "Timer-0" daemon [_thread_blocked, id=39323, stack(0x0000000307107000,0x0000000307207000)] - 0x00007f80be50a800 JavaThread "iceberg-lock-manager-2" daemon [_thread_blocked, id=34339, stack(0x0000000307004000,0x0000000307104000)] - 0x00007f80be509800 JavaThread "iceberg-lock-manager-3" daemon [_thread_blocked, id=34563, stack(0x0000000306f01000,0x0000000307001000)] - 0x00007f80ab960000 JavaThread "iceberg-lock-manager-1" daemon [_thread_blocked, id=41767, stack(0x0000000306dfe000,0x0000000306efe000)] - 0x00007f805b126800 JavaThread "iceberg-lock-manager-0" daemon [_thread_blocked, id=33795, stack(0x0000000306cfb000,0x0000000306dfb000)] - 0x00007f80bc40f000 JavaThread "org.apache.hadoop.fs.FileSystem$Statistics$StatisticsDataReferenceCleaner" daemon [_thread_blocked, id=33079, stack(0x0000000306bcd000,0x0000000306ccd000)] - 0x00007f80bd4a0800 JavaThread "/127.0.0.1:59642 to /127.0.0.1:59640 workers Thread 3" [_thread_in_native, id=28163, stack(0x0000000306aca000,0x0000000306bca000)] - 0x00007f80bd4b6800 JavaThread "/127.0.0.1:59642 to /127.0.0.1:59640 workers Thread 2" [_thread_blocked, id=28975, stack(0x00000003069c7000,0x0000000306ac7000)] - 0x00007f80abbb7800 JavaThread "/127.0.0.1:59642 to /127.0.0.1:59640 workers" [_thread_blocked, id=24379, stack(0x00000003068c4000,0x00000003069c4000)] - 0x00007f80bd015000 JavaThread "Service Thread" daemon [_thread_blocked, id=30215, stack(0x00000003066be000,0x00000003067be000)] - 0x00007f80bc01f000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=30979, stack(0x00000003065bb000,0x00000003066bb000)] - 0x00007f80ab81c800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=23043, stack(0x00000003064b8000,0x00000003065b8000)] - 0x00007f80ab81b800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=22787, stack(0x00000003063b5000,0x00000003064b5000)] - 0x00007f80ba82e000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=22531, stack(0x00000003062b2000,0x00000003063b2000)] - 0x00007f80ab808800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=32259, stack(0x00000003061af000,0x00000003062af000)] - 0x00007f80bc00f800 JavaThread "Finalizer" daemon [_thread_blocked, id=20771, stack(0x0000000305f9e000,0x000000030609e000)] - 0x00007f80aa850000 JavaThread "Reference Handler" daemon [_thread_blocked, id=17187, stack(0x0000000305e9b000,0x0000000305f9b000)] -=>0x00007f80bb00c800 JavaThread "Test worker" [_thread_in_native, id=8195, stack(0x000000030537a000,0x000000030547a000)] - -Other Threads: - 0x00007f80aa84f000 VMThread [stack: 0x0000000305d98000,0x0000000305e98000] [id=16643] - 0x00007f80ab809000 WatcherThread [stack: 0x00000003067c1000,0x00000003068c1000] [id=23823] - -VM state:not at safepoint (normal execution) - -VM Mutex/Monitor currently owned by a thread: None - -heap address: 0x0000000720000000, size: 2560 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 -Narrow klass base: 0x0000000000000000, Narrow klass shift: 3 -Compressed class space size: 1073741824 Address: 0x00000007c0000000 - -Heap: - PSYoungGen total 582656K, used 285092K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 96% used [0x000000078ab00000,0x000000079bf2e740,0x000000079c800000) - from space 290816K, 0% used [0x00000007ae400000,0x00000007ae63ac08,0x00000007c0000000) - to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) - ParOldGen total 1614848K, used 1493457K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 92% used [0x0000000720000000,0x000000077b274470,0x0000000782900000) - Metaspace used 236739K, capacity 254086K, committed 254320K, reserved 1269760K - class space used 28627K, capacity 33002K, committed 33200K, reserved 1048576K - -Card table byte_map: [0x0000000119f73000,0x000000011a474000] byte_map_base: 0x0000000116673000 - -Marking Bits: (ParMarkBitMap*) 0x0000000109e85f18 - Begin Bits: [0x000000011a474000, 0x000000011cc74000) - End Bits: [0x000000011cc74000, 0x000000011f474000) - -Polling page: 0x0000000108d65000 - -CodeCache: size=245760Kb used=29642Kb max_used=113867Kb free=216117Kb - bounds [0x000000010af73000, 0x0000000111f53000, 0x0000000119f73000] - total_blobs=10066 nmethods=8925 adapters=1050 - compilation: enabled - -Compilation events (10 events): -Event: 278.816 Thread 0x00007f80ab81c800 46972 4 sun.invoke.util.VerifyType::isNullConversion (157 bytes) -Event: 278.817 Thread 0x00007f80ab81b800 nmethod 46965 0x000000010c3e3fd0 code [0x000000010c3e4160, 0x000000010c3e4468] -Event: 278.817 Thread 0x00007f80ba82e000 nmethod 46971 0x0000000111ec2c10 code [0x0000000111ec2d60, 0x0000000111ec2dd8] -Event: 278.817 Thread 0x00007f80ab81b800 46973 4 java.lang.invoke.BoundMethodHandle::rebind (14 bytes) -Event: 278.817 Thread 0x00007f80ba82e000 46974 4 java.lang.invoke.BoundMethodHandle::tooComplex (27 bytes) -Event: 278.818 Thread 0x00007f80ba82e000 nmethod 46974 0x000000010c3e2710 code [0x000000010c3e2860, 0x000000010c3e2938] -Event: 278.818 Thread 0x00007f80ab81b800 nmethod 46973 0x000000010c3e3c10 code [0x000000010c3e3d60, 0x000000010c3e3e58] -Event: 278.818 Thread 0x00007f80ba82e000 46975 4 java.lang.invoke.LambdaForm::expressionCount (11 bytes) -Event: 278.818 Thread 0x00007f80ba82e000 nmethod 46975 0x0000000111ecacd0 code [0x0000000111ecae20, 0x0000000111ecae98] -Event: 278.819 Thread 0x00007f80ab81c800 nmethod 46972 0x000000010c3e5c10 code [0x000000010c3e5e00, 0x000000010c3e6240] - -GC Heap History (10 events): -Event: 275.084 GC heap before -{Heap before GC invocations=206 (full 14): - PSYoungGen total 582656K, used 555973K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) - from space 290816K, 90% used [0x000000079c800000,0x00000007ac9f1578,0x00000007ae400000) - to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) - ParOldGen total 1614848K, used 1325971K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 82% used [0x0000000720000000,0x0000000770ee4d98,0x0000000782900000) - Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K - class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K -Event: 275.125 GC heap after -Heap after GC invocations=206 (full 14): - PSYoungGen total 582656K, used 282312K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) - from space 290816K, 97% used [0x00000007ae400000,0x00000007bf7b2318,0x00000007c0000000) - to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) - ParOldGen total 1614848K, used 1326059K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 82% used [0x0000000720000000,0x0000000770efad98,0x0000000782900000) - Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K - class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K -} -Event: 275.253 GC heap before -{Heap before GC invocations=207 (full 14): - PSYoungGen total 582656K, used 574152K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) - from space 290816K, 97% used [0x00000007ae400000,0x00000007bf7b2318,0x00000007c0000000) - to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) - ParOldGen total 1614848K, used 1326059K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 82% used [0x0000000720000000,0x0000000770efad98,0x0000000782900000) - Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K - class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K -Event: 275.385 GC heap after -Heap after GC invocations=207 (full 14): - PSYoungGen total 582656K, used 160430K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) - from space 290816K, 55% used [0x000000079c800000,0x00000007a64ab880,0x00000007ae400000) - to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) - ParOldGen total 1614848K, used 1432691K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 88% used [0x0000000720000000,0x000000077771cdb8,0x0000000782900000) - Metaspace used 236377K, capacity 253646K, committed 253936K, reserved 1269760K - class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K -} -Event: 275.813 GC heap before -{Heap before GC invocations=208 (full 14): - PSYoungGen total 582656K, used 452270K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) - from space 290816K, 55% used [0x000000079c800000,0x00000007a64ab880,0x00000007ae400000) - to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) - ParOldGen total 1614848K, used 1432691K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 88% used [0x0000000720000000,0x000000077771cdb8,0x0000000782900000) - Metaspace used 236388K, capacity 253710K, committed 253936K, reserved 1269760K - class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K -Event: 275.884 GC heap after -Heap after GC invocations=208 (full 14): - PSYoungGen total 582656K, used 115330K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) - from space 290816K, 39% used [0x00000007ae400000,0x00000007b54a0b48,0x00000007c0000000) - to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) - ParOldGen total 1614848K, used 1493401K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 92% used [0x0000000720000000,0x000000077b266470,0x0000000782900000) - Metaspace used 236388K, capacity 253710K, committed 253936K, reserved 1269760K - class space used 28579K, capacity 32952K, committed 33072K, reserved 1048576K -} -Event: 276.492 GC heap before -{Heap before GC invocations=209 (full 14): - PSYoungGen total 582656K, used 406965K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 99% used [0x000000078ab00000,0x000000079c7ccb58,0x000000079c800000) - from space 290816K, 39% used [0x00000007ae400000,0x00000007b54a0b48,0x00000007c0000000) - to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) - ParOldGen total 1614848K, used 1493401K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 92% used [0x0000000720000000,0x000000077b266470,0x0000000782900000) - Metaspace used 236426K, capacity 253716K, committed 253936K, reserved 1269760K - class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K -Event: 276.501 GC heap after -Heap after GC invocations=209 (full 14): - PSYoungGen total 582656K, used 7339K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) - from space 290816K, 2% used [0x000000079c800000,0x000000079cf2adf8,0x00000007ae400000) - to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) - ParOldGen total 1614848K, used 1493417K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 92% used [0x0000000720000000,0x000000077b26a470,0x0000000782900000) - Metaspace used 236426K, capacity 253716K, committed 253936K, reserved 1269760K - class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K -} -Event: 276.898 GC heap before -{Heap before GC invocations=210 (full 14): - PSYoungGen total 582656K, used 299179K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 100% used [0x000000078ab00000,0x000000079c800000,0x000000079c800000) - from space 290816K, 2% used [0x000000079c800000,0x000000079cf2adf8,0x00000007ae400000) - to space 290816K, 0% used [0x00000007ae400000,0x00000007ae400000,0x00000007c0000000) - ParOldGen total 1614848K, used 1493417K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 92% used [0x0000000720000000,0x000000077b26a470,0x0000000782900000) - Metaspace used 236449K, capacity 253788K, committed 253936K, reserved 1269760K - class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K -Event: 276.904 GC heap after -Heap after GC invocations=210 (full 14): - PSYoungGen total 582656K, used 2283K [0x000000078ab00000, 0x00000007c0000000, 0x00000007c0000000) - eden space 291840K, 0% used [0x000000078ab00000,0x000000078ab00000,0x000000079c800000) - from space 290816K, 0% used [0x00000007ae400000,0x00000007ae63ac08,0x00000007c0000000) - to space 290816K, 0% used [0x000000079c800000,0x000000079c800000,0x00000007ae400000) - ParOldGen total 1614848K, used 1493457K [0x0000000720000000, 0x0000000782900000, 0x000000078ab00000) - object space 1614848K, 92% used [0x0000000720000000,0x000000077b274470,0x0000000782900000) - Metaspace used 236449K, capacity 253788K, committed 253936K, reserved 1269760K - class space used 28581K, capacity 32953K, committed 33072K, reserved 1048576K -} - -Deoptimization events (10 events): -Event: 277.125 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000111dc1bc0 method=org.apache.iceberg.spark.data.RandomData$RandomDataGenerator.primitive(Lorg/apache/iceberg/types/Type$PrimitiveType;)Ljava/lang/Object; @ 6 -Event: 277.130 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000010b2ec078 method=org.apache.parquet.schema.PrimitiveComparator$9.compare(ILjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;I)I @ 6 -Event: 277.131 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000010bc4be4c method=org.apache.parquet.schema.PrimitiveComparator$9.compare(ILjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;I)I @ 6 -Event: 277.647 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000011123b630 method=java.util.regex.Pattern$CharProperty.match(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z @ 40 -Event: 277.651 Thread 0x00007f80bb00c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000000011164b404 method=java.nio.Buffer.limit(I)Ljava/nio/Buffer; @ 30 -Event: 277.713 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 -Event: 277.714 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 -Event: 277.715 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 -Event: 277.715 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010fb5cff8 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 -Event: 277.736 Thread 0x00007f80bb00c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000010c3e7b54 method=sun.nio.ch.IOUtil.writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I @ 114 - -Classes redefined (2 events): -Event: 252.822 Thread 0x00007f80aa84f000 redefined class name=java.lang.Object, count=1 -Event: 252.844 Thread 0x00007f80aa84f000 redefined class name=org.apache.iceberg.data.DeleteFilter, count=2 - -Internal exceptions (10 events): -Event: 255.507 Thread 0x00007f80bb00c800 Exception (0x00000007a12aadf8) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] -Event: 255.959 Thread 0x00007f80bb00c800 Exception (0x00000007a5e14820) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/interpreter/linkResolver.cpp, line 620 -Event: 255.959 Thread 0x00007f80bb00c800 Exception (0x00000007a5e17eb8) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] -Event: 256.738 Thread 0x00007f80bb00c800 Exception (0x000000078c7bdc98) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/interpreter/linkResolver.cpp, line 620] -Event: 256.947 Thread 0x00007f80bb00c800 Exception (0x000000078e677820) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/interpreter/linkResolve -Event: 257.510 Thread 0x00007f80bb00c800 Exception (0x000000078faccec8) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] -Event: 257.985 Thread 0x00007f80bb00c800 Implicit null exception at 0x0000000111edbc8b to 0x0000000111edeea1 -Event: 259.203 Thread 0x00007f80bb00c800 Implicit null exception at 0x0000000111f45f98 to 0x0000000111f46121 -Event: 261.318 Thread 0x00007f80bb00c800 Exception (0x0000000799964250) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/runtime/reflection.cpp, line 1092] -Event: 277.648 Thread 0x00007f80bb00c800 Exception (0x000000079bac7388) thrown at [/Users/admin/applejdk-builder/installers/macOS/tar/.out/buildRoot/hotspot/src/share/vm/prims/jni.cpp, line 711] - -Events (10 events): -Event: 278.808 loading class com/apple/boson/Utils -Event: 278.808 loading class com/apple/boson/Utils done -Event: 278.808 loading class com/apple/boson/Utils$ -Event: 278.808 loading class com/apple/boson/Utils$ done -Event: 278.816 loading class scala/Function1 -Event: 278.816 loading class scala/Function1 done -Event: 278.824 loading class scala/Function1 -Event: 278.824 loading class scala/Function1 done -Event: 278.826 loading class scala/Function1 -Event: 278.826 loading class scala/Function1 done - - -Dynamic libraries: -0x00007ff825538000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa -0x00007ff81002f000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit -0x00007ff812cea000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData -0x00007ff80dd1a000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation -0x00007ff8190aa000 /usr/lib/libSystem.B.dylib -0x00007ff811038000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation -0x00007ffb0db97000 /System/Library/PrivateFrameworks/CollectionViewCore.framework/Versions/A/CollectionViewCore -0x00007ff81f4f6000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices -0x00007ff817151000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap -0x00007ff81afd9000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport -0x00007ff81b062000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity -0x00007ffb23e69000 /System/Library/PrivateFrameworks/WindowManagement.framework/Versions/A/WindowManagement -0x00007ff80da04000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration -0x00007ff81a3d6000 /usr/lib/libspindump.dylib -0x00007ff811206000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers -0x00007ff815631000 /usr/lib/libapp_launch_measurement.dylib -0x00007ff8142a5000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics -0x00007ff815634000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout -0x00007ff8169c5000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal -0x00007ff817914000 /usr/lib/liblangid.dylib -0x00007ff817156000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG -0x00007ff811b40000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight -0x00007ff811f2a000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics -0x00007ff81fbc8000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate -0x00007ff819e4b000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices -0x00007ff8169a8000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface -0x00007ff8142cf000 /usr/lib/libDiagnosticMessagesClient.dylib -0x00007ff818fc0000 /usr/lib/libz.1.dylib -0x00007ff82314a000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices -0x00007ff81713d000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation -0x00007ff80f8f7000 /usr/lib/libicucore.A.dylib -0x00007ff81be7c000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox -0x00007ff81afe4000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore -0x00007ff9147cf000 /System/Library/PrivateFrameworks/TextInput.framework/Versions/A/TextInput -0x00007ff811ab5000 /usr/lib/libMobileGestalt.dylib -0x00007ff816e45000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox -0x00007ff814fd2000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore -0x00007ff80f575000 /System/Library/Frameworks/Security.framework/Versions/A/Security -0x00007ff81f52e000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition -0x00007ff815371000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI -0x00007ff80ee56000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio -0x00007ff8143a9000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration -0x00007ff81a7f4000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport -0x00007ff811ab4000 /usr/lib/libenergytrace.dylib -0x00007ff80ff11000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit -0x00007ff81f927000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices -0x00007ff8155c9000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis -0x00007ffa230c5000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL -0x00007ff81567c000 /usr/lib/libxml2.2.dylib -0x00007ff818520000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag -0x00007ff80cb94000 /usr/lib/libobjc.A.dylib -0x00007ff80ce5a000 /usr/lib/libc++.1.dylib -0x00007ff81274c000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync -0x00007ff80cf65000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation -0x00007ff8174f1000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage -0x00007ff80ec67000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText -0x00007ff81718e000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO -0x00007ff8190b0000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking -0x00007ff819330000 /usr/lib/libcompression.dylib -0x00007ff81af0b000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO -0x00007ff819a7b000 /usr/lib/libate.dylib -0x00007ff8190a5000 /usr/lib/system/libcache.dylib -0x00007ff819060000 /usr/lib/system/libcommonCrypto.dylib -0x00007ff819089000 /usr/lib/system/libcompiler_rt.dylib -0x00007ff81907f000 /usr/lib/system/libcopyfile.dylib -0x00007ff80ccc3000 /usr/lib/system/libcorecrypto.dylib -0x00007ff80cd87000 /usr/lib/system/libdispatch.dylib -0x00007ff80cf0f000 /usr/lib/system/libdyld.dylib -0x00007ff81909b000 /usr/lib/system/libkeymgr.dylib -0x00007ff81903f000 /usr/lib/system/libmacho.dylib -0x00007ff81860d000 /usr/lib/system/libquarantine.dylib -0x00007ff819099000 /usr/lib/system/libremovefile.dylib -0x00007ff811b0e000 /usr/lib/system/libsystem_asl.dylib -0x00007ff80cc65000 /usr/lib/system/libsystem_blocks.dylib -0x00007ff80cdd1000 /usr/lib/system/libsystem_c.dylib -0x00007ff819091000 /usr/lib/system/libsystem_collections.dylib -0x00007ff817905000 /usr/lib/system/libsystem_configuration.dylib -0x00007ff816979000 /usr/lib/system/libsystem_containermanager.dylib -0x00007ff818cf8000 /usr/lib/system/libsystem_coreservices.dylib -0x00007ff80fb8b000 /usr/lib/system/libsystem_darwin.dylib -0x00007ff81909c000 /usr/lib/system/libsystem_dnssd.dylib -0x00007ff80cdce000 /usr/lib/system/libsystem_featureflags.dylib -0x00007ff80cf3a000 /usr/lib/system/libsystem_info.dylib -0x00007ff818fd3000 /usr/lib/system/libsystem_m.dylib -0x00007ff80cd5a000 /usr/lib/system/libsystem_malloc.dylib -0x00007ff811a9d000 /usr/lib/system/libsystem_networkextension.dylib -0x00007ff80ffd0000 /usr/lib/system/libsystem_notify.dylib -0x00007ff817909000 /usr/lib/system/libsystem_sandbox.dylib -0x00007ff819096000 /usr/lib/system/libsystem_secinit.dylib -0x00007ff80cec9000 /usr/lib/system/libsystem_kernel.dylib -0x00007ff80cf30000 /usr/lib/system/libsystem_platform.dylib -0x00007ff80cf03000 /usr/lib/system/libsystem_pthread.dylib -0x00007ff81355e000 /usr/lib/system/libsystem_symptoms.dylib -0x00007ff80cca9000 /usr/lib/system/libsystem_trace.dylib -0x00007ff81906c000 /usr/lib/system/libunwind.dylib -0x00007ff80cc69000 /usr/lib/system/libxpc.dylib -0x00007ff80ceb3000 /usr/lib/libc++abi.dylib -0x00007ff819077000 /usr/lib/liboah.dylib -0x00007ff81980b000 /usr/lib/liblzma.5.dylib -0x00007ff8190ac000 /usr/lib/libfakelink.dylib -0x00007ff8116f7000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork -0x00007ff8191e9000 /usr/lib/libarchive.2.dylib -0x00007ff81d7cf000 /System/Library/Frameworks/Combine.framework/Versions/A/Combine -0x00007ff81b8f4000 /usr/lib/swift/libswiftCore.dylib -0x00007ff911814000 /usr/lib/swift/libswiftCoreFoundation.dylib -0x00007ff90f7cd000 /usr/lib/swift/libswiftDarwin.dylib -0x00007ff821149000 /usr/lib/swift/libswiftDispatch.dylib -0x00007ff911830000 /usr/lib/swift/libswiftIOKit.dylib -0x00007ff823583000 /usr/lib/swift/libswiftObjectiveC.dylib -0x00007ff911825000 /usr/lib/swift/libswiftXPC.dylib -0x00007ffb2a743000 /usr/lib/swift/libswift_Concurrency.dylib -0x00007ffb2a882000 /usr/lib/swift/libswift_StringProcessing.dylib -0x00007ff823587000 /usr/lib/swift/libswiftos.dylib -0x00007ff80fe92000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal -0x00007ff818634000 /usr/lib/libbsm.0.dylib -0x00007ff819044000 /usr/lib/system/libkxld.dylib -0x00007ff8155fd000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents -0x00007ff80fb96000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore -0x00007ff814312000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata -0x00007ff818cfe000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices -0x00007ff819271000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit -0x00007ff8134e5000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE -0x00007ff80d3fd000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices -0x00007ff8197bc000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices -0x00007ff81560a000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList -0x00007ff8192fd000 /usr/lib/libapple_nghttp2.dylib -0x00007ff8116f3000 /usr/lib/libnetwork.dylib -0x00007ff813163000 /usr/lib/libsqlite3.dylib -0x00007ff813566000 /System/Library/Frameworks/Network.framework/Versions/A/Network -0x00007ffb2972d000 /usr/lib/libCoreEntitlements.dylib -0x00007ffb17068000 /System/Library/PrivateFrameworks/MessageSecurity.framework/Versions/A/MessageSecurity -0x00007ff81314a000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer -0x00007ff818cd7000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression -0x00007ff81861c000 /usr/lib/libcoretls.dylib -0x00007ff819825000 /usr/lib/libcoretls_cfhelpers.dylib -0x00007ff81932a000 /usr/lib/libpam.2.dylib -0x00007ff819893000 /usr/lib/libxar.1.dylib -0x00007ff819e27000 /usr/lib/libheimdal-asn1.dylib -0x00007ff8190b1000 /usr/lib/libpcap.A.dylib -0x00007ff813555000 /usr/lib/libdns_services.dylib -0x00007ff817910000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo -0x00007ff818329000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer -0x00007ff818ce8000 /usr/lib/libbz2.1.0.dylib -0x00007ff818610000 /usr/lib/libCheckFix.dylib -0x00007ff811b25000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC -0x00007ff817916000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP -0x00007ff8142d1000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities -0x00007ff818644000 /usr/lib/libmecab.dylib -0x00007ff80da83000 /usr/lib/libCRFSuite.dylib -0x00007ff81869e000 /usr/lib/libgermantok.dylib -0x00007ff8192d8000 /usr/lib/libThaiTokenizer.dylib -0x00007ff8143b1000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage -0x00007ff81f8fa000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib -0x00007ff8198d5000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib -0x00007ff818124000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib -0x00007ff80d7b9000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib -0x00007ff81940f000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib -0x00007ff8186a1000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib -0x00007ff819315000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib -0x00007ff819409000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib -0x00007ff817a02000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib -0x00007ff80d98d000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib -0x00007ffb16367000 /System/Library/PrivateFrameworks/MIL.framework/Versions/A/MIL -0x00007ff8190e6000 /usr/lib/libiconv.2.dylib -0x00007ff81903e000 /usr/lib/libcharset.1.dylib -0x00007ff8155e1000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory -0x00007ff8155d5000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory -0x00007ff819827000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS -0x00007ff818553000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation -0x00007ff8198a1000 /usr/lib/libutil.dylib -0x00007ffb154f8000 /System/Library/PrivateFrameworks/InstalledContentLibrary.framework/Versions/A/InstalledContentLibrary -0x00007ff80fed5000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore -0x00007ffa2c6cf000 /System/Library/PrivateFrameworks/AppleMobileFileIntegrity.framework/Versions/A/AppleMobileFileIntegrity -0x00007ff9117f4000 /usr/lib/libmis.dylib -0x00007ff91fe26000 /System/Library/PrivateFrameworks/MobileSystemServices.framework/Versions/A/MobileSystemServices -0x00007ffa19fc0000 /System/Library/PrivateFrameworks/ConfigProfileHelper.framework/Versions/A/ConfigProfileHelper -0x00007ff8192da000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce -0x00007ff80e72c000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling -0x00007ff8198a5000 /usr/lib/libxslt.1.dylib -0x00007ff8191d8000 /usr/lib/libcmph.dylib -0x00007ff818317000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji -0x00007ff8179fc000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData -0x00007ff80d943000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon -0x00007ff8185e1000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement -0x00007ffb29867000 /usr/lib/libTLE.dylib -0x00007ffb2a7c7000 /usr/lib/swift/libswift_RegexParser.dylib -0x00007ff81a6be000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG -0x00007ff819e0c000 /usr/lib/libexpat.1.dylib -0x00007ff81ad68000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib -0x00007ff81ad95000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib -0x00007ff81ae85000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib -0x00007ff81a709000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib -0x00007ff81ae25000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib -0x00007ff81ae1c000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib -0x00007ff816cdb000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib -0x00007ff81348a000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices -0x00007ff825b75000 /System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator -0x00007ff81a7f0000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient -0x00007ff80e88e000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay -0x00007ff816bca000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia -0x00007ff8169bc000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator -0x00007ff81575b000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo -0x00007ff819328000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders -0x00007ff81a82d000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox -0x00007ff8133ce000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard -0x00007ff81ae15000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler -0x00007ff81adf9000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment -0x00007ff81ae1f000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay -0x00007ffb11b67000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libllvm-flatbuffers.dylib -0x00007ffa230b9000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib -0x00007ffb11b63000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libGPUCompilerUtils.dylib -0x00007ff81ae8b000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore -0x00007ffa26ba1000 /System/Library/Frameworks/ExtensionFoundation.framework/Versions/A/ExtensionFoundation -0x00007ff8218c6000 /System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime -0x00007ff81a3c0000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport -0x00007ff81c747000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata -0x00007ff80e9ba000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore -0x00007ff816ba4000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk -0x00007ff81c014000 /usr/lib/libAudioStatistics.dylib -0x00007ff910c77000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy -0x00007ff81c2b2000 /usr/lib/libSMC.dylib -0x00007ff8253dd000 /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI -0x00007ff81ad36000 /usr/lib/libAudioToolboxUtility.dylib -0x00007ff82a910000 /System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient -0x00007ff81c754000 /usr/lib/libperfcheck.dylib -0x00007ff819cf0000 /System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit -0x00007ff818546000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices -0x00007ffa23114000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib -0x00007ffa230d8000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib -0x00007ffa232e1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib -0x00007ffa230e1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib -0x00007ffa230d5000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib -0x00007ffb29846000 /usr/lib/libRosetta.dylib -0x00007ffa230c0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib -0x00007ff817889000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore -0x00007ff818c41000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage -0x00007ff8186b7000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork -0x00007ff818b2a000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix -0x00007ff8188e5000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector -0x00007ff818b65000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray -0x00007ffa27f11000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSFunctions.framework/Versions/A/MPSFunctions -0x00007ff80d67a000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools -0x00007ff81790f000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary -0x00007ff819bab000 /usr/lib/libIOReport.dylib -0x00007ffa23da8000 /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL -0x00007ff819f52000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer -0x00007ffb11a78000 /System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices -0x00007ff81a37b000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG -0x00007ff815325000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib -0x00007ff81a3ca000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib -0x00007ffb11a79000 /System/Library/PrivateFrameworks/FontServices.framework/libXTFontStaticRegistryData.dylib -0x00007ffb22d12000 /System/Library/PrivateFrameworks/VideoToolboxParavirtualizationSupport.framework/Versions/A/VideoToolboxParavirtualizationSupport -0x00007ff819dbc000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA -0x00007ff81c054000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS -0x00007ff81283c000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices -0x00007ff81ae97000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore -0x00007ff81c407000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD -0x00007ff81c3ff000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy -0x00007ff81c028000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis -0x00007ff81ae55000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI -0x00007ff81c392000 /usr/lib/libcups.2.dylib -0x00007ff81c763000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos -0x00007ff81c772000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS -0x00007ff81c0c2000 /usr/lib/libresolv.9.dylib -0x00007ff81a3db000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal -0x00007ff823506000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib -0x00007ff81c7bd000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth -0x00007ffa25e77000 /System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio -0x00007ff82a959000 /System/Library/PrivateFrameworks/AXCoreUtilities.framework/Versions/A/AXCoreUtilities -0x00007ff81bfa4000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession -0x00007ff81d5a6000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth -0x00007ff819ec2000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience -0x00007ff81be4b000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib -0x00007ff81c413000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration -0x00007ff8204ff000 /System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog -0x00007ff820441000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth -0x00007ff823507000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit -0x00007ff8183b0000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils -0x00007ffb10629000 /System/Library/PrivateFrameworks/CoreUtilsExtras.framework/Versions/A/CoreUtilsExtras -0x00007ffb1538b000 /System/Library/PrivateFrameworks/IO80211.framework/Versions/A/IO80211 -0x00007ff819e30000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation -0x00007ff81f51e000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore -0x0000000109776000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/server/libjvm.dylib -0x0000000108dd3000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libverify.dylib -0x0000000108e2b000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libjava.dylib -0x0000000108df8000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libzip.dylib -0x0000000109735000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libnio.dylib -0x000000012206b000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libnet.dylib -0x0000000123dab000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libmanagement.dylib -0x00000001257e3000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libosx.dylib -0x000000012582f000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libosxapp.dylib -0x00007ff910687000 /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon -0x00007ff82709c000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels -0x00007ff822e78000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help -0x00007ff8270a0000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture -0x00007ff827070000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting -0x00007ff827098000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink -0x00007ff910683000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print -0x00007ff827094000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI -0x00007ff90f83b000 /System/Library/Frameworks/ExceptionHandling.framework/Versions/A/ExceptionHandling -0x00007ffa2714d000 /System/Library/Frameworks/JavaNativeFoundation.framework/Versions/A/JavaNativeFoundation -0x00007ffa27159000 /System/Library/Frameworks/JavaRuntimeSupport.framework/Versions/A/JavaRuntimeSupport -0x00007ff8217f5000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication -0x00007ff8217ba000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols -0x000000012580a000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libjaas_unix.dylib -0x0000000125eb3000 /private/var/folders/fz/_fgnwbcd31901m5zpzfkyhbc0000gn/T/snappy-1.1.8-fc2bf04d-aff8-42d0-ad90-cb6cfbed202b-libsnappyjava.dylib -0x000000012c625000 /private/var/folders/fz/_fgnwbcd31901m5zpzfkyhbc0000gn/T/libzstd-jni-1.5.2-44450640962306436155.dylib -0x000000012c58c000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libattach.dylib -0x0000000131414000 /Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/libinstrument.dylib -0x00000001342ba000 /private/var/folders/fz/_fgnwbcd31901m5zpzfkyhbc0000gn/T/libboson-8249353338003169445.dylib - -VM Arguments: -jvm_args: -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dorg.gradle.internal.worker.tmpdir=/Users/abid/workspace/aiml-iceberg/spark/v3.3/spark/.out/tmp/test/work -Dorg.gradle.native=false -Xmx2560m -Xbootclasspath:/Users/abid/.gradle/caches/modules-2/files-2.1/com.google.errorprone/javac/9+181-r4173-1/bdf4c0aa7d540ee1f7bf14d47447aea4bbf450c5/javac-9+181-r4173-1.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/applejdk-8.0.312.7.1.jdk/Contents/Home/jre/classes -Dfile.encoding=utf-8 -Duser.country=US -Duser.language=en -Duser.variant -ea -java_command: worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 109' -java_class_path (initial): /Users/abid/.gradle/caches/7.4.2/workerMain/gradle-worker.jar -Launcher Type: SUN_STANDARD - -Environment Variables: -JAVA_HOME=/Users/abid/.jenv/versions/1.8 -PATH=/Users/abid/.jenv/versions/1.8/bin:/opt/homebrew/Cellar/jenv/0.5.4/libexec/libexec:/Users/abid/.jenv/shims:/Users/abid/workspace/apache-maven-3.8.5/bin:/opt/homebrew/Cellar/pyenv-virtualenv/1.2.1/shims:/Users/abid/.pyenv/shims:/Users/abid/workspace/hive/bin:/Users/abid/workspace/scripts:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin:/Users/abid/.cargo/bin:/Users/abid/Library/Application -SHELL=/bin/zsh - -Signal Handlers: -SIGSEGV: [libjvm.dylib+0x598df5], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO -SIGBUS: [libjvm.dylib+0x598df5], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGFPE: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGPIPE: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGXFSZ: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGILL: [libjvm.dylib+0x48cd0f], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART -SIGUSR2: [libjvm.dylib+0x48d606], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO -SIGHUP: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGINT: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGTERM: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGQUIT: [libjvm.dylib+0x48b805], sa_mask[0]=11111111111111111111111111111111, sa_flags=SA_RESTART|SA_SIGINFO - - ---------------- S Y S T E M --------------- - -OS:Bsduname:Darwin 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:37 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T6000 x86_64 -rlimit: STACK 8176k, CORE 0k, NPROC 5333, NOFILE 122880, AS infinity -load average:17.09 15.51 11.54 - -CPU:total 10 (initial active 10) (1 cores per cpu, 1 threads per core) family 6 model 44 stepping 0, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, aes, clmul, tsc, tscinvbit, tscinv - -Memory: 4k page, physical 33554432k(92892k free) - -/proc/meminfo: - - -vm_info: OpenJDK 64-Bit Server VM (25.312-b07) for bsd-amd64 JRE (1.8.0_312-b07), built on Oct 21 2021 03:52:24 by "admin" with gcc 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.3) - -time: Tue Mar 21 23:30:32 2023 -timezone: PDT -elapsed time: 278.848787 seconds (0d 0h 4m 38s) - From 01de116fe8e186d447ae0a7eafdc136bfaa229d4 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 07:44:05 -0700 Subject: [PATCH 06/27] spotless --- .../aws/dynamodb/TestDynamoDbCatalog.java | 10 +++-- .../iceberg/aws/dynamodb/DynamoDbCatalog.java | 2 +- .../apache/iceberg/aws/glue/GlueCatalog.java | 1 - .../iceberg/aws/glue/TestGlueCatalog.java | 39 +++++++++---------- .../iceberg/rest/RESTSessionCatalog.java | 5 ++- .../apache/iceberg/rest/ResourcePaths.java | 3 +- .../iceberg/dell/ecs/TestEcsCatalog.java | 3 +- .../org/apache/iceberg/hive/HiveCatalog.java | 3 +- .../apache/iceberg/hive/TestHiveCatalog.java | 18 ++++----- 9 files changed, 43 insertions(+), 41 deletions(-) diff --git a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java index dc648252fcd4..a7f22ef9cd6c 100644 --- a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java +++ b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java @@ -366,10 +366,12 @@ public void testDropNamespaceCascade() { TableIdentifier tableIdentifier = TableIdentifier.of(namespace, genRandomName()); catalog.createTable(tableIdentifier, SCHEMA); catalog.dropNamespace(namespace, true); - GetItemResponse response = dynamo.getItem(GetItemRequest.builder() - .tableName(catalogTableName) - .key(DynamoDbCatalog.namespacePrimaryKey(namespace)) - .build()); + GetItemResponse response = + dynamo.getItem( + GetItemRequest.builder() + .tableName(catalogTableName) + .key(DynamoDbCatalog.namespacePrimaryKey(namespace)) + .build()); Assert.assertFalse("namespace must not exist", response.hasItem()); } diff --git a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java index 19d1cf4222a1..d9f6e7bf7461 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java @@ -287,7 +287,7 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept @Override public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { - if (cascade) { + if (cascade) { listTables(namespace).forEach(this::dropTable); } return dropNamespace(namespace); diff --git a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java index 6be030bde72b..d08ecdcef475 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java @@ -24,7 +24,6 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import org.apache.commons.lang.NotImplementedException; import org.apache.hadoop.conf.Configuration; import org.apache.iceberg.BaseMetastoreCatalog; import org.apache.iceberg.BaseMetastoreTableOperations; diff --git a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java index 5fafc1bf199d..ece30f5e95eb 100644 --- a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java +++ b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java @@ -554,35 +554,32 @@ public void testDropNamespaceThatContainsNonIcebergTable() { @Test public void testDropNamespaceCascade() { - Table table = Table.builder() + Table table = + Table.builder() .databaseName("db1") .name("t1") .parameters( - ImmutableMap.of( - BaseMetastoreTableOperations.TABLE_TYPE_PROP, - BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE)) - .build(); - GetTablesResponse getTablesResponse = GetTablesResponse.builder() - .tableList(table) - .build(); - GetTableResponse getTableResponse = GetTableResponse.builder() - .table(table) + ImmutableMap.of( + BaseMetastoreTableOperations.TABLE_TYPE_PROP, + BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE)) .build(); + GetTablesResponse getTablesResponse = GetTablesResponse.builder().tableList(table).build(); + GetTableResponse getTableResponse = GetTableResponse.builder().table(table).build(); Mockito.doReturn(getTablesResponse) - .doReturn(GetTablesResponse.builder().build()) - .when(glue) - .getTables(Mockito.any(GetTablesRequest.class)); + .doReturn(GetTablesResponse.builder().build()) + .when(glue) + .getTables(Mockito.any(GetTablesRequest.class)); Mockito.doReturn(getTableResponse) - .doReturn(GetTableResponse.builder().build()) - .when(glue) - .getTable(Mockito.any(GetTableRequest.class)); + .doReturn(GetTableResponse.builder().build()) + .when(glue) + .getTable(Mockito.any(GetTableRequest.class)); Mockito.doReturn( - GetDatabaseResponse.builder().database(Database.builder().name("db1").build()).build()) - .when(glue) - .getDatabase(Mockito.any(GetDatabaseRequest.class)); + GetDatabaseResponse.builder().database(Database.builder().name("db1").build()).build()) + .when(glue) + .getDatabase(Mockito.any(GetDatabaseRequest.class)); Mockito.doReturn(DeleteDatabaseResponse.builder().build()) - .when(glue) - .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); + .when(glue) + .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); Assert.assertTrue(glueCatalog.dropNamespace(Namespace.of("db1"), true)); Mockito.verify(glue).deleteTable(Mockito.any(DeleteTableRequest.class)); } diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java index bde5afdddf87..7cc0fc653ff6 100644 --- a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java +++ b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java @@ -452,7 +452,10 @@ private boolean dropNamespaceInternal(SessionContext context, Namespace ns, bool try { client.delete( - paths.namespace(ns, cascade), null, headers(context), ErrorHandlers.namespaceErrorHandler()); + paths.namespace(ns, cascade), + null, + headers(context), + ErrorHandlers.namespaceErrorHandler()); return true; } catch (NoSuchNamespaceException e) { return false; diff --git a/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java b/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java index 57feef971a7f..343ee866dd06 100644 --- a/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java +++ b/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java @@ -54,7 +54,8 @@ public String namespace(Namespace ns) { } public String namespace(Namespace ns, boolean cascade) { - return SLASH.join("v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns) + "?cascade=" + cascade); + return SLASH.join( + "v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns) + "?cascade=" + cascade); } public String namespaceProperties(Namespace ns) { diff --git a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java index e535284b5cad..8064765facdc 100644 --- a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java +++ b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java @@ -151,8 +151,7 @@ public void testDropNamespaceCascade() { Assert.assertTrue("Drop namespace [a]", ecsCatalog.dropNamespace(Namespace.of("a"), true)); - Assert.assertFalse( - "The [a] is absent", ecsCatalog.namespaceExists(Namespace.of("a"))); + Assert.assertFalse("The [a] is absent", ecsCatalog.namespaceExists(Namespace.of("a"))); } @Test diff --git a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java index 6f6727856b14..a0d981c296cb 100644 --- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java +++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java @@ -368,7 +368,8 @@ private boolean dropNamespaceInternal(Namespace namespace, boolean cascade) { } @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { return dropNamespaceInternal(namespace, cascade); } diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index a589e4e3bf9a..00f11bd00198 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -916,7 +916,7 @@ public void testDropNamespaceCascade() throws TException { Namespace namespace = Namespace.of("dbname_drop"); TableIdentifier identifier = TableIdentifier.of(namespace, "table"); Schema schema = - new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); + new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); catalog.createNamespace(namespace, meta); catalog.createTable(identifier, schema); @@ -927,15 +927,15 @@ public void testDropNamespaceCascade() throws TException { Assert.assertTrue(catalog.dropNamespace(namespace, true)); Assert.assertFalse(catalog.tableExists(identifier)); Assert.assertFalse( - "Should fail to drop when namespace doesn't exist", - catalog.dropNamespace(Namespace.of("db.ns1"))); + "Should fail to drop when namespace doesn't exist", + catalog.dropNamespace(Namespace.of("db.ns1"))); AssertHelpers.assertThrows( - "Should fail to drop namespace exist" + namespace, - NoSuchNamespaceException.class, - "Namespace does not exist: ", - () -> { - catalog.loadNamespaceMetadata(namespace); - }); + "Should fail to drop namespace exist" + namespace, + NoSuchNamespaceException.class, + "Namespace does not exist: ", + () -> { + catalog.loadNamespaceMetadata(namespace); + }); } @Test From d13837a2b60fe66f414bb8fa23c85db49de19dfc Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 08:23:45 -0700 Subject: [PATCH 07/27] add test for cascade false --- .palantir/revapi.yml | 8 +++++ .../aws/dynamodb/TestDynamoDbCatalog.java | 23 +++++++++++++++ .../iceberg/aws/glue/TestGlueCatalog.java | 29 +++++++++++++++++++ .../iceberg/inmemory/InMemoryCatalog.java | 9 ++++++ .../apache/iceberg/catalog/CatalogTests.java | 18 +++++++++++- .../iceberg/hadoop/TestHadoopCatalog.java | 25 ++++++++++++++++ .../apache/iceberg/jdbc/TestJdbcCatalog.java | 22 ++++++++++++++ .../apache/iceberg/dell/ecs/EcsCatalog.java | 2 ++ .../iceberg/dell/ecs/TestEcsCatalog.java | 12 ++++++++ .../apache/iceberg/hive/TestHiveCatalog.java | 24 ++++++++++++++- .../apache/iceberg/nessie/TestNamespace.java | 21 ++++++++++++++ .../iceberg/snowflake/SnowflakeCatalog.java | 6 ++++ 12 files changed, 197 insertions(+), 2 deletions(-) diff --git a/.palantir/revapi.yml b/.palantir/revapi.yml index b7afa49736fb..54f194e3d28b 100644 --- a/.palantir/revapi.yml +++ b/.palantir/revapi.yml @@ -410,6 +410,14 @@ acceptedBreaks: old: "field org.apache.iceberg.actions.RewriteDataFiles.MAX_CONCURRENT_FILE_GROUP_REWRITES_DEFAULT" new: "field org.apache.iceberg.actions.RewriteDataFiles.MAX_CONCURRENT_FILE_GROUP_REWRITES_DEFAULT" justification: "Update default to align with recommendation and allow more parallelism" + - code: "java.method.addedToInterface" + new: "method boolean org.apache.iceberg.catalog.SessionCatalog::dropNamespace(org.apache.iceberg.catalog.SessionCatalog.SessionContext,\ + \ org.apache.iceberg.catalog.Namespace, boolean)" + justification: "extending api to add new method, not removing any public api" + - code: "java.method.addedToInterface" + new: "method boolean org.apache.iceberg.catalog.SupportsNamespaces::dropNamespace(org.apache.iceberg.catalog.Namespace,\ + \ boolean) throws org.apache.iceberg.exceptions.NamespaceNotEmptyException" + justification: "extending api to add new method, not removing any public api" - code: "java.method.addedToInterface" new: "method java.lang.String org.apache.iceberg.view.ViewVersion::operation()" justification: "Add operation API to view version" diff --git a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java index a7f22ef9cd6c..8838be9a40a6 100644 --- a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java +++ b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java @@ -37,6 +37,7 @@ import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.exceptions.AlreadyExistsException; +import org.apache.iceberg.exceptions.NamespaceNotEmptyException; import org.apache.iceberg.exceptions.NoSuchTableException; import org.apache.iceberg.exceptions.ValidationException; import org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap; @@ -375,6 +376,28 @@ public void testDropNamespaceCascade() { Assert.assertFalse("namespace must not exist", response.hasItem()); } + @Test + public void testDropNamespaceFalse() { + Namespace namespace = Namespace.of(genRandomName()); + catalog.createNamespace(namespace); + TableIdentifier tableIdentifier = TableIdentifier.of(namespace, genRandomName()); + catalog.createTable(tableIdentifier, SCHEMA); + AssertHelpers.assertThrows( + "Should fail to drop namespace is not empty" + namespace, + NamespaceNotEmptyException.class, + "Namespace dbname_drop is not empty. One or more tables exist.", + () -> { + catalog.dropNamespace(namespace, false); + }); + GetItemResponse response = + dynamo.getItem( + GetItemRequest.builder() + .tableName(catalogTableName) + .key(DynamoDbCatalog.namespacePrimaryKey(namespace)) + .build()); + Assert.assertTrue(response.hasItem()); + } + @Test public void testRegisterTable() { Namespace namespace = Namespace.of(genRandomName()); diff --git a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java index ece30f5e95eb..aaeac5bcf790 100644 --- a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java +++ b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java @@ -584,6 +584,35 @@ public void testDropNamespaceCascade() { Mockito.verify(glue).deleteTable(Mockito.any(DeleteTableRequest.class)); } + @Test + public void testDropNamespaceCascadeFalse() { + Mockito.doReturn( + GetTablesResponse.builder() + .tableList( + Table.builder() + .databaseName("db1") + .name("t1") + .parameters( + ImmutableMap.of( + BaseMetastoreTableOperations.TABLE_TYPE_PROP, + BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE)) + .build()) + .build()) + .when(glue) + .getTables(Mockito.any(GetTablesRequest.class)); + Mockito.doReturn( + GetDatabaseResponse.builder().database(Database.builder().name("db1").build()).build()) + .when(glue) + .getDatabase(Mockito.any(GetDatabaseRequest.class)); + Mockito.doReturn(DeleteDatabaseResponse.builder().build()) + .when(glue) + .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); + + Assertions.assertThatThrownBy(() -> glueCatalog.dropNamespace(Namespace.of("db1"), false)) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Cannot drop namespace db1 because it still contains Iceberg tables"); + } + @Test public void testSetProperties() { Map parameters = Maps.newHashMap(); diff --git a/core/src/main/java/org/apache/iceberg/inmemory/InMemoryCatalog.java b/core/src/main/java/org/apache/iceberg/inmemory/InMemoryCatalog.java index 15dd679fc7f8..74ba618a0470 100644 --- a/core/src/main/java/org/apache/iceberg/inmemory/InMemoryCatalog.java +++ b/core/src/main/java/org/apache/iceberg/inmemory/InMemoryCatalog.java @@ -203,6 +203,15 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return namespaces.remove(namespace) != null; } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { + if (cascade) { + listTables(namespace).forEach(this::dropTable); + } + return dropNamespace(namespace); + } + @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index 3909f82b4d8b..9c11fb01dbc3 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -48,6 +48,7 @@ import org.apache.iceberg.UpdateSchema; import org.apache.iceberg.exceptions.AlreadyExistsException; import org.apache.iceberg.exceptions.CommitFailedException; +import org.apache.iceberg.exceptions.NamespaceNotEmptyException; import org.apache.iceberg.exceptions.NoSuchNamespaceException; import org.apache.iceberg.exceptions.NoSuchTableException; import org.apache.iceberg.expressions.Expressions; @@ -379,7 +380,22 @@ public void testDropNamespaceCascade() { Table table = catalog.buildTable(ident, SCHEMA).create(); Assert.assertTrue( - "Dropping an existing namespace should return true", catalog.dropNamespace(NS)); + "Dropping an existing namespace should return true", catalog.dropNamespace(NS, true)); + Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); + } + + @Test + public void testDropNamespaceCascadeFalse() { + C catalog = catalog(); + + Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); + + catalog.createNamespace(NS); + TableIdentifier ident = TableIdentifier.of("ns", "table"); + Table table = catalog.buildTable(ident, SCHEMA).create(); + + Assertions.assertThatThrownBy(() -> catalog.dropNamespace(NS, false)) + .isInstanceOf(NamespaceNotEmptyException.class); Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); } diff --git a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java index e469d27f8f10..3d32505e9146 100644 --- a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java +++ b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java @@ -490,6 +490,31 @@ public void testDropNamespaceCascade() throws IOException { Assert.assertFalse(fs.isDirectory(new Path(metaLocation))); } + @Test + public void testDropNamespaceCascadeFalse() throws IOException { + String warehouseLocation = temp.newFolder().getAbsolutePath(); + HadoopCatalog catalog = new HadoopCatalog(); + catalog.setConf(new Configuration()); + catalog.initialize( + "hadoop", ImmutableMap.of(CatalogProperties.WAREHOUSE_LOCATION, warehouseLocation)); + Namespace namespace1 = Namespace.of("db"); + Namespace namespace2 = Namespace.of("db", "ns1"); + + TableIdentifier tbl1 = TableIdentifier.of(namespace1, "tbl1"); + TableIdentifier tbl2 = TableIdentifier.of(namespace2, "tbl1"); + + Lists.newArrayList(tbl1, tbl2) + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + + AssertHelpers.assertThrows( + "Should fail to drop namespace is not empty " + namespace1, + NamespaceNotEmptyException.class, + "Namespace " + namespace1 + " is not empty.", + () -> { + catalog.dropNamespace(Namespace.of("db"), false); + }); + } + @Test public void testVersionHintFileErrorWithFile() throws Exception { addVersionsToTable(table); diff --git a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java index 107cf003fdc0..93ed93c8a4c8 100644 --- a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java +++ b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java @@ -640,6 +640,28 @@ public void testDropNamespaceCascade() { Assert.assertFalse(catalog.namespaceExists(tbl1.namespace())); } + @Test + public void testDropNamespaceCascadeFalse() { + Assert.assertFalse( + "Should return false if drop does not modify state", + catalog.dropNamespace(Namespace.of("db", "ns1_not_exitss"))); + + TableIdentifier tbl0 = TableIdentifier.of("db", "ns1", "ns2", "tbl2"); + TableIdentifier tbl1 = TableIdentifier.of("db", "ns1", "ns2", "tbl1"); + TableIdentifier tbl2 = TableIdentifier.of("db", "ns1", "tbl2"); + TableIdentifier tbl3 = TableIdentifier.of("db", "ns3", "tbl4"); + TableIdentifier tbl4 = TableIdentifier.of("db", "tbl"); + + Lists.newArrayList(tbl0, tbl1, tbl2, tbl3, tbl4) + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + + AssertHelpers.assertThrows( + "Should fail to drop namespace has tables", + NamespaceNotEmptyException.class, + "is not empty. 1 tables exist.", + () -> catalog.dropNamespace(tbl4.namespace(), false)); + } + @Test public void testCreateNamespace() { Namespace testNamespace = Namespace.of("testDb", "ns1", "ns2"); diff --git a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java index 5de9a1dd8d75..5568f2b2e9d4 100644 --- a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java +++ b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java @@ -343,6 +343,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { + // recursively delete all nested namespaces + listNamespaces(namespace).forEach(n -> dropNamespace(n, true)); listTables(namespace).forEach(this::dropTable); } return dropNamespace(namespace); diff --git a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java index 8064765facdc..51cfd73c861f 100644 --- a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java +++ b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java @@ -147,6 +147,7 @@ public void testDropNamespace() { @Test public void testDropNamespaceCascade() { ecsCatalog.createNamespace(Namespace.of("a")); + ecsCatalog.createNamespace(Namespace.of("a", "b1")); ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); Assert.assertTrue("Drop namespace [a]", ecsCatalog.dropNamespace(Namespace.of("a"), true)); @@ -154,6 +155,17 @@ public void testDropNamespaceCascade() { Assert.assertFalse("The [a] is absent", ecsCatalog.namespaceExists(Namespace.of("a"))); } + @Test + public void testDropNamespaceCascadeFalse() { + ecsCatalog.createNamespace(Namespace.of("a")); + ecsCatalog.createNamespace(Namespace.of("a", "b1")); + ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); + + Assertions.assertThatThrownBy(() -> ecsCatalog.dropNamespace(Namespace.of("a"), false)) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Namespace a is not empty"); + } + @Test public void testDropTable() { ecsCatalog.createTable(TableIdentifier.of("a"), SCHEMA); diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index 00f11bd00198..a3c39b03381a 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -930,7 +930,7 @@ public void testDropNamespaceCascade() throws TException { "Should fail to drop when namespace doesn't exist", catalog.dropNamespace(Namespace.of("db.ns1"))); AssertHelpers.assertThrows( - "Should fail to drop namespace exist" + namespace, + "Should fail to load namespace" + namespace, NoSuchNamespaceException.class, "Namespace does not exist: ", () -> { @@ -938,6 +938,28 @@ public void testDropNamespaceCascade() throws TException { }); } + @Test + public void testDropNamespaceCascadeFalse() throws TException { + Namespace namespace = Namespace.of("dbname_drop"); + TableIdentifier identifier = TableIdentifier.of(namespace, "table"); + Schema schema = getTestSchema(); + + catalog.createNamespace(namespace, meta); + catalog.createTable(identifier, schema); + Map nameMata = catalog.loadNamespaceMetadata(namespace); + Assert.assertTrue(nameMata.get("owner").equals("apache")); + Assert.assertTrue(nameMata.get("group").equals("iceberg")); + + AssertHelpers.assertThrows( + "Should fail to drop namespace is not empty" + namespace, + NamespaceNotEmptyException.class, + "Namespace dbname_drop is not empty. One or more tables exist.", + () -> { + catalog.dropNamespace(namespace, false); + }); + Assert.assertNotNull(catalog.loadNamespaceMetadata(namespace)); + } + @Test public void testDropTableWithoutMetadataFile() { TableIdentifier identifier = TableIdentifier.of(DB_NAME, "tbl"); diff --git a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java index d36e3435e73b..07c156de6e4e 100644 --- a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java +++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java @@ -133,6 +133,27 @@ public void testCreatingAndDroppingNamespaceCascade() throws NessieNotFoundExcep Assertions.assertThat(catalog.namespaceExists(namespace)).isFalse(); } + @Test + public void testCreatingAndDroppingNamespaceCascadeFalse() throws NessieNotFoundException { + Namespace namespace = Namespace.of("test"); + catalog.createNamespace(namespace, ImmutableMap.of()); + Assertions.assertThat(catalog.namespaceExists(namespace)).isTrue(); + TableIdentifier identifier = TableIdentifier.of(namespace, "tbl"); + + Schema schema = + new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); + Assertions.assertThat(catalog.createTable(identifier, schema)).isNotNull(); + + ContentKey key = NessieUtil.toKey(identifier); + Assertions.assertThat( + api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) + .isPresent(); + + Assertions.assertThatThrownBy(() -> catalog.dropNamespace(namespace, false)) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Namespace 'test' is not empty. One or more tables exist."); + } + @Test public void testSettingProperties() { Map properties = ImmutableMap.of("prop", "val"); diff --git a/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java b/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java index 1bb05c7b898a..dd7208c15c03 100644 --- a/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java +++ b/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java @@ -214,6 +214,12 @@ public boolean dropNamespace(Namespace namespace) { "SnowflakeCatalog does not currently support dropNamespace"); } + @Override + public boolean dropNamespace(Namespace namespace, boolean cascade) { + throw new UnsupportedOperationException( + "SnowflakeCatalog does not currently support dropNamespace"); + } + @Override public boolean setProperties(Namespace namespace, Map properties) { throw new UnsupportedOperationException( From da335fd3496e7a5fc7285571b82fa903a04a4e18 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 08:25:13 -0700 Subject: [PATCH 08/27] spotless --- .../org/apache/iceberg/catalog/CatalogTests.java | 2 +- .../apache/iceberg/hadoop/TestHadoopCatalog.java | 16 ++++++++-------- .../org/apache/iceberg/jdbc/TestJdbcCatalog.java | 14 +++++++------- .../apache/iceberg/dell/ecs/TestEcsCatalog.java | 4 ++-- .../org/apache/iceberg/nessie/TestNamespace.java | 10 +++++----- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index 9c11fb01dbc3..da847dc612c7 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -395,7 +395,7 @@ public void testDropNamespaceCascadeFalse() { Table table = catalog.buildTable(ident, SCHEMA).create(); Assertions.assertThatThrownBy(() -> catalog.dropNamespace(NS, false)) - .isInstanceOf(NamespaceNotEmptyException.class); + .isInstanceOf(NamespaceNotEmptyException.class); Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); } diff --git a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java index 3d32505e9146..5ab70f7c502d 100644 --- a/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java +++ b/core/src/test/java/org/apache/iceberg/hadoop/TestHadoopCatalog.java @@ -496,7 +496,7 @@ public void testDropNamespaceCascadeFalse() throws IOException { HadoopCatalog catalog = new HadoopCatalog(); catalog.setConf(new Configuration()); catalog.initialize( - "hadoop", ImmutableMap.of(CatalogProperties.WAREHOUSE_LOCATION, warehouseLocation)); + "hadoop", ImmutableMap.of(CatalogProperties.WAREHOUSE_LOCATION, warehouseLocation)); Namespace namespace1 = Namespace.of("db"); Namespace namespace2 = Namespace.of("db", "ns1"); @@ -504,15 +504,15 @@ public void testDropNamespaceCascadeFalse() throws IOException { TableIdentifier tbl2 = TableIdentifier.of(namespace2, "tbl1"); Lists.newArrayList(tbl1, tbl2) - .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); AssertHelpers.assertThrows( - "Should fail to drop namespace is not empty " + namespace1, - NamespaceNotEmptyException.class, - "Namespace " + namespace1 + " is not empty.", - () -> { - catalog.dropNamespace(Namespace.of("db"), false); - }); + "Should fail to drop namespace is not empty " + namespace1, + NamespaceNotEmptyException.class, + "Namespace " + namespace1 + " is not empty.", + () -> { + catalog.dropNamespace(Namespace.of("db"), false); + }); } @Test diff --git a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java index 93ed93c8a4c8..08eb6b5a67c8 100644 --- a/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java +++ b/core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java @@ -643,8 +643,8 @@ public void testDropNamespaceCascade() { @Test public void testDropNamespaceCascadeFalse() { Assert.assertFalse( - "Should return false if drop does not modify state", - catalog.dropNamespace(Namespace.of("db", "ns1_not_exitss"))); + "Should return false if drop does not modify state", + catalog.dropNamespace(Namespace.of("db", "ns1_not_exitss"))); TableIdentifier tbl0 = TableIdentifier.of("db", "ns1", "ns2", "tbl2"); TableIdentifier tbl1 = TableIdentifier.of("db", "ns1", "ns2", "tbl1"); @@ -653,13 +653,13 @@ public void testDropNamespaceCascadeFalse() { TableIdentifier tbl4 = TableIdentifier.of("db", "tbl"); Lists.newArrayList(tbl0, tbl1, tbl2, tbl3, tbl4) - .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); + .forEach(t -> catalog.createTable(t, SCHEMA, PartitionSpec.unpartitioned())); AssertHelpers.assertThrows( - "Should fail to drop namespace has tables", - NamespaceNotEmptyException.class, - "is not empty. 1 tables exist.", - () -> catalog.dropNamespace(tbl4.namespace(), false)); + "Should fail to drop namespace has tables", + NamespaceNotEmptyException.class, + "is not empty. 1 tables exist.", + () -> catalog.dropNamespace(tbl4.namespace(), false)); } @Test diff --git a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java index 51cfd73c861f..48879407cc09 100644 --- a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java +++ b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java @@ -162,8 +162,8 @@ public void testDropNamespaceCascadeFalse() { ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); Assertions.assertThatThrownBy(() -> ecsCatalog.dropNamespace(Namespace.of("a"), false)) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Namespace a is not empty"); + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Namespace a is not empty"); } @Test diff --git a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java index 07c156de6e4e..a2cbd72170c5 100644 --- a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java +++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java @@ -141,17 +141,17 @@ public void testCreatingAndDroppingNamespaceCascadeFalse() throws NessieNotFound TableIdentifier identifier = TableIdentifier.of(namespace, "tbl"); Schema schema = - new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); + new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); Assertions.assertThat(catalog.createTable(identifier, schema)).isNotNull(); ContentKey key = NessieUtil.toKey(identifier); Assertions.assertThat( - api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) - .isPresent(); + api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) + .isPresent(); Assertions.assertThatThrownBy(() -> catalog.dropNamespace(namespace, false)) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Namespace 'test' is not empty. One or more tables exist."); + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Namespace 'test' is not empty. One or more tables exist."); } @Test From 2c31a4fd7605c191da1e85bc6c77a2751eb38280 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 08:50:20 -0700 Subject: [PATCH 09/27] cleanup rest adapter --- .../iceberg/rest/RESTSessionCatalog.java | 3 +- .../apache/iceberg/rest/ResourcePaths.java | 5 --- .../apache/iceberg/catalog/CatalogTests.java | 4 --- .../iceberg/rest/RESTCatalogAdapter.java | 33 +++---------------- 4 files changed, 6 insertions(+), 39 deletions(-) diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java index 7cc0fc653ff6..b8ba6810390e 100644 --- a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java +++ b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java @@ -452,7 +452,8 @@ private boolean dropNamespaceInternal(SessionContext context, Namespace ns, bool try { client.delete( - paths.namespace(ns, cascade), + paths.namespace(ns), + ImmutableMap.of("cascade", Boolean.toString(cascade)), null, headers(context), ErrorHandlers.namespaceErrorHandler()); diff --git a/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java b/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java index 343ee866dd06..6fa09f33d2ba 100644 --- a/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java +++ b/core/src/main/java/org/apache/iceberg/rest/ResourcePaths.java @@ -53,11 +53,6 @@ public String namespace(Namespace ns) { return SLASH.join("v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns)); } - public String namespace(Namespace ns, boolean cascade) { - return SLASH.join( - "v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns) + "?cascade=" + cascade); - } - public String namespaceProperties(Namespace ns) { return SLASH.join("v1", prefix, "namespaces", RESTUtil.encodeNamespace(ns), "properties"); } diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index da847dc612c7..211416ee66e3 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -373,8 +373,6 @@ public void testDropNamespace() { public void testDropNamespaceCascade() { C catalog = catalog(); - Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); - catalog.createNamespace(NS); TableIdentifier ident = TableIdentifier.of("ns", "table"); Table table = catalog.buildTable(ident, SCHEMA).create(); @@ -388,8 +386,6 @@ public void testDropNamespaceCascade() { public void testDropNamespaceCascadeFalse() { C catalog = catalog(); - Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); - catalog.createNamespace(NS); TableIdentifier ident = TableIdentifier.of("ns", "table"); Table table = catalog.buildTable(ident, SCHEMA).create(); diff --git a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java index 3a7486be1841..592a2902dd78 100644 --- a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java +++ b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java @@ -19,13 +19,9 @@ package org.apache.iceberg.rest; import java.io.IOException; -import java.net.URISyntaxException; import java.util.List; import java.util.Map; import java.util.function.Consumer; -import java.util.stream.Collectors; -import org.apache.http.NameValuePair; -import org.apache.http.client.utils.URIBuilder; import org.apache.iceberg.catalog.Catalog; import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.SupportsNamespaces; @@ -289,9 +285,9 @@ public T handleRequest( case DROP_NAMESPACE: if (asNamespaceCatalog != null) { Namespace namespace = namespaceFromPathVars(vars); - if (vars.containsKey("cascade")) { - CatalogHandlers.dropNamespace( - asNamespaceCatalog, namespace, Boolean.parseBoolean(vars.get("cascade"))); + boolean cascade = PropertyUtil.propertyAsBoolean(vars, "cascade", false); + if (cascade) { + CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace, true); } else { CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace); } @@ -417,28 +413,7 @@ public T delete( Class responseType, Map headers, Consumer errorHandler) { - URIBuilder uri = toUri(path); - return execute( - HTTPMethod.DELETE, - uri.getPath().substring(1), - toQueryParams(uri), - null, - responseType, - headers, - errorHandler); - } - - private Map toQueryParams(URIBuilder uri) { - return uri.getQueryParams().stream() - .collect(Collectors.toMap(NameValuePair::getName, NameValuePair::getValue)); - } - - private URIBuilder toUri(String path) { - try { - return new URIBuilder(path); - } catch (URISyntaxException e) { - throw new RESTException("invalid path: " + path); - } + return execute(HTTPMethod.DELETE, path, null, null, responseType, headers, errorHandler); } @Override From db87d5aeabfe2adc037c5edc69de52db9c176deb Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Sun, 2 Apr 2023 08:58:30 -0700 Subject: [PATCH 10/27] fix cyclomatic complexity --- .../iceberg/rest/RESTCatalogAdapter.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java index 592a2902dd78..ebd5995d6141 100644 --- a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java +++ b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java @@ -284,13 +284,7 @@ public T handleRequest( case DROP_NAMESPACE: if (asNamespaceCatalog != null) { - Namespace namespace = namespaceFromPathVars(vars); - boolean cascade = PropertyUtil.propertyAsBoolean(vars, "cascade", false); - if (cascade) { - CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace, true); - } else { - CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace); - } + dropNamespace(vars); return null; } break; @@ -369,6 +363,16 @@ public T handleRequest( return null; } + private void dropNamespace(Map vars) { + Namespace namespace = namespaceFromPathVars(vars); + boolean cascade = PropertyUtil.propertyAsBoolean(vars, "cascade", false); + if (cascade) { + CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace, true); + } else { + CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace); + } + } + public T execute( HTTPMethod method, String path, From aa63ee3d507d8232f2f76b9b2ee879688452467c Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Wed, 5 Apr 2023 16:14:07 -0700 Subject: [PATCH 11/27] add purge behaviour for cascade drop namespace --- docs/spark-ddl.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/docs/spark-ddl.md b/docs/spark-ddl.md index 2f979b5443d6..8a19513962e2 100644 --- a/docs/spark-ddl.md +++ b/docs/spark-ddl.md @@ -140,6 +140,47 @@ AS SELECT ... The schema and partition spec will be replaced if changed. To avoid modifying the table's schema and partitioning, use `INSERT OVERWRITE` instead of `REPLACE TABLE`. The new table properties in the `REPLACE TABLE` command will be merged with any existing table properties. The existing table properties will be updated if changed else they are preserved. +## `DROP NAMESPACE` + +### `DROP EMPTY NAMESPACE` + +To drop an _empty_ namespace, run: + +```sql +DROP database prod.db.sample +``` +If the namespace is not empty, this will fail with _NamespaceNotEmptyException_. + + +### `DROP NON_EMPTY NAMESPACE` + +To drop a namespace and all its contents including tables, run: + +```sql +DROP TABLE prod.db.sample CASCADE +``` +**WARNING**: +drop table purge behaviour with cascade depends on the type of catalog managing the namespace. +see below mapping of purge behaviour for different catalogs. +- If the database is managed by **HiveCatalog**, this will _purge_ all the tables in the database. + +#### `drop namespace table purge behaviour by catalog for CASCADE` + +When namespace is dropped with _CASCADE_, all tables are dropped and contents are purged based on the type of +catalog. + +| Catalog | Table Purge | Nested Namespaces | +|-----------|--------------|------------------------| +| Hive | - [ x ] | - [ ] | +| Nessie | - [ ] | - [ ] | +| DynamoDb | - [ ] | - [ ] | +| Glue | - [ ] | - [ ] | +| Hadoop | - [ ] | - [ x ] | +| JDBC | - [ ] | - [ x ] | +| ECS | - [ ] | - [ x ] | +| Snowflake | NotSupported | NotSupported | + + ## `DROP TABLE` The drop table behavior changed in 0.14. From 28b289b77e2746262b7f3499934e5855ae9e62f3 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Tue, 18 Apr 2023 15:44:51 -0700 Subject: [PATCH 12/27] fix tests --- .../java/org/apache/iceberg/hive/TestHiveCatalog.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index a3c39b03381a..ecc603e4ebb5 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -43,6 +43,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.Database; +import org.apache.hadoop.hive.metastore.api.InvalidOperationException; import org.apache.hadoop.hive.metastore.api.PrincipalType; import org.apache.hadoop.security.UserGroupInformation; import org.apache.iceberg.AssertHelpers; @@ -913,7 +914,7 @@ public void testDropNamespace() throws TException { @Test public void testDropNamespaceCascade() throws TException { - Namespace namespace = Namespace.of("dbname_drop"); + Namespace namespace = Namespace.of("dbname_drop_cascade_test"); TableIdentifier identifier = TableIdentifier.of(namespace, "table"); Schema schema = new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); @@ -940,7 +941,7 @@ public void testDropNamespaceCascade() throws TException { @Test public void testDropNamespaceCascadeFalse() throws TException { - Namespace namespace = Namespace.of("dbname_drop"); + Namespace namespace = Namespace.of("dbname_drop_cascade_test_false"); TableIdentifier identifier = TableIdentifier.of(namespace, "table"); Schema schema = getTestSchema(); @@ -952,8 +953,8 @@ public void testDropNamespaceCascadeFalse() throws TException { AssertHelpers.assertThrows( "Should fail to drop namespace is not empty" + namespace, - NamespaceNotEmptyException.class, - "Namespace dbname_drop is not empty. One or more tables exist.", + InvalidOperationException.class, + "is not empty. One or more tables exist.", () -> { catalog.dropNamespace(namespace, false); }); From c5dd8a5a967ae4d261e14c94b8105b73edcadc1c Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Tue, 18 Apr 2023 15:52:46 -0700 Subject: [PATCH 13/27] fix tests --- .../src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index ecc603e4ebb5..d359ff14d68e 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -43,7 +43,6 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.Database; -import org.apache.hadoop.hive.metastore.api.InvalidOperationException; import org.apache.hadoop.hive.metastore.api.PrincipalType; import org.apache.hadoop.security.UserGroupInformation; import org.apache.iceberg.AssertHelpers; @@ -953,7 +952,7 @@ public void testDropNamespaceCascadeFalse() throws TException { AssertHelpers.assertThrows( "Should fail to drop namespace is not empty" + namespace, - InvalidOperationException.class, + NamespaceNotEmptyException.class, "is not empty. One or more tables exist.", () -> { catalog.dropNamespace(namespace, false); From 5ad1e94f1ef0da1876a1bb14c680fa59281f0dca Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Tue, 18 Apr 2023 21:37:45 -0700 Subject: [PATCH 14/27] fix tests --- .../java/org/apache/iceberg/catalog/CatalogTests.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index 211416ee66e3..a9fe1d3da86f 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -47,8 +47,8 @@ import org.apache.iceberg.UpdatePartitionSpec; import org.apache.iceberg.UpdateSchema; import org.apache.iceberg.exceptions.AlreadyExistsException; +import org.apache.iceberg.exceptions.BadRequestException; import org.apache.iceberg.exceptions.CommitFailedException; -import org.apache.iceberg.exceptions.NamespaceNotEmptyException; import org.apache.iceberg.exceptions.NoSuchNamespaceException; import org.apache.iceberg.exceptions.NoSuchTableException; import org.apache.iceberg.expressions.Expressions; @@ -387,12 +387,13 @@ public void testDropNamespaceCascadeFalse() { C catalog = catalog(); catalog.createNamespace(NS); - TableIdentifier ident = TableIdentifier.of("ns", "table"); + TableIdentifier ident = TableIdentifier.of(NS, "table"); Table table = catalog.buildTable(ident, SCHEMA).create(); Assertions.assertThatThrownBy(() -> catalog.dropNamespace(NS, false)) - .isInstanceOf(NamespaceNotEmptyException.class); - Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); + .isInstanceOf(BadRequestException.class) + .hasMessageContaining("is not empty. 1 tables exist"); + Assert.assertTrue("Namespace should exist", catalog.namespaceExists(NS)); } @Test From d4d9dc26f143170b04ae76fd72dc35c6869a8b76 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Tue, 18 Apr 2023 22:19:06 -0700 Subject: [PATCH 15/27] fix tests --- .../test/java/org/apache/iceberg/catalog/CatalogTests.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index a9fe1d3da86f..e233202e3353 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -47,7 +47,6 @@ import org.apache.iceberg.UpdatePartitionSpec; import org.apache.iceberg.UpdateSchema; import org.apache.iceberg.exceptions.AlreadyExistsException; -import org.apache.iceberg.exceptions.BadRequestException; import org.apache.iceberg.exceptions.CommitFailedException; import org.apache.iceberg.exceptions.NoSuchNamespaceException; import org.apache.iceberg.exceptions.NoSuchTableException; @@ -374,7 +373,7 @@ public void testDropNamespaceCascade() { C catalog = catalog(); catalog.createNamespace(NS); - TableIdentifier ident = TableIdentifier.of("ns", "table"); + TableIdentifier ident = TableIdentifier.of(NS, "table"); Table table = catalog.buildTable(ident, SCHEMA).create(); Assert.assertTrue( @@ -391,8 +390,7 @@ public void testDropNamespaceCascadeFalse() { Table table = catalog.buildTable(ident, SCHEMA).create(); Assertions.assertThatThrownBy(() -> catalog.dropNamespace(NS, false)) - .isInstanceOf(BadRequestException.class) - .hasMessageContaining("is not empty. 1 tables exist"); + .hasMessageContaining("not empty"); Assert.assertTrue("Namespace should exist", catalog.namespaceExists(NS)); } From c75ea5c356fe3a6c3a016916c8e78451afd6e4d7 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Fri, 5 May 2023 11:00:24 -0700 Subject: [PATCH 16/27] Revert: cascade support for other catalog implementations --- .../aws/dynamodb/TestDynamoDbCatalog.java | 39 ------- .../iceberg/aws/dynamodb/DynamoDbCatalog.java | 3 +- .../apache/iceberg/aws/glue/GlueCatalog.java | 3 +- .../iceberg/aws/glue/TestGlueCatalog.java | 102 ++++-------------- .../apache/iceberg/dell/ecs/EcsCatalog.java | 5 +- .../iceberg/dell/ecs/TestEcsCatalog.java | 61 ++++------- .../apache/iceberg/nessie/NessieCatalog.java | 3 +- .../iceberg/nessie/TestNessieCatalog.java | 10 -- 8 files changed, 49 insertions(+), 177 deletions(-) diff --git a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java index 8838be9a40a6..f6fbfa55cfc2 100644 --- a/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java +++ b/aws/src/integration/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java @@ -37,7 +37,6 @@ import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.exceptions.AlreadyExistsException; -import org.apache.iceberg.exceptions.NamespaceNotEmptyException; import org.apache.iceberg.exceptions.NoSuchTableException; import org.apache.iceberg.exceptions.ValidationException; import org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap; @@ -360,44 +359,6 @@ public void testDropNamespace() { Assert.assertFalse("namespace must not exist", response.hasItem()); } - @Test - public void testDropNamespaceCascade() { - Namespace namespace = Namespace.of(genRandomName()); - catalog.createNamespace(namespace); - TableIdentifier tableIdentifier = TableIdentifier.of(namespace, genRandomName()); - catalog.createTable(tableIdentifier, SCHEMA); - catalog.dropNamespace(namespace, true); - GetItemResponse response = - dynamo.getItem( - GetItemRequest.builder() - .tableName(catalogTableName) - .key(DynamoDbCatalog.namespacePrimaryKey(namespace)) - .build()); - Assert.assertFalse("namespace must not exist", response.hasItem()); - } - - @Test - public void testDropNamespaceFalse() { - Namespace namespace = Namespace.of(genRandomName()); - catalog.createNamespace(namespace); - TableIdentifier tableIdentifier = TableIdentifier.of(namespace, genRandomName()); - catalog.createTable(tableIdentifier, SCHEMA); - AssertHelpers.assertThrows( - "Should fail to drop namespace is not empty" + namespace, - NamespaceNotEmptyException.class, - "Namespace dbname_drop is not empty. One or more tables exist.", - () -> { - catalog.dropNamespace(namespace, false); - }); - GetItemResponse response = - dynamo.getItem( - GetItemRequest.builder() - .tableName(catalogTableName) - .key(DynamoDbCatalog.namespacePrimaryKey(namespace)) - .build()); - Assert.assertTrue(response.hasItem()); - } - @Test public void testRegisterTable() { Namespace namespace = Namespace.of(genRandomName()); diff --git a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java index d9f6e7bf7461..f4ac3d27b370 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java @@ -288,7 +288,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - listTables(namespace).forEach(this::dropTable); + throw new UnsupportedOperationException( + "DynamoDbCatalog does not currently support dropNamespace with cascade"); } return dropNamespace(namespace); } diff --git a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java index d08ecdcef475..0635c1e8e22e 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java @@ -564,7 +564,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - listTables(namespace).forEach(this::dropTable); + throw new UnsupportedOperationException( + "GlueCatalog does not currently support dropNamespace with cascade"); } return dropNamespace(namespace); } diff --git a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java index aaeac5bcf790..a6877637a049 100644 --- a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java +++ b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; +import org.apache.iceberg.AssertHelpers; import org.apache.iceberg.BaseMetastoreTableOperations; import org.apache.iceberg.Schema; import org.apache.iceberg.aws.AwsProperties; @@ -403,12 +404,11 @@ public void testCreateNamespaceBadName() { Lists.newArrayList(Namespace.of("db-1"), Namespace.of("db", "db2")); for (Namespace namespace : invalidNamespaces) { - Assertions.assertThatThrownBy(() -> glueCatalog.createNamespace(namespace)) - .isInstanceOf(ValidationException.class) - .hasMessageStartingWith("Cannot convert namespace") - .hasMessageEndingWith( - "to Glue database name, " - + "because it must be 1-252 chars of lowercase letters, numbers, underscore"); + AssertHelpers.assertThrows( + "should not create namespace with invalid or nested names", + ValidationException.class, + "Cannot convert namespace", + () -> glueCatalog.createNamespace(namespace)); } } @@ -466,12 +466,11 @@ public void testListNamespacesWithNameShouldReturnItself() { @Test public void testListNamespacesBadName() { - - Assertions.assertThatThrownBy(() -> glueCatalog.listNamespaces(Namespace.of("db-1"))) - .isInstanceOf(ValidationException.class) - .hasMessage( - "Cannot convert namespace db-1 to Glue database name, " - + "because it must be 1-252 chars of lowercase letters, numbers, underscore"); + AssertHelpers.assertThrows( + "table name invalid", + ValidationException.class, + "Cannot convert namespace", + () -> glueCatalog.listNamespaces(Namespace.of("db-1"))); } @Test @@ -525,10 +524,11 @@ public void testDropNamespaceThatContainsOnlyIcebergTable() { Mockito.doReturn(DeleteDatabaseResponse.builder().build()) .when(glue) .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); - - Assertions.assertThatThrownBy(() -> glueCatalog.dropNamespace(Namespace.of("db1"))) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Cannot drop namespace db1 because it still contains Iceberg tables"); + AssertHelpers.assertThrows( + "namespace should not be dropped when still has Iceberg table", + NamespaceNotEmptyException.class, + "still contains Iceberg tables", + () -> glueCatalog.dropNamespace(Namespace.of("db1"))); } @Test @@ -546,71 +546,11 @@ public void testDropNamespaceThatContainsNonIcebergTable() { Mockito.doReturn(DeleteDatabaseResponse.builder().build()) .when(glue) .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); - - Assertions.assertThatThrownBy(() -> glueCatalog.dropNamespace(Namespace.of("db1"))) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Cannot drop namespace db1 because it still contains non-Iceberg tables"); - } - - @Test - public void testDropNamespaceCascade() { - Table table = - Table.builder() - .databaseName("db1") - .name("t1") - .parameters( - ImmutableMap.of( - BaseMetastoreTableOperations.TABLE_TYPE_PROP, - BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE)) - .build(); - GetTablesResponse getTablesResponse = GetTablesResponse.builder().tableList(table).build(); - GetTableResponse getTableResponse = GetTableResponse.builder().table(table).build(); - Mockito.doReturn(getTablesResponse) - .doReturn(GetTablesResponse.builder().build()) - .when(glue) - .getTables(Mockito.any(GetTablesRequest.class)); - Mockito.doReturn(getTableResponse) - .doReturn(GetTableResponse.builder().build()) - .when(glue) - .getTable(Mockito.any(GetTableRequest.class)); - Mockito.doReturn( - GetDatabaseResponse.builder().database(Database.builder().name("db1").build()).build()) - .when(glue) - .getDatabase(Mockito.any(GetDatabaseRequest.class)); - Mockito.doReturn(DeleteDatabaseResponse.builder().build()) - .when(glue) - .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); - Assert.assertTrue(glueCatalog.dropNamespace(Namespace.of("db1"), true)); - Mockito.verify(glue).deleteTable(Mockito.any(DeleteTableRequest.class)); - } - - @Test - public void testDropNamespaceCascadeFalse() { - Mockito.doReturn( - GetTablesResponse.builder() - .tableList( - Table.builder() - .databaseName("db1") - .name("t1") - .parameters( - ImmutableMap.of( - BaseMetastoreTableOperations.TABLE_TYPE_PROP, - BaseMetastoreTableOperations.ICEBERG_TABLE_TYPE_VALUE)) - .build()) - .build()) - .when(glue) - .getTables(Mockito.any(GetTablesRequest.class)); - Mockito.doReturn( - GetDatabaseResponse.builder().database(Database.builder().name("db1").build()).build()) - .when(glue) - .getDatabase(Mockito.any(GetDatabaseRequest.class)); - Mockito.doReturn(DeleteDatabaseResponse.builder().build()) - .when(glue) - .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); - - Assertions.assertThatThrownBy(() -> glueCatalog.dropNamespace(Namespace.of("db1"), false)) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Cannot drop namespace db1 because it still contains Iceberg tables"); + AssertHelpers.assertThrows( + "namespace should not be dropped when still has non-Iceberg table", + NamespaceNotEmptyException.class, + "still contains non-Iceberg tables", + () -> glueCatalog.dropNamespace(Namespace.of("db1"))); } @Test diff --git a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java index 5568f2b2e9d4..30f49782341b 100644 --- a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java +++ b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java @@ -343,9 +343,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - // recursively delete all nested namespaces - listNamespaces(namespace).forEach(n -> dropNamespace(n, true)); - listTables(namespace).forEach(this::dropTable); + throw new UnsupportedOperationException( + "EcsCatalog does not currently support dropNamespace with cascade"); } return dropNamespace(namespace); } diff --git a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java index 48879407cc09..1b26d2317588 100644 --- a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java +++ b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.Map; +import org.apache.iceberg.AssertHelpers; import org.apache.iceberg.CatalogProperties; import org.apache.iceberg.HasTableOperations; import org.apache.iceberg.Schema; @@ -127,13 +128,15 @@ public void testDropNamespace() { ecsCatalog.createNamespace(Namespace.of("a", "b1")); ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); - Assertions.assertThatThrownBy(() -> ecsCatalog.dropNamespace(Namespace.of("unknown"))) - .isInstanceOf(NoSuchNamespaceException.class) - .hasMessage("Namespace unknown does not exist"); + AssertHelpers.assertThrows( + "Drop an unknown namespace should throw exception", + NoSuchNamespaceException.class, + () -> ecsCatalog.dropNamespace(Namespace.of("unknown"))); - Assertions.assertThatThrownBy(() -> ecsCatalog.dropNamespace(Namespace.of("a"))) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Namespace a is not empty"); + AssertHelpers.assertThrows( + "Drop not empty namespace should throw exception", + NamespaceNotEmptyException.class, + () -> ecsCatalog.dropNamespace(Namespace.of("a"))); Assert.assertTrue("Drop namespace [a, b1]", ecsCatalog.dropNamespace(Namespace.of("a", "b1"))); @@ -144,28 +147,6 @@ public void testDropNamespace() { ecsCatalog.listNamespaces(Namespace.of("a")).isEmpty()); } - @Test - public void testDropNamespaceCascade() { - ecsCatalog.createNamespace(Namespace.of("a")); - ecsCatalog.createNamespace(Namespace.of("a", "b1")); - ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); - - Assert.assertTrue("Drop namespace [a]", ecsCatalog.dropNamespace(Namespace.of("a"), true)); - - Assert.assertFalse("The [a] is absent", ecsCatalog.namespaceExists(Namespace.of("a"))); - } - - @Test - public void testDropNamespaceCascadeFalse() { - ecsCatalog.createNamespace(Namespace.of("a")); - ecsCatalog.createNamespace(Namespace.of("a", "b1")); - ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); - - Assertions.assertThatThrownBy(() -> ecsCatalog.dropNamespace(Namespace.of("a"), false)) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Namespace a is not empty"); - } - @Test public void testDropTable() { ecsCatalog.createTable(TableIdentifier.of("a"), SCHEMA); @@ -182,19 +163,17 @@ public void testRenameTable() { ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); ecsCatalog.createNamespace(Namespace.of("b")); - Assertions.assertThatThrownBy( - () -> - ecsCatalog.renameTable( - TableIdentifier.of("unknown"), TableIdentifier.of("b", "t2"))) - .isInstanceOf(NoSuchTableException.class) - .hasMessage("Cannot rename table because table unknown does not exist"); - - Assertions.assertThatThrownBy( - () -> - ecsCatalog.renameTable( - TableIdentifier.of("a", "t1"), TableIdentifier.of("unknown", "t2"))) - .isInstanceOf(NoSuchNamespaceException.class) - .hasMessage("Cannot rename a.t1 to unknown.t2 because namespace unknown does not exist"); + AssertHelpers.assertThrows( + "Rename an unknown table should throw exception", + NoSuchTableException.class, + () -> ecsCatalog.renameTable(TableIdentifier.of("unknown"), TableIdentifier.of("b", "t2"))); + + AssertHelpers.assertThrows( + "Rename to an unknown namespace should throw exception", + NoSuchNamespaceException.class, + () -> + ecsCatalog.renameTable( + TableIdentifier.of("a", "t1"), TableIdentifier.of("unknown", "t2"))); ecsCatalog.renameTable(TableIdentifier.of("a", "t1"), TableIdentifier.of("b", "t2")); diff --git a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java index 7186dbbb2ee5..c86d83985a22 100644 --- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java +++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java @@ -290,7 +290,8 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept public boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException { if (cascade) { - listTables(namespace).forEach(this::dropTable); + throw new UnsupportedOperationException( + "NessieCatalog does not currently support dropNamespace with cascade"); } return dropNamespace(namespace); } diff --git a/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java b/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java index f8ed3987c1ea..080ad860bc87 100644 --- a/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java +++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java @@ -134,16 +134,6 @@ protected NessieCatalog catalog() { return catalog; } - @Override - protected boolean requiresNamespaceCreate() { - return true; - } - - @Override - protected boolean supportsNestedNamespaces() { - return true; - } - @Override protected boolean supportsNamespaceProperties() { return true; From 4c05fcb96f9b1d4af1a38c5982df945c54824bc3 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Fri, 5 May 2023 11:12:54 -0700 Subject: [PATCH 17/27] resolve conflicts --- .palantir/revapi.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.palantir/revapi.yml b/.palantir/revapi.yml index 54f194e3d28b..003ee1f4e95c 100644 --- a/.palantir/revapi.yml +++ b/.palantir/revapi.yml @@ -410,14 +410,6 @@ acceptedBreaks: old: "field org.apache.iceberg.actions.RewriteDataFiles.MAX_CONCURRENT_FILE_GROUP_REWRITES_DEFAULT" new: "field org.apache.iceberg.actions.RewriteDataFiles.MAX_CONCURRENT_FILE_GROUP_REWRITES_DEFAULT" justification: "Update default to align with recommendation and allow more parallelism" - - code: "java.method.addedToInterface" - new: "method boolean org.apache.iceberg.catalog.SessionCatalog::dropNamespace(org.apache.iceberg.catalog.SessionCatalog.SessionContext,\ - \ org.apache.iceberg.catalog.Namespace, boolean)" - justification: "extending api to add new method, not removing any public api" - - code: "java.method.addedToInterface" - new: "method boolean org.apache.iceberg.catalog.SupportsNamespaces::dropNamespace(org.apache.iceberg.catalog.Namespace,\ - \ boolean) throws org.apache.iceberg.exceptions.NamespaceNotEmptyException" - justification: "extending api to add new method, not removing any public api" - code: "java.method.addedToInterface" new: "method java.lang.String org.apache.iceberg.view.ViewVersion::operation()" justification: "Add operation API to view version" @@ -723,7 +715,7 @@ acceptedBreaks: - code: "java.method.addedToInterface" new: "method java.lang.String org.apache.iceberg.expressions.Reference::name()" justification: "All subclasses implement name" - - code: "java.method.addedToInterface" + - code: "java.methodropNamespaced.addedToInterface" new: "method java.util.List org.apache.iceberg.Table::statisticsFiles()" justification: "new API method" - code: "java.method.removed" From 59bb5e34e21445630778e4287e54091553ef354a Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Fri, 5 May 2023 13:55:19 -0700 Subject: [PATCH 18/27] revapi --- .palantir/revapi.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.palantir/revapi.yml b/.palantir/revapi.yml index 003ee1f4e95c..4666ec9d892e 100644 --- a/.palantir/revapi.yml +++ b/.palantir/revapi.yml @@ -406,6 +406,14 @@ acceptedBreaks: justification: "Removing deprecations for 1.2.0" "1.2.0": org.apache.iceberg:iceberg-api: + - code: "java.method.addedToInterface" + new: "method boolean org.apache.iceberg.catalog.SessionCatalog::dropNamespace(org.apache.iceberg.catalog.SessionCatalog.SessionContext,\ + \ org.apache.iceberg.catalog.Namespace, boolean)" + justification: "extending api to add new method, not removing any public api" + - code: "java.method.addedToInterface" + new: "method boolean org.apache.iceberg.catalog.SupportsNamespaces::dropNamespace(org.apache.iceberg.catalog.Namespace,\ + \ boolean) throws org.apache.iceberg.exceptions.NamespaceNotEmptyException" + justification: "extending api to add new method, not removing any public api" - code: "java.field.constantValueChanged" old: "field org.apache.iceberg.actions.RewriteDataFiles.MAX_CONCURRENT_FILE_GROUP_REWRITES_DEFAULT" new: "field org.apache.iceberg.actions.RewriteDataFiles.MAX_CONCURRENT_FILE_GROUP_REWRITES_DEFAULT" From e485616327277361a8bb4675e72d620af30f7ec5 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Fri, 5 May 2023 13:58:55 -0700 Subject: [PATCH 19/27] update docs --- .../iceberg/aws/glue/TestGlueCatalog.java | 41 +++++++++---------- .../iceberg/dell/ecs/TestEcsCatalog.java | 39 +++++++++--------- docs/spark-ddl.md | 6 +-- 3 files changed, 42 insertions(+), 44 deletions(-) diff --git a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java index a6877637a049..a915a97d0ece 100644 --- a/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java +++ b/aws/src/test/java/org/apache/iceberg/aws/glue/TestGlueCatalog.java @@ -22,7 +22,6 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.iceberg.AssertHelpers; import org.apache.iceberg.BaseMetastoreTableOperations; import org.apache.iceberg.Schema; import org.apache.iceberg.aws.AwsProperties; @@ -404,11 +403,12 @@ public void testCreateNamespaceBadName() { Lists.newArrayList(Namespace.of("db-1"), Namespace.of("db", "db2")); for (Namespace namespace : invalidNamespaces) { - AssertHelpers.assertThrows( - "should not create namespace with invalid or nested names", - ValidationException.class, - "Cannot convert namespace", - () -> glueCatalog.createNamespace(namespace)); + Assertions.assertThatThrownBy(() -> glueCatalog.createNamespace(namespace)) + .isInstanceOf(ValidationException.class) + .hasMessageStartingWith("Cannot convert namespace") + .hasMessageEndingWith( + "to Glue database name, " + + "because it must be 1-252 chars of lowercase letters, numbers, underscore"); } } @@ -466,11 +466,12 @@ public void testListNamespacesWithNameShouldReturnItself() { @Test public void testListNamespacesBadName() { - AssertHelpers.assertThrows( - "table name invalid", - ValidationException.class, - "Cannot convert namespace", - () -> glueCatalog.listNamespaces(Namespace.of("db-1"))); + + Assertions.assertThatThrownBy(() -> glueCatalog.listNamespaces(Namespace.of("db-1"))) + .isInstanceOf(ValidationException.class) + .hasMessage( + "Cannot convert namespace db-1 to Glue database name, " + + "because it must be 1-252 chars of lowercase letters, numbers, underscore"); } @Test @@ -524,11 +525,10 @@ public void testDropNamespaceThatContainsOnlyIcebergTable() { Mockito.doReturn(DeleteDatabaseResponse.builder().build()) .when(glue) .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); - AssertHelpers.assertThrows( - "namespace should not be dropped when still has Iceberg table", - NamespaceNotEmptyException.class, - "still contains Iceberg tables", - () -> glueCatalog.dropNamespace(Namespace.of("db1"))); + + Assertions.assertThatThrownBy(() -> glueCatalog.dropNamespace(Namespace.of("db1"))) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Cannot drop namespace db1 because it still contains Iceberg tables"); } @Test @@ -546,11 +546,10 @@ public void testDropNamespaceThatContainsNonIcebergTable() { Mockito.doReturn(DeleteDatabaseResponse.builder().build()) .when(glue) .deleteDatabase(Mockito.any(DeleteDatabaseRequest.class)); - AssertHelpers.assertThrows( - "namespace should not be dropped when still has non-Iceberg table", - NamespaceNotEmptyException.class, - "still contains non-Iceberg tables", - () -> glueCatalog.dropNamespace(Namespace.of("db1"))); + + Assertions.assertThatThrownBy(() -> glueCatalog.dropNamespace(Namespace.of("db1"))) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Cannot drop namespace db1 because it still contains non-Iceberg tables"); } @Test diff --git a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java index 1b26d2317588..c61bd1db172d 100644 --- a/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java +++ b/dell/src/test/java/org/apache/iceberg/dell/ecs/TestEcsCatalog.java @@ -22,7 +22,6 @@ import java.io.IOException; import java.util.Map; -import org.apache.iceberg.AssertHelpers; import org.apache.iceberg.CatalogProperties; import org.apache.iceberg.HasTableOperations; import org.apache.iceberg.Schema; @@ -128,15 +127,13 @@ public void testDropNamespace() { ecsCatalog.createNamespace(Namespace.of("a", "b1")); ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); - AssertHelpers.assertThrows( - "Drop an unknown namespace should throw exception", - NoSuchNamespaceException.class, - () -> ecsCatalog.dropNamespace(Namespace.of("unknown"))); + Assertions.assertThatThrownBy(() -> ecsCatalog.dropNamespace(Namespace.of("unknown"))) + .isInstanceOf(NoSuchNamespaceException.class) + .hasMessage("Namespace unknown does not exist"); - AssertHelpers.assertThrows( - "Drop not empty namespace should throw exception", - NamespaceNotEmptyException.class, - () -> ecsCatalog.dropNamespace(Namespace.of("a"))); + Assertions.assertThatThrownBy(() -> ecsCatalog.dropNamespace(Namespace.of("a"))) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Namespace a is not empty"); Assert.assertTrue("Drop namespace [a, b1]", ecsCatalog.dropNamespace(Namespace.of("a", "b1"))); @@ -163,17 +160,19 @@ public void testRenameTable() { ecsCatalog.createTable(TableIdentifier.of("a", "t1"), SCHEMA); ecsCatalog.createNamespace(Namespace.of("b")); - AssertHelpers.assertThrows( - "Rename an unknown table should throw exception", - NoSuchTableException.class, - () -> ecsCatalog.renameTable(TableIdentifier.of("unknown"), TableIdentifier.of("b", "t2"))); - - AssertHelpers.assertThrows( - "Rename to an unknown namespace should throw exception", - NoSuchNamespaceException.class, - () -> - ecsCatalog.renameTable( - TableIdentifier.of("a", "t1"), TableIdentifier.of("unknown", "t2"))); + Assertions.assertThatThrownBy( + () -> + ecsCatalog.renameTable( + TableIdentifier.of("unknown"), TableIdentifier.of("b", "t2"))) + .isInstanceOf(NoSuchTableException.class) + .hasMessage("Cannot rename table because table unknown does not exist"); + + Assertions.assertThatThrownBy( + () -> + ecsCatalog.renameTable( + TableIdentifier.of("a", "t1"), TableIdentifier.of("unknown", "t2"))) + .isInstanceOf(NoSuchNamespaceException.class) + .hasMessage("Cannot rename a.t1 to unknown.t2 because namespace unknown does not exist"); ecsCatalog.renameTable(TableIdentifier.of("a", "t1"), TableIdentifier.of("b", "t2")); diff --git a/docs/spark-ddl.md b/docs/spark-ddl.md index 8a19513962e2..c08d5be551f6 100644 --- a/docs/spark-ddl.md +++ b/docs/spark-ddl.md @@ -172,12 +172,12 @@ catalog. | Catalog | Table Purge | Nested Namespaces | |-----------|--------------|------------------------| | Hive | - [ x ] | - [ ] | -| Nessie | - [ ] | - [ ] | -| DynamoDb | - [ ] | - [ ] | -| Glue | - [ ] | - [ ] | | Hadoop | - [ ] | - [ x ] | | JDBC | - [ ] | - [ x ] | | ECS | - [ ] | - [ x ] | +| Nessie | NotSupported | NotSupported | +| DynamoDb | NotSupported | NotSupported | +| Glue | NotSupported | NotSupported | | Snowflake | NotSupported | NotSupported | From 4a04148dbb1723d99f19269f2e6e2c191d07b338 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Fri, 5 May 2023 14:04:04 -0700 Subject: [PATCH 20/27] use cataloghandlers --- .../java/org/apache/iceberg/rest/RESTCatalogAdapter.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java index ebd5995d6141..d2fe93e251d2 100644 --- a/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java +++ b/core/src/test/java/org/apache/iceberg/rest/RESTCatalogAdapter.java @@ -366,11 +366,7 @@ public T handleRequest( private void dropNamespace(Map vars) { Namespace namespace = namespaceFromPathVars(vars); boolean cascade = PropertyUtil.propertyAsBoolean(vars, "cascade", false); - if (cascade) { - CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace, true); - } else { - CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace); - } + CatalogHandlers.dropNamespace(asNamespaceCatalog, namespace, cascade); } public T execute( From 95d6676aa260c3190a25cbf2e336727690a1a58d Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Mon, 8 May 2023 17:42:59 -0700 Subject: [PATCH 21/27] retrigger checks From f5219db67b9d9199f4c9382130c347fb590935a2 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Mon, 8 May 2023 18:08:37 -0700 Subject: [PATCH 22/27] fix assertj error --- .../apache/iceberg/hive/TestHiveCatalog.java | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index d359ff14d68e..f221fa8641cc 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -889,26 +889,18 @@ public void testDropNamespace() throws TException { Assert.assertTrue(nameMata.get("owner").equals("apache")); Assert.assertTrue(nameMata.get("group").equals("iceberg")); - AssertHelpers.assertThrows( - "Should fail to drop namespace is not empty" + namespace, - NamespaceNotEmptyException.class, - "Namespace dbname_drop is not empty. One or more tables exist.", - () -> { - catalog.dropNamespace(namespace); - }); + org.assertj.core.api.Assertions.assertThatThrownBy(() -> catalog.dropNamespace(namespace)) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessageContaining("Namespace dbname_drop is not empty. One or more tables exist."); Assert.assertTrue(catalog.dropTable(identifier, true)); Assert.assertTrue( "Should fail to drop namespace if it is not empty", catalog.dropNamespace(namespace)); Assert.assertFalse( "Should fail to drop when namespace doesn't exist", catalog.dropNamespace(Namespace.of("db.ns1"))); - AssertHelpers.assertThrows( - "Should fail to drop namespace exist" + namespace, - NoSuchNamespaceException.class, - "Namespace does not exist: ", - () -> { - catalog.loadNamespaceMetadata(namespace); - }); + org.assertj.core.api.Assertions.assertThatThrownBy(() -> catalog.loadNamespaceMetadata(namespace)) + .isInstanceOf(NoSuchNamespaceException.class) + .hasMessageContaining("Namespace does not exist"); } @Test @@ -929,13 +921,9 @@ public void testDropNamespaceCascade() throws TException { Assert.assertFalse( "Should fail to drop when namespace doesn't exist", catalog.dropNamespace(Namespace.of("db.ns1"))); - AssertHelpers.assertThrows( - "Should fail to load namespace" + namespace, - NoSuchNamespaceException.class, - "Namespace does not exist: ", - () -> { - catalog.loadNamespaceMetadata(namespace); - }); + org.assertj.core.api.Assertions.assertThatThrownBy(() -> catalog.loadNamespaceMetadata(namespace)) + .isInstanceOf(NoSuchNamespaceException.class) + .hasMessageContaining("Namespace does not exist"); } @Test From ac283276ab993a8732bbaa4e99e5452f6e881761 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Mon, 8 May 2023 18:18:41 -0700 Subject: [PATCH 23/27] fix assertj error --- .../apache/iceberg/hive/TestHiveCatalog.java | 98 +++++++++---------- 1 file changed, 47 insertions(+), 51 deletions(-) diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index f221fa8641cc..5bcf00d24e05 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -889,63 +889,18 @@ public void testDropNamespace() throws TException { Assert.assertTrue(nameMata.get("owner").equals("apache")); Assert.assertTrue(nameMata.get("group").equals("iceberg")); - org.assertj.core.api.Assertions.assertThatThrownBy(() -> catalog.dropNamespace(namespace)) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessageContaining("Namespace dbname_drop is not empty. One or more tables exist."); + assertThatThrownBy(() -> catalog.dropNamespace(namespace)) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessage("Namespace dbname_drop is not empty. One or more tables exist."); Assert.assertTrue(catalog.dropTable(identifier, true)); Assert.assertTrue( "Should fail to drop namespace if it is not empty", catalog.dropNamespace(namespace)); Assert.assertFalse( "Should fail to drop when namespace doesn't exist", catalog.dropNamespace(Namespace.of("db.ns1"))); - org.assertj.core.api.Assertions.assertThatThrownBy(() -> catalog.loadNamespaceMetadata(namespace)) - .isInstanceOf(NoSuchNamespaceException.class) - .hasMessageContaining("Namespace does not exist"); - } - - @Test - public void testDropNamespaceCascade() throws TException { - Namespace namespace = Namespace.of("dbname_drop_cascade_test"); - TableIdentifier identifier = TableIdentifier.of(namespace, "table"); - Schema schema = - new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); - - catalog.createNamespace(namespace, meta); - catalog.createTable(identifier, schema); - Map nameMata = catalog.loadNamespaceMetadata(namespace); - Assert.assertTrue(nameMata.get("owner").equals("apache")); - Assert.assertTrue(nameMata.get("group").equals("iceberg")); - - Assert.assertTrue(catalog.dropNamespace(namespace, true)); - Assert.assertFalse(catalog.tableExists(identifier)); - Assert.assertFalse( - "Should fail to drop when namespace doesn't exist", - catalog.dropNamespace(Namespace.of("db.ns1"))); - org.assertj.core.api.Assertions.assertThatThrownBy(() -> catalog.loadNamespaceMetadata(namespace)) - .isInstanceOf(NoSuchNamespaceException.class) - .hasMessageContaining("Namespace does not exist"); - } - - @Test - public void testDropNamespaceCascadeFalse() throws TException { - Namespace namespace = Namespace.of("dbname_drop_cascade_test_false"); - TableIdentifier identifier = TableIdentifier.of(namespace, "table"); - Schema schema = getTestSchema(); - - catalog.createNamespace(namespace, meta); - catalog.createTable(identifier, schema); - Map nameMata = catalog.loadNamespaceMetadata(namespace); - Assert.assertTrue(nameMata.get("owner").equals("apache")); - Assert.assertTrue(nameMata.get("group").equals("iceberg")); - - AssertHelpers.assertThrows( - "Should fail to drop namespace is not empty" + namespace, - NamespaceNotEmptyException.class, - "is not empty. One or more tables exist.", - () -> { - catalog.dropNamespace(namespace, false); - }); - Assert.assertNotNull(catalog.loadNamespaceMetadata(namespace)); + assertThatThrownBy(() -> catalog.loadNamespaceMetadata(namespace)) + .isInstanceOf(NoSuchNamespaceException.class) + .hasMessage("Namespace does not exist: dbname_drop"); } @Test @@ -1274,4 +1229,45 @@ public void testRegisterExistingTable() { .hasMessage("Table already exists: hivedb.t1"); assertThat(catalog.dropTable(identifier, true)).isTrue(); } + + @Test + public void testDropNamespaceCascade() throws TException { + Namespace namespace = Namespace.of("dbname_drop_cascade_test"); + TableIdentifier identifier = TableIdentifier.of(namespace, "table"); + Schema schema = + new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); + + catalog.createNamespace(namespace, meta); + catalog.createTable(identifier, schema); + Map nameMata = catalog.loadNamespaceMetadata(namespace); + Assert.assertTrue(nameMata.get("owner").equals("apache")); + Assert.assertTrue(nameMata.get("group").equals("iceberg")); + + Assert.assertTrue(catalog.dropNamespace(namespace, true)); + Assert.assertFalse(catalog.tableExists(identifier)); + Assert.assertFalse( + "Should fail to drop when namespace doesn't exist", + catalog.dropNamespace(Namespace.of("db.ns1"))); + assertThatThrownBy(() -> catalog.loadNamespaceMetadata(namespace)) + .isInstanceOf(NoSuchNamespaceException.class) + .hasMessageContaining("Namespace does not exist"); + } + + @Test + public void testDropNamespaceCascadeFalse() throws TException { + Namespace namespace = Namespace.of("dbname_drop_cascade_test_false"); + TableIdentifier identifier = TableIdentifier.of(namespace, "table"); + Schema schema = getTestSchema(); + + catalog.createNamespace(namespace, meta); + catalog.createTable(identifier, schema); + Map nameMata = catalog.loadNamespaceMetadata(namespace); + Assert.assertTrue(nameMata.get("owner").equals("apache")); + Assert.assertTrue(nameMata.get("group").equals("iceberg")); + + assertThatThrownBy(() -> catalog.dropNamespace(namespace, false)) + .isInstanceOf(NamespaceNotEmptyException.class) + .hasMessageContaining("is not empty. One or more tables exist."); + Assert.assertNotNull(catalog.loadNamespaceMetadata(namespace)); + } } From 187d37811b80143c7f0d0f2737f6fb44cc99d070 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Mon, 8 May 2023 20:32:47 -0700 Subject: [PATCH 24/27] revert nessie cascade changes --- .../apache/iceberg/catalog/CatalogTests.java | 28 +------------ .../apache/iceberg/nessie/TestNamespace.java | 41 ------------------- .../iceberg/nessie/TestNessieCatalog.java | 10 +++++ 3 files changed, 11 insertions(+), 68 deletions(-) diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java index e233202e3353..dfeea821936a 100644 --- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java +++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java @@ -363,37 +363,11 @@ public void testDropNamespace() { catalog.createNamespace(NS); Assert.assertTrue("Namespace should exist", catalog.namespaceExists(NS)); - catalog.dropNamespace(NS, true); - boolean condition = catalog.namespaceExists(NS); - Assert.assertFalse(condition); - } - - @Test - public void testDropNamespaceCascade() { - C catalog = catalog(); - - catalog.createNamespace(NS); - TableIdentifier ident = TableIdentifier.of(NS, "table"); - Table table = catalog.buildTable(ident, SCHEMA).create(); - Assert.assertTrue( - "Dropping an existing namespace should return true", catalog.dropNamespace(NS, true)); + "Dropping an existing namespace should return true", catalog.dropNamespace(NS)); Assert.assertFalse("Namespace should not exist", catalog.namespaceExists(NS)); } - @Test - public void testDropNamespaceCascadeFalse() { - C catalog = catalog(); - - catalog.createNamespace(NS); - TableIdentifier ident = TableIdentifier.of(NS, "table"); - Table table = catalog.buildTable(ident, SCHEMA).create(); - - Assertions.assertThatThrownBy(() -> catalog.dropNamespace(NS, false)) - .hasMessageContaining("not empty"); - Assert.assertTrue("Namespace should exist", catalog.namespaceExists(NS)); - } - @Test public void testDropNonexistentNamespace() { C catalog = catalog(); diff --git a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java index a2cbd72170c5..8267329678de 100644 --- a/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java +++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestNamespace.java @@ -113,47 +113,6 @@ public void testCreatingAndDroppingNamespaceWithContent() throws NessieNotFoundE Assertions.assertThat(catalog.namespaceExists(namespace)).isFalse(); } - @Test - public void testCreatingAndDroppingNamespaceCascade() throws NessieNotFoundException { - Namespace namespace = Namespace.of("test"); - catalog.createNamespace(namespace, ImmutableMap.of()); - Assertions.assertThat(catalog.namespaceExists(namespace)).isTrue(); - TableIdentifier identifier = TableIdentifier.of(namespace, "tbl"); - - Schema schema = - new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); - Assertions.assertThat(catalog.createTable(identifier, schema)).isNotNull(); - - ContentKey key = NessieUtil.toKey(identifier); - Assertions.assertThat( - api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) - .isPresent(); - - catalog.dropNamespace(namespace, true); - Assertions.assertThat(catalog.namespaceExists(namespace)).isFalse(); - } - - @Test - public void testCreatingAndDroppingNamespaceCascadeFalse() throws NessieNotFoundException { - Namespace namespace = Namespace.of("test"); - catalog.createNamespace(namespace, ImmutableMap.of()); - Assertions.assertThat(catalog.namespaceExists(namespace)).isTrue(); - TableIdentifier identifier = TableIdentifier.of(namespace, "tbl"); - - Schema schema = - new Schema(Types.StructType.of(required(1, "id", Types.LongType.get())).fields()); - Assertions.assertThat(catalog.createTable(identifier, schema)).isNotNull(); - - ContentKey key = NessieUtil.toKey(identifier); - Assertions.assertThat( - api.getContent().key(key).refName(BRANCH).get().get(key).unwrap(IcebergTable.class)) - .isPresent(); - - Assertions.assertThatThrownBy(() -> catalog.dropNamespace(namespace, false)) - .isInstanceOf(NamespaceNotEmptyException.class) - .hasMessage("Namespace 'test' is not empty. One or more tables exist."); - } - @Test public void testSettingProperties() { Map properties = ImmutableMap.of("prop", "val"); diff --git a/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java b/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java index 080ad860bc87..f8ed3987c1ea 100644 --- a/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java +++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestNessieCatalog.java @@ -134,6 +134,16 @@ protected NessieCatalog catalog() { return catalog; } + @Override + protected boolean requiresNamespaceCreate() { + return true; + } + + @Override + protected boolean supportsNestedNamespaces() { + return true; + } + @Override protected boolean supportsNamespaceProperties() { return true; From e43de0e4d3caf7defb963516b6fc70aea6f924b1 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Tue, 9 May 2023 13:24:42 -0700 Subject: [PATCH 25/27] make dropNamespace with cascade default impl --- .../org/apache/iceberg/catalog/SupportsNamespaces.java | 8 +++++++- .../apache/iceberg/aws/dynamodb/DynamoDbCatalog.java | 10 ---------- .../java/org/apache/iceberg/aws/glue/GlueCatalog.java | 10 ---------- .../java/org/apache/iceberg/dell/ecs/EcsCatalog.java | 10 ---------- .../java/org/apache/iceberg/nessie/NessieCatalog.java | 10 ---------- .../org/apache/iceberg/snowflake/SnowflakeCatalog.java | 6 ------ 6 files changed, 7 insertions(+), 47 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java b/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java index 4b3c431adec5..e1e95063f41c 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java +++ b/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java @@ -111,7 +111,13 @@ default List listNamespaces() { * @return true if the namespace was dropped, false otherwise. * @throws NamespaceNotEmptyException If the namespace is not empty */ - boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException; + default boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException{ + if (cascade) { + throw new UnsupportedOperationException( + "dropNamespace with cascade not supported with this catalog"); + } + return dropNamespace(namespace); + } /** * Set a collection of properties on a namespace in the catalog. diff --git a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java index f4ac3d27b370..7e1beb2fac6c 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/dynamodb/DynamoDbCatalog.java @@ -284,16 +284,6 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept } } - @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) - throws NamespaceNotEmptyException { - if (cascade) { - throw new UnsupportedOperationException( - "DynamoDbCatalog does not currently support dropNamespace with cascade"); - } - return dropNamespace(namespace); - } - @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java index 0635c1e8e22e..db6e8ead7ea4 100644 --- a/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java +++ b/aws/src/main/java/org/apache/iceberg/aws/glue/GlueCatalog.java @@ -560,16 +560,6 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return true; } - @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) - throws NamespaceNotEmptyException { - if (cascade) { - throw new UnsupportedOperationException( - "GlueCatalog does not currently support dropNamespace with cascade"); - } - return dropNamespace(namespace); - } - @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java index 30f49782341b..bf16e1b07f76 100644 --- a/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java +++ b/dell/src/main/java/org/apache/iceberg/dell/ecs/EcsCatalog.java @@ -339,16 +339,6 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return true; } - @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) - throws NamespaceNotEmptyException { - if (cascade) { - throw new UnsupportedOperationException( - "EcsCatalog does not currently support dropNamespace with cascade"); - } - return dropNamespace(namespace); - } - @Override public boolean setProperties(Namespace namespace, Map properties) throws NoSuchNamespaceException { diff --git a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java index c86d83985a22..0c6f2d4c5911 100644 --- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java +++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java @@ -286,16 +286,6 @@ public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyExcept return client.dropNamespace(namespace); } - @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) - throws NamespaceNotEmptyException { - if (cascade) { - throw new UnsupportedOperationException( - "NessieCatalog does not currently support dropNamespace with cascade"); - } - return dropNamespace(namespace); - } - @Override public boolean setProperties(Namespace namespace, Map properties) { return client.setProperties(namespace, properties); diff --git a/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java b/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java index dd7208c15c03..1bb05c7b898a 100644 --- a/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java +++ b/snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java @@ -214,12 +214,6 @@ public boolean dropNamespace(Namespace namespace) { "SnowflakeCatalog does not currently support dropNamespace"); } - @Override - public boolean dropNamespace(Namespace namespace, boolean cascade) { - throw new UnsupportedOperationException( - "SnowflakeCatalog does not currently support dropNamespace"); - } - @Override public boolean setProperties(Namespace namespace, Map properties) { throw new UnsupportedOperationException( From 3ba10f9a42387010806839d53c198f172fe0f599 Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Tue, 9 May 2023 13:29:20 -0700 Subject: [PATCH 26/27] spotless --- .../java/org/apache/iceberg/catalog/SupportsNamespaces.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java b/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java index e1e95063f41c..7d3c9d21bf9c 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java +++ b/api/src/main/java/org/apache/iceberg/catalog/SupportsNamespaces.java @@ -111,10 +111,11 @@ default List listNamespaces() { * @return true if the namespace was dropped, false otherwise. * @throws NamespaceNotEmptyException If the namespace is not empty */ - default boolean dropNamespace(Namespace namespace, boolean cascade) throws NamespaceNotEmptyException{ + default boolean dropNamespace(Namespace namespace, boolean cascade) + throws NamespaceNotEmptyException { if (cascade) { throw new UnsupportedOperationException( - "dropNamespace with cascade not supported with this catalog"); + "dropNamespace with cascade not supported with this catalog"); } return dropNamespace(namespace); } From 3e852ac1f4f26dbb3c5fb66de2207d20650f384a Mon Sep 17 00:00:00 2001 From: Abid Mohammed Date: Tue, 9 May 2023 13:59:58 -0700 Subject: [PATCH 27/27] make dropNamespace with cascade default impl in session catalog --- .../java/org/apache/iceberg/catalog/SessionCatalog.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java b/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java index 81ca1e31d2a3..1584c1098726 100644 --- a/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java +++ b/api/src/main/java/org/apache/iceberg/catalog/SessionCatalog.java @@ -318,7 +318,13 @@ default List listNamespaces(SessionContext context) { * @return true if the namespace was dropped, false otherwise. * @throws NamespaceNotEmptyException If the namespace is not empty */ - boolean dropNamespace(SessionContext context, Namespace namespace, boolean cascade); + default boolean dropNamespace(SessionContext context, Namespace namespace, boolean cascade) { + if (cascade) { + throw new UnsupportedOperationException( + "dropNamespace with cascade not supported with this catalog"); + } + return dropNamespace(context, namespace); + } /** * Set a collection of properties on a namespace in the catalog.