Wechar created HIVE-26935:
-----------------------------

             Summary: Expose root cause of MetaException to client sides
                 Key: HIVE-26935
                 URL: https://issues.apache.org/jira/browse/HIVE-26935
             Project: Hive
          Issue Type: Improvement
          Components: Hive
    Affects Versions: 4.0.0-alpha-2
            Reporter: Wechar
            Assignee: Wechar


MetaException is generated by thrift, and only {{message}} filed will be 
transport to client, we should expose the root cause in message to the clients 
with following advantages:
 * More friendly for user troubleshooting
 * Some root cause is unrecoverable, exposing it can disable the unnecessary 
retry.

*How to Reproduce:*
 - Step 1: Disable direct sql for HMS for our test case.
 - Step 2: Add an illegal {{PART_COL_STATS}} for a partition,
 - Step 3: Try to {{drop table}} with Spark.

The exception in Hive metastore is:
{code:sh}
2023-01-11T17:13:51,259 ERROR [Metastore-Handler-Pool: Thread-39]: 
metastore.ObjectStore (ObjectStore.java:run(4369)) - 
javax.jdo.JDOUserException: One or more instances could not be deleted
        at 
org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:625)
 ~[datanucleus-api-jdo-5.2.8.jar:?]
        at 
org.datanucleus.api.jdo.JDOQuery.deletePersistentInternal(JDOQuery.java:530) 
~[datanucleus-api-jdo-5.2.8.jar:?]
        at 
org.datanucleus.api.jdo.JDOQuery.deletePersistentAll(JDOQuery.java:499) 
~[datanucleus-api-jdo-5.2.8.jar:?]
        at 
org.apache.hadoop.hive.metastore.QueryWrapper.deletePersistentAll(QueryWrapper.java:108)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore.dropPartitionsNoTxn(ObjectStore.java:4207)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore.access$1000(ObjectStore.java:285) 
~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore$7.run(ObjectStore.java:3086) 
~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.Batchable.runBatched(Batchable.java:74) 
~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore.dropPartitionsViaJdo(ObjectStore.java:3074)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore.access$400(ObjectStore.java:285) 
~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore$6.getJdoResult(ObjectStore.java:3058)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore$6.getJdoResult(ObjectStore.java:3050)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore$GetHelper.run(ObjectStore.java:4362)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore.dropPartitionsInternal(ObjectStore.java:3061)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.ObjectStore.dropPartitions(ObjectStore.java:3040)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_332]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_332]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_332]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_332]
        at 
org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:97) 
~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at com.sun.proxy.$Proxy24.dropPartitions(Unknown Source) ~[?:?]
        at 
org.apache.hadoop.hive.metastore.HMSHandler.dropPartitionsAndGetLocations(HMSHandler.java:3186)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.HMSHandler.drop_table_core(HMSHandler.java:2963)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.HMSHandler.drop_table_with_environment_context(HMSHandler.java:3211)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.HMSHandler.drop_table_with_environment_context(HMSHandler.java:3199)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_332]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_332]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_332]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_332]
        at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:146)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:107)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at com.sun.proxy.$Proxy32.drop_table_with_environment_context(Unknown 
Source) ~[?:?]
        at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$drop_table_with_environment_context.getResult(ThriftHiveMetastore.java:19668)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$drop_table_with_environment_context.getResult(ThriftHiveMetastore.java:19647)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38) 
~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:111)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:107)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at java.security.AccessController.doPrivileged(Native Method) 
~[?:1.8.0_332]
        at javax.security.auth.Subject.doAs(Subject.java:422) ~[?:1.8.0_332]
        at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1878)
 ~[hadoop-common-3.3.2.jar:?]
        at 
org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:119)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:250)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_332]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_332]
        at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_332]
Caused by: org.datanucleus.exceptions.NucleusDataStoreException: Clear request 
failed : DELETE FROM `PARTITION_PARAMS` WHERE `PART_ID`=?
        at 
org.datanucleus.store.rdbms.scostore.JoinMapStore.clearInternal(JoinMapStore.java:916)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.scostore.JoinMapStore.clear(JoinMapStore.java:447) 
~[datanucleus-rdbms-5.2.10.jar:?]
        at org.datanucleus.store.types.wrappers.backed.Map.clear(Map.java:630) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.mapping.java.MapMapping.preDelete(MapMapping.java:298)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.request.DeleteRequest.execute(DeleteRequest.java:208)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.deleteObjectFromTable(RDBMSPersistenceHandler.java:496)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.deleteObject(RDBMSPersistenceHandler.java:468)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.state.StateManagerImpl.internalDeletePersistent(StateManagerImpl.java:1213)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:5496)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjectInternal(ExecutionContextImpl.java:2336)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjectWork(ExecutionContextImpl.java:2258)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjects(ExecutionContextImpl.java:2150)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextThreadedImpl.deleteObjects(ExecutionContextThreadedImpl.java:264)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.Query.performDeletePersistentAll(Query.java:2264) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.AbstractJavaQuery.performDeletePersistentAll(AbstractJavaQuery.java:114)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.Query.deletePersistentAll(Query.java:2216) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.api.jdo.JDOQuery.deletePersistentInternal(JDOQuery.java:512) 
~[datanucleus-api-jdo-5.2.8.jar:?]
        ... 43 more
Caused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: 
a foreign key constraint fails ("hive"."PART_COL_STATS", CONSTRAINT 
"PART_COL_STATS_FK" FOREIGN KEY ("PART_ID") REFERENCES "PARTITIONS" ("PART_ID"))
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) ~[?:1.8.0_332]
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 ~[?:1.8.0_332]
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 ~[?:1.8.0_332]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
~[?:1.8.0_332]
        at com.mysql.cj.util.Util.handleNewInstance(Util.java:192) 
~[mysql-connector-java-8.0.28.jar:8.0.28]
        at com.mysql.cj.util.Util.getInstance(Util.java:167) 
~[mysql-connector-java-8.0.28.jar:8.0.28]
        at com.mysql.cj.util.Util.getInstance(Util.java:174) 
~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.exceptions.SQLError.createBatchUpdateException(SQLError.java:224)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchSerially(ClientPreparedStatement.java:853)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:435)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:795) 
~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
org.apache.hive.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:125)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hive.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeBatch(ParamLoggingPreparedStatement.java:366)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.SQLController.processConnectionStatement(SQLController.java:675)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.SQLController.getStatementForUpdate(SQLController.java:208)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.SQLController.getStatementForUpdate(SQLController.java:179)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.scostore.JoinMapStore.clearInternal(JoinMapStore.java:897)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.scostore.JoinMapStore.clear(JoinMapStore.java:447) 
~[datanucleus-rdbms-5.2.10.jar:?]
        at org.datanucleus.store.types.wrappers.backed.Map.clear(Map.java:630) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.mapping.java.MapMapping.preDelete(MapMapping.java:298)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.request.DeleteRequest.execute(DeleteRequest.java:208)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.deleteObjectFromTable(RDBMSPersistenceHandler.java:496)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.deleteObject(RDBMSPersistenceHandler.java:468)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.state.StateManagerImpl.internalDeletePersistent(StateManagerImpl.java:1213)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:5496)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjectInternal(ExecutionContextImpl.java:2336)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjectWork(ExecutionContextImpl.java:2258)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjects(ExecutionContextImpl.java:2150)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextThreadedImpl.deleteObjects(ExecutionContextThreadedImpl.java:264)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.Query.performDeletePersistentAll(Query.java:2264) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.AbstractJavaQuery.performDeletePersistentAll(AbstractJavaQuery.java:114)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.Query.deletePersistentAll(Query.java:2216) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.api.jdo.JDOQuery.deletePersistentInternal(JDOQuery.java:512) 
~[datanucleus-api-jdo-5.2.8.jar:?]
        ... 43 more
Caused by: java.sql.SQLIntegrityConstraintViolationException: Cannot delete or 
update a parent row: a foreign key constraint fails ("hive"."PART_COL_STATS", 
CONSTRAINT "PART_COL_STATS_FK" FOREIGN KEY ("PART_ID") REFERENCES "PARTITIONS" 
("PART_ID"))
        at 
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117) 
~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1098)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchSerially(ClientPreparedStatement.java:832)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:435)
 ~[mysql-connector-java-8.0.28.jar:8.0.28]
        at com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:795) 
~[mysql-connector-java-8.0.28.jar:8.0.28]
        at 
org.apache.hive.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:125)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.apache.hive.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
 ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
        at 
org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeBatch(ParamLoggingPreparedStatement.java:366)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.SQLController.processConnectionStatement(SQLController.java:675)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.SQLController.getStatementForUpdate(SQLController.java:208)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.SQLController.getStatementForUpdate(SQLController.java:179)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.scostore.JoinMapStore.clearInternal(JoinMapStore.java:897)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.scostore.JoinMapStore.clear(JoinMapStore.java:447) 
~[datanucleus-rdbms-5.2.10.jar:?]
        at org.datanucleus.store.types.wrappers.backed.Map.clear(Map.java:630) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.mapping.java.MapMapping.preDelete(MapMapping.java:298)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.request.DeleteRequest.execute(DeleteRequest.java:208)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.deleteObjectFromTable(RDBMSPersistenceHandler.java:496)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.store.rdbms.RDBMSPersistenceHandler.deleteObject(RDBMSPersistenceHandler.java:468)
 ~[datanucleus-rdbms-5.2.10.jar:?]
        at 
org.datanucleus.state.StateManagerImpl.internalDeletePersistent(StateManagerImpl.java:1213)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.state.StateManagerImpl.deletePersistent(StateManagerImpl.java:5496)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjectInternal(ExecutionContextImpl.java:2336)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjectWork(ExecutionContextImpl.java:2258)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextImpl.deleteObjects(ExecutionContextImpl.java:2150)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.ExecutionContextThreadedImpl.deleteObjects(ExecutionContextThreadedImpl.java:264)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.Query.performDeletePersistentAll(Query.java:2264) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.AbstractJavaQuery.performDeletePersistentAll(AbstractJavaQuery.java:114)
 ~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.store.query.Query.deletePersistentAll(Query.java:2216) 
~[datanucleus-core-5.2.10.jar:?]
        at 
org.datanucleus.api.jdo.JDOQuery.deletePersistentInternal(JDOQuery.java:512) 
~[datanucleus-api-jdo-5.2.8.jar:?]
        ... 43 more
{code}
The exception from Spark client is:
{code:sh}
spark-sql> drop table test_tbl;
Error in query: org.apache.hadoop.hive.ql.metadata.HiveException: 
MetaException(message:One or more instances could not be deleted)
org.apache.spark.sql.AnalysisException: 
org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:One or 
more instances could not be deleted)
        at 
org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:110)
        at 
org.apache.spark.sql.hive.HiveExternalCatalog.dropTable(HiveExternalCatalog.scala:523)
        at 
org.apache.spark.sql.catalyst.catalog.ExternalCatalogWithListener.dropTable(ExternalCatalogWithListener.scala:104)
        at 
org.apache.spark.sql.catalyst.catalog.SessionCatalog.dropTable(SessionCatalog.scala:782)
        at 
org.apache.spark.sql.execution.command.DropTableCommand.run(ddl.scala:243)
        at 
org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:75)
        at 
org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:73)
        at 
org.apache.spark.sql.execution.command.ExecutedCommandExec.executeCollect(commands.scala:84)
        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:109)
        at 
org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:169)
        at 
org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId$1(SQLExecution.scala:95)
        at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:779)
        at 
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:64)
        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:584)
        at 
org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:176)
        at 
org.apache.spark.sql.catalyst.trees.TreeNode.transformDownWithPruning(TreeNode.scala:584)
        at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.org$apache$spark$sql$catalyst$plans$logical$AnalysisHelper$$super$transformDownWithPruning(LogicalPlan.scala:30)
        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:30)
        at 
org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.transformDownWithPruning(LogicalPlan.scala:30)
        at 
org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:560)
        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:220)
        at org.apache.spark.sql.Dataset$.$anonfun$ofRows$2(Dataset.scala:100)
        at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:779)
        at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:97)
        at 
org.apache.spark.sql.SparkSession.$anonfun$sql$1(SparkSession.scala:622)
        at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:779)
        at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:617)
        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:384)
        at 
org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.$anonfun$processLine$1(SparkSQLCLIDriver.scala:504)
        at 
org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.$anonfun$processLine$1$adapted(SparkSQLCLIDriver.scala:498)
        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:498)
        at 
org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver$.main(SparkSQLCLIDriver.scala:286)
        at 
org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver.main(SparkSQLCLIDriver.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
        at 
org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:958)
        at 
org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
        at 
org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1046)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1055)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: 
MetaException(message:One or more instances could not be deleted)
        at org.apache.hadoop.hive.ql.metadata.Hive.dropTable(Hive.java:1207)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.apache.spark.sql.hive.client.Shim_v0_14.dropTable(HiveShim.scala:1326)
        at 
org.apache.spark.sql.hive.client.HiveClientImpl.$anonfun$dropTable$1(HiveClientImpl.scala:573)
        at 
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at 
org.apache.spark.sql.hive.client.HiveClientImpl.$anonfun$withHiveState$1(HiveClientImpl.scala:298)
        at 
org.apache.spark.sql.hive.client.HiveClientImpl.liftedTree1$1(HiveClientImpl.scala:229)
        at 
org.apache.spark.sql.hive.client.HiveClientImpl.retryLocked(HiveClientImpl.scala:228)
        at 
org.apache.spark.sql.hive.client.HiveClientImpl.withHiveState(HiveClientImpl.scala:278)
        at 
org.apache.spark.sql.hive.client.HiveClientImpl.dropTable(HiveClientImpl.scala:573)
        at 
org.apache.spark.sql.hive.HiveExternalCatalog.$anonfun$dropTable$1(HiveExternalCatalog.scala:525)
        at 
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at 
org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:101)
        ... 60 more
Caused by: MetaException(message:One or more instances could not be deleted)
        at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$drop_table_with_environment_context_result$drop_table_with_environment_context_resultStandardScheme.read(ThriftHiveMetastore.java:48279)
        at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$drop_table_with_environment_context_result$drop_table_with_environment_context_resultStandardScheme.read(ThriftHiveMetastore.java:48256)
        at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$drop_table_with_environment_context_result.read(ThriftHiveMetastore.java:48198)
        at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:88)
        at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_drop_table_with_environment_context(ThriftHiveMetastore.java:1378)
        at 
org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.drop_table_with_environment_context(ThriftHiveMetastore.java:1362)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.drop_table_with_environment_context(HiveMetaStoreClient.java:2402)
        at 
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.drop_table_with_environment_context(SessionHiveMetaStoreClient.java:114)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.dropTable(HiveMetaStoreClient.java:1093)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.dropTable(HiveMetaStoreClient.java:1029)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:173)
        at com.sun.proxy.$Proxy41.dropTable(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient$SynchronizedHandler.invoke(HiveMetaStoreClient.java:2327)
        at com.sun.proxy.$Proxy41.dropTable(Unknown Source)
        at org.apache.hadoop.hive.ql.metadata.Hive.dropTable(Hive.java:1201)
        ... 75 more
{code}
Obviously we lost the root cause 
{{java.sql.SQLIntegrityConstraintViolationException}} in client



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to