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]


Reply via email to