danhuawang opened a new issue, #9297: URL: https://github.com/apache/gravitino/issues/9297
### Version main branch ### Describe what's wrong ``` wangdanhua@wangdanhuadeMBP bin % ./spark-sql --jars "/Users/wangdanhua/Workspace/spark-bin-irc/jars/iceberg-gcp-bundle-1.10.0.jar,/Users/wangdanhua/Workspace/spark-bin-irc/jars/iceberg-spark-runtime-3.4_2.12-1.10.0.jar" --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.rest=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.rest.type=rest --conf spark.sql.catalog.rest.uri=http://127.0.0.1:9001/iceberg/ --conf spark.sql.catalog.rest.header.X-Iceberg-Access-Delegation=vended-credentials --conf spark.sql.catalog.rest.cache-enabled=false --conf spark.sql.catalog.rest.rest.auth.type=basic --conf spark.sql.catalog.rest.rest.auth .basic.username=supper --conf spark.sql.catalog.rest.rest.auth.basic.password=mock --conf spark.locality.wait.node=0 25/11/28 19:12:11 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 25/11/28 19:12:13 WARN HiveConf: HiveConf of name hive.stats.jdbc.timeout does not exist 25/11/28 19:12:13 WARN HiveConf: HiveConf of name hive.stats.retries.wait does not exist 25/11/28 19:12:14 WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 2.3.0 25/11/28 19:12:14 WARN ObjectStore: setMetaStoreSchemaVersion called but recording version is disabled: version = 2.3.0, comment = Set by MetaStore [email protected] Spark master: local[*], Application Id: local-1764328332363 spark-sql (default)> use rest; 25/11/28 19:12:17 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException Time taken: 1.051 seconds spark-sql ()> CREATE DATABASE IF NOT EXISTS dml; Time taken: 0.949 seconds spark-sql ()> > CREATE TABLE dml.test (id bigint COMMENT 'unique id') using iceberg; 25/11/28 19:12:39 ERROR SparkSQLDriver: Failed in [CREATE TABLE dml.test (id bigint COMMENT 'unique id') using iceberg] org.apache.iceberg.exceptions.ServiceFailureException: Server error: RuntimeException: doAs method occurs an unexpected exception at org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.accept(ErrorHandlers.java:243) at org.apache.iceberg.rest.ErrorHandlers$TableErrorHandler.accept(ErrorHandlers.java:124) at org.apache.iceberg.rest.ErrorHandlers$TableErrorHandler.accept(ErrorHandlers.java:108) at org.apache.iceberg.rest.HTTPClient.throwFailure(HTTPClient.java:240) at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:336) at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:297) at org.apache.iceberg.rest.BaseHTTPClient.post(BaseHTTPClient.java:100) at org.apache.iceberg.rest.RESTSessionCatalog$Builder.create(RESTSessionCatalog.java:773) at org.apache.iceberg.spark.SparkCatalog.createTable(SparkCatalog.java:248) at org.apache.spark.sql.connector.catalog.TableCatalog.createTable(TableCatalog.java:199) at org.apache.spark.sql.execution.datasources.v2.CreateTableExec.run(CreateTableExec.scala:44) at org.apache.spark.sql.execution.datasources.v2.V2CommandExec.result$lzycompute(V2CommandExec.scala:43) at org.apache.spark.sql.execution.datasources.v2.V2CommandExec.result(V2CommandExec.scala:43) at org.apache.spark.sql.execution.datasources.v2.V2CommandExec.executeCollect(V2CommandExec.scala:49) at org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$1.$anonfun$applyOrElse$1(QueryExecution.scala:98) at org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId$6(SQLExecution.scala:118) at org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:195) at org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId$1(SQLExecution.scala:103) at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:827) at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:65) at org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$1.applyOrElse(QueryExecution.scala:98) at org.apache.spark.sql.execution.QueryExecution$$anonfun$eagerlyExecuteCommands$1.applyOrElse(QueryExecution.scala:94) at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$transformDownWithPruning$1(TreeNode.scala:512) at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:104) at org.apache.spark.sql.catalyst.trees.TreeNode.transformDownWithPruning(TreeNode.scala:512) at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.org$apache$spark$sql$catalyst$plans$logical$AnalysisHelper$$super$transformDownWithPruning(LogicalPlan.scala:31) at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning(AnalysisHelper.scala:267) at org.apache.spark.sql.catalyst.plans.logical.AnalysisHelper.transformDownWithPruning$(AnalysisHelper.scala:263) at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:31) at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:31) at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:488) at org.apache.spark.sql.execution.QueryExecution.eagerlyExecuteCommands(QueryExecution.scala:94) at org.apache.spark.sql.execution.QueryExecution.commandExecuted$lzycompute(QueryExecution.scala:81) at org.apache.spark.sql.execution.QueryExecution.commandExecuted(QueryExecution.scala:79) at org.apache.spark.sql.Dataset.<init>(Dataset.scala:219) at org.apache.spark.sql.Dataset$.$anonfun$ofRows$2(Dataset.scala:99) at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:827) at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:96) at org.apache.spark.sql.SparkSession.$anonfun$sql$1(SparkSession.scala:640) at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:827) at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:630) at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:671) at org.apache.spark.sql.SQLContext.sql(SQLContext.scala:651) at org.apache.spark.sql.hive.thriftserver.SparkSQLDriver.run(SparkSQLDriver.scala:67) at org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.processCmd(SparkSQLCLIDriver.scala:415) at org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.$anonfun$processLine$1(SparkSQLCLIDriver.scala:533) at org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.$anonfun$processLine$1$adapted(SparkSQLCLIDriver.scala:527) at scala.collection.Iterator.foreach(Iterator.scala:943) at scala.collection.Iterator.foreach$(Iterator.scala:943) at scala.collection.AbstractIterator.foreach(Iterator.scala:1431) at scala.collection.IterableLike.foreach(IterableLike.scala:74) at scala.collection.IterableLike.foreach$(IterableLike.scala:73) at scala.collection.AbstractIterable.foreach(Iterable.scala:56) at org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.processLine(SparkSQLCLIDriver.scala:527) at org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver$.main(SparkSQLCLIDriver.scala:307) at org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.main(SparkSQLCLIDriver.scala) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52) at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:1020) at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:192) at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:215) at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:91) at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1111) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1120) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) ``` ### Error message and/or stacktrace ``` 2025-11-28 19:12:38.170 INFO [iceberg-rest-42] [org.apache.gravitino.iceberg.service.rest.IcebergTableOperations.loadTable(IcebergTableOperations.java:287)] - Load Iceberg table, catalog: iceberg, namespace: dml, table: test, access delegation: vended-credentials, credential vending: true 2025-11-28 19:12:38.192 INFO [iceberg-rest-42] [org.apache.gravitino.iceberg.service.IcebergExceptionMapper.toRESTResponse(IcebergExceptionMapper.java:86)] - Iceberg REST server error maybe caused by user request, response http status: 404, exception: class org.apache.iceberg.exceptions.NoSuchTableException, exception message: Table does not exist: dml.test 2025-11-28 19:12:38.242 INFO [iceberg-rest-43] [org.apache.gravitino.iceberg.service.rest.IcebergTableOperations.createTable(IcebergTableOperations.java:160)] - Create Iceberg table, catalog: iceberg, namespace: dml, create table request: CreateTableRequest{name=test, location=null, properties={owner=wangdanhua}, schema=table { 0: id: optional long (unique id) }, partitionSpec=org.apache.iceberg.UnboundPartitionSpec@21117d6e, writeOrder=null, stageCreate=false}, accessDelegation: vended-credentials, isCredentialVending: true 2025-11-28 19:12:38.251 INFO [iceberg-rest-43] [org.apache.iceberg.BaseMetastoreCatalog$BaseMetastoreCatalogTableBuilder.tableDefaultProperties(BaseMetastoreCatalog.java:269)] - Table properties set at catalog level through catalog properties: {} 2025-11-28 19:12:38.252 INFO [iceberg-rest-43] [org.apache.iceberg.BaseMetastoreCatalog$BaseMetastoreCatalogTableBuilder.tableOverrideProperties(BaseMetastoreCatalog.java:283)] - Table properties enforced at catalog level through catalog properties: {} 2025-11-28 19:12:39.555 WARN [iceberg-rest-43] [org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:50)] - doAs method occurs an unexpected error java.lang.NoSuchMethodError: 'com.google.api.services.storage.model.StorageObject com.google.api.services.storage.model.StorageObject.setCustomTime(com.google.api.client.util.DateTime)' at com.google.cloud.storage.JsonConversions.blobInfoEncode(JsonConversions.java:336) ~[iceberg-gcp-bundle-1.10.0.jar:?] at com.google.cloud.storage.Conversions$SimpleCodec.encode(Conversions.java:144) ~[iceberg-gcp-bundle-1.10.0.jar:?] at com.google.cloud.storage.StorageImpl.writer(StorageImpl.java:726) ~[iceberg-gcp-bundle-1.10.0.jar:?] at com.google.cloud.storage.StorageImpl.writer(StorageImpl.java:100) ~[iceberg-gcp-bundle-1.10.0.jar:?] at org.apache.iceberg.gcp.gcs.GCSOutputStream.openStream(GCSOutputStream.java:114) ~[iceberg-gcp-1.10.0.jar:?] at org.apache.iceberg.gcp.gcs.GCSOutputStream.<init>(GCSOutputStream.java:74) ~[iceberg-gcp-1.10.0.jar:?] at org.apache.iceberg.gcp.gcs.GCSOutputFile.createOrOverwrite(GCSOutputFile.java:63) ~[iceberg-gcp-1.10.0.jar:?] at org.apache.iceberg.TableMetadataParser.internalWrite(TableMetadataParser.java:129) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.TableMetadataParser.overwrite(TableMetadataParser.java:119) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadata(BaseMetastoreTableOperations.java:161) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadataIfRequired(BaseMetastoreTableOperations.java:151) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.jdbc.JdbcTableOperations.doCommit(JdbcTableOperations.java:106) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreTableOperations.commit(BaseMetastoreTableOperations.java:126) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreCatalog$BaseMetastoreCatalogTableBuilder.create(BaseMetastoreCatalog.java:201) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.rest.CatalogHandlers.createTable(CatalogHandlers.java:281) ~[iceberg-core-1.10.0.jar:?] at org.apache.gravitino.iceberg.common.ops.IcebergCatalogWrapper.createTable(IcebergCatalogWrapper.java:173) ~[gravitino-iceberg-common-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.CatalogWrapperForREST.createTable(CatalogWrapperForREST.java:105) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.dispatcher.IcebergTableOperationExecutor.createTable(IcebergTableOperationExecutor.java:89) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.dispatcher.IcebergTableHookDispatcher.createTable(IcebergTableHookDispatcher.java:59) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.dispatcher.IcebergTableEventDispatcher.createTable(IcebergTableEventDispatcher.java:101) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations.lambda$createTable$1(IcebergTableOperations.java:175) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?] at java.base/javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?] at org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44) ~[gravitino-core-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.server.web.Utils.doAs(Utils.java:202) ~[gravitino-server-common-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations.createTable(IcebergTableOperations.java:169) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations_$$_jvst953_4._d2createTable(IcebergTableOperations_$$_jvst953_4.java) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1268) ~[hk2-utils-2.6.1.jar:?] at org.jvnet.hk2.internal.MethodInterceptorHandler$MethodInvocationImpl.proceed(MethodInterceptorHandler.java:164) ~[hk2-locator-2.6.1.jar:?] at org.apache.gravitino.server.web.filter.BaseMetadataAuthorizationMethodInterceptor.invoke(BaseMetadataAuthorizationMethodInterceptor.java:203) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.jvnet.hk2.internal.MethodInterceptorHandler.invoke(MethodInterceptorHandler.java:97) ~[hk2-locator-2.6.1.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations_$$_jvst953_4.createTable(IcebergTableOperations_$$_jvst953_4.java) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[jersey-container-servlet-core-2.41.jar:?] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.apache.gravitino.server.authentication.AuthenticationFilter.lambda$doFilter$0(AuthenticationFilter.java:89) ~[gravitino-server-common-1.1.0-SNAPSHOT.jar:?] at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?] at java.base/javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?] at org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44) ~[gravitino-core-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.server.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:86) ~[gravitino-server-common-1.1.0-SNAPSHOT.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at java.base/java.lang.Thread.run(Thread.java:840) [?:?] 2025-11-28 19:12:39.556 WARN [iceberg-rest-43] [org.apache.gravitino.iceberg.service.IcebergExceptionMapper.toRESTResponse(IcebergExceptionMapper.java:84)] - Iceberg REST server unexpected exception: java.lang.RuntimeException: doAs method occurs an unexpected exception at org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:51) ~[gravitino-core-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.server.web.Utils.doAs(Utils.java:202) ~[gravitino-server-common-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations.createTable(IcebergTableOperations.java:169) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations_$$_jvst953_4._d2createTable(IcebergTableOperations_$$_jvst953_4.java) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1268) ~[hk2-utils-2.6.1.jar:?] at org.jvnet.hk2.internal.MethodInterceptorHandler$MethodInvocationImpl.proceed(MethodInterceptorHandler.java:164) ~[hk2-locator-2.6.1.jar:?] at org.apache.gravitino.server.web.filter.BaseMetadataAuthorizationMethodInterceptor.invoke(BaseMetadataAuthorizationMethodInterceptor.java:203) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.jvnet.hk2.internal.MethodInterceptorHandler.invoke(MethodInterceptorHandler.java:97) ~[hk2-locator-2.6.1.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations_$$_jvst953_4.createTable(IcebergTableOperations_$$_jvst953_4.java) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:244) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) ~[jersey-common-2.41.jar:?] at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) ~[jersey-server-2.41.jar:?] at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311) ~[jersey-container-servlet-core-2.41.jar:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) ~[jersey-container-servlet-core-2.41.jar:?] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.apache.gravitino.server.authentication.AuthenticationFilter.lambda$doFilter$0(AuthenticationFilter.java:89) ~[gravitino-server-common-1.1.0-SNAPSHOT.jar:?] at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?] at java.base/javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?] at org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44) ~[gravitino-core-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.server.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:86) ~[gravitino-server-common-1.1.0-SNAPSHOT.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[jetty-servlet-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [jetty-server-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [jetty-io-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [jetty-util-9.4.51.v20230217.jar:9.4.51.v20230217] at java.base/java.lang.Thread.run(Thread.java:840) [?:?] Caused by: java.lang.NoSuchMethodError: 'com.google.api.services.storage.model.StorageObject com.google.api.services.storage.model.StorageObject.setCustomTime(com.google.api.client.util.DateTime)' at com.google.cloud.storage.JsonConversions.blobInfoEncode(JsonConversions.java:336) ~[iceberg-gcp-bundle-1.10.0.jar:?] at com.google.cloud.storage.Conversions$SimpleCodec.encode(Conversions.java:144) ~[iceberg-gcp-bundle-1.10.0.jar:?] at com.google.cloud.storage.StorageImpl.writer(StorageImpl.java:726) ~[iceberg-gcp-bundle-1.10.0.jar:?] at com.google.cloud.storage.StorageImpl.writer(StorageImpl.java:100) ~[iceberg-gcp-bundle-1.10.0.jar:?] at org.apache.iceberg.gcp.gcs.GCSOutputStream.openStream(GCSOutputStream.java:114) ~[iceberg-gcp-1.10.0.jar:?] at org.apache.iceberg.gcp.gcs.GCSOutputStream.<init>(GCSOutputStream.java:74) ~[iceberg-gcp-1.10.0.jar:?] at org.apache.iceberg.gcp.gcs.GCSOutputFile.createOrOverwrite(GCSOutputFile.java:63) ~[iceberg-gcp-1.10.0.jar:?] at org.apache.iceberg.TableMetadataParser.internalWrite(TableMetadataParser.java:129) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.TableMetadataParser.overwrite(TableMetadataParser.java:119) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadata(BaseMetastoreTableOperations.java:161) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreTableOperations.writeNewMetadataIfRequired(BaseMetastoreTableOperations.java:151) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.jdbc.JdbcTableOperations.doCommit(JdbcTableOperations.java:106) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreTableOperations.commit(BaseMetastoreTableOperations.java:126) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.BaseMetastoreCatalog$BaseMetastoreCatalogTableBuilder.create(BaseMetastoreCatalog.java:201) ~[iceberg-core-1.10.0.jar:?] at org.apache.iceberg.rest.CatalogHandlers.createTable(CatalogHandlers.java:281) ~[iceberg-core-1.10.0.jar:?] at org.apache.gravitino.iceberg.common.ops.IcebergCatalogWrapper.createTable(IcebergCatalogWrapper.java:173) ~[gravitino-iceberg-common-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.CatalogWrapperForREST.createTable(CatalogWrapperForREST.java:105) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.dispatcher.IcebergTableOperationExecutor.createTable(IcebergTableOperationExecutor.java:89) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.dispatcher.IcebergTableHookDispatcher.createTable(IcebergTableHookDispatcher.java:59) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.dispatcher.IcebergTableEventDispatcher.createTable(IcebergTableEventDispatcher.java:101) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at org.apache.gravitino.iceberg.service.rest.IcebergTableOperations.lambda$createTable$1(IcebergTableOperations.java:175) ~[gravitino-iceberg-rest-server-1.1.0-SNAPSHOT.jar:?] at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?] at java.base/javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?] at org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44) ~[gravitino-core-1.1.0-SNAPSHOT.jar:?] ... 73 more 2025-11-28 19:13:14.897 INFO [RelationalBackend-Garbage-Collector] [org.apache.gravitino.storage.relational.RelationalGarbageCollector.collectAndClean(RelationalGarbageCollector.java:94)] - Start to collect and delete old version data by thread 22 ``` ### How to reproduce 1. build latest gravitino main, update gravitino.conf ``` # THE CONFIGURATION FOR authorization # Whether Gravitino enable authorization or not gravitino.authorization.enable = true # The admins of Gravitino service, multiple admins are spitted by comma. gravitino.authorization.serviceAdmins = supper # THE CONFIGURATION FOR AUXILIARY SERVICE # Auxiliary service names, separate by ',', currently support iceberg-rest and lance-rest gravitino.auxService.names = iceberg-rest,lance-rest # Iceberg REST service classpath gravitino.iceberg-rest.classpath = iceberg-rest-server/libs, iceberg-rest-server/conf # Iceberg REST service host gravitino.iceberg-rest.host = 0.0.0.0 # Iceberg REST service http port gravitino.iceberg-rest.httpPort = 9001 # The backend Iceberg catalog for Iceberg REST service, it's recommended to change to hive or jdbc gravitino.iceberg-rest.catalog-backend = memory # The warehouse directory of Iceberg catalog for Iceberg REST service gravitino.iceberg-rest.warehouse = /tmp/ # Lance REST service classpath gravitino.lance-rest.classpath = lance-rest-server/libs # Lance REST service host gravitino.lance-rest.host = 0.0.0.0 # Lance REST service http port gravitino.lance-rest.httpPort = 9101 # THE CONFIGURATION FOR Lance namespace backend # The backend Lance namespace for Lance REST service, it's recommended to use Gravitino gravitino.lance-rest.namespace-backend = gravitino # The uri of the Lance REST service gravitino namespace backend gravitino.lance-rest.gravitino.uri = http://localhost:8090 # The metalake name used for Lance REST service gravitino namespace backend, please create the metalake first before using it, and configure the metalake name here. # gravitino.lance-rest.gravitino.metalake-name = metalake gravitino.iceberg-rest.catalog-config-provider = dynamic-config-provider gravitino.iceberg-rest.gravitino-uri = http://localhost:8090/ gravitino.iceberg-rest.gravitino-metalake = testirc gravitino.iceberg-rest.gravitino-simple.user-name = supper gravitino.iceberg-rest.default-catalog-name = iceberg ``` 2. download jars and restart ``` wget https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-gcp-bundle/1.10.0/iceberg-gcp-bundle-1.10.0.jar wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.jar cp -r bundles/*-bundle/build/libs/*.jar distribution/package/catalogs/fileset/libs cp -r bundles/*-bundle/build/libs/*.jar distribution/package/catalogs/lakehouse-iceberg/libs cp -r bundles/*-bundle/build/libs/*.jar distribution/package/iceberg-rest-server/libs cp mysql-connector-java-8.0.27.jar distribution/package/libs cp mysql-connector-java-8.0.27.jar distribution/package/catalogs/lakehouse-iceberg/libs cp mysql-connector-java-8.0.27.jar distribution/package/iceberg-rest-server/libs cp iceberg-gcp-bundle-1.10.0.jar distribution/package/iceberg-rest-server/libs cp iceberg-gcp-bundle-1.10.0.jar distribution/package/catalogs/lakehouse-iceberg/libs ``` 3. For spark (1.10.0) ``` wget https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-gcp-bundle/1.10.0/iceberg-gcp-bundle-1.10.0.jar wget https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-runtime-3.4_2.12/1.10.0/iceberg-spark-runtime-3.4_2.12-1.10.0.jar ``` 4. create metalake and catalog ``` curl -X POST -H "Content-Type: application/json" -H "Authorization: Basic c3VwcGVyOnRlc3QK" http://localhost:8090/api/metalakes -d '{"name": "testirc"}' curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Basic c3VwcGVyOnRlc3QK" \ http://localhost:8090/api/metalakes/testirc/catalogs/ \ -d '{ "name": "iceberg", "type": "RELATIONAL", "comment": "This is a iceberg catalog", "provider": "lakehouse-iceberg", "properties": { "catalog-backend": "jdbc", "uri": "jdbc:mysql://192.168.194.152:3306/iceberg?useSSL=false", "jdbc-driver": "com.mysql.cj.jdbc.Driver", "jdbc-user": "iceberg_rest", "jdbc-password": "iceberg_user", "io-impl": "org.apache.iceberg.gcp.gcs.GCSFileIO", "authentication.type": "simple", "warehouse": "gs://strato-iceberg/test1", "credential-providers": "gcs-token", "gcs-service-account-file": "/Users/wangdanhua/Downloads/tonal-land-426304-d3-a75b6878b6ce.json", "jdbc-initialize": "true" } }' ``` 5. create table : ``` ./spark-sql --jars "/Users/wangdanhua/Workspace/spark-bin-irc/jars/iceberg-gcp-bundle-1.10.0.jar,/Users/wangdanhua/Workspace/spark-bin-irc/jars/iceberg-spark-runtime-3.4_2.12-1.10.0.jar" --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.rest=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.rest.type=rest --conf spark.sql.catalog.rest.uri=http://127.0.0.1:9001/iceberg/ --conf spark.sql.catalog.rest.header.X-Iceberg-Access-Delegation=vended-credentials --conf spark.sql.catalog.rest.cache-enabled=false --conf spark.sql.catalog.rest.rest.auth.type=basic --conf spark.sql.catalog.rest.rest.auth.basic.username=supper --conf spark.sql.catalog.rest.rest.auth.basic.password=mock --conf spark.locality.wait.node=0 ``` USE rest; CREATE DATABASE IF NOT EXISTS dml; CREATE TABLE dml.test (id bigint COMMENT 'unique id') using iceberg; DESCRIBE TABLE EXTENDED dml.test; INSERT INTO dml.test VALUES (1), (2); SELECT * FROM dml.test; ### Additional context _No response_ -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
