[ https://issues.apache.org/jira/browse/HIVE-25144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17359364#comment-17359364 ]
David Mollitor commented on HIVE-25144: --------------------------------------- And here is the logging... {code:none} 2021-06-04 12:01:25,927 INFO org.apache.hadoop.hive.metastore.HiveMetaStore.audit: [pool-9-thread-3]: ugi=kudu/host@DOMAIN ip=xx.xx.xx.xx cmd=create_table: Table(tableName:test_table, dbName:test_database, owner:user, createTime:0, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:... tableType:MANAGED_TABLE, temporary:false, ownerType:USER) 2021-06-04 12:01:26,001 INFO org.apache.hadoop.hive.common.FileUtils: [pool-9-thread-3]: Creating directory if it doesn't exist: hdfs://ns1/user/hive/warehouse/test_database.db/test_table 2021-06-04 12:01:26,185 ERROR com.jolbox.bonecp.ConnectionHandle: [pool-9-thread-3]: Database access problem. Killing off this connection and all remaining connections in the connection pool. SQL State = 08S01 2021-06-04 12:01:26,294 INFO org.apache.hadoop.fs.TrashPolicyDefault: [pool-9-thread-3]: Moved: 'hdfs://ns1/user/hive/warehouse/test_database.db/test_table' to trash at: hdfs://ns1/user/.Trash/kudu/Current/user/hive/warehouse/test_database.db/test_table 2021-06-04 12:01:26,304 ERROR org.apache.hadoop.hive.metastore.RetryingHMSHandler: [pool-9-thread-3]: Retrying HMSHandler after 2000 ms (attempt 1 of 10) with error: javax.jdo.JDODataStoreException: Communications link failure The last packet successfully received from the server was 1,521,446 milliseconds ago. The last packet sent successfully to the server was 1,521,447 milliseconds ago. at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:543) at org.datanucleus.api.jdo.JDOTransaction.commit(JDOTransaction.java:171) at org.apache.hadoop.hive.metastore.ObjectStore.commitTransaction(ObjectStore.java:727) at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:101) at com.sun.proxy.$Proxy26.commitTransaction(Unknown Source) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_table_core(HiveMetaStore.java:1582) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_table_with_environment_context(HiveMetaStore.java:1615) at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:140) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:99) at com.sun.proxy.$Proxy28.create_table_with_environment_context(Unknown Source) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$create_table_with_environment_context.getResult(ThriftHiveMetastore.java:10993) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$create_table_with_environment_context.getResult(ThriftHiveMetastore.java:10977) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:594) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:589) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor.process(HadoopThriftAuthBridge.java:589) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) NestedThrowablesStackTrace: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 1,521,446 milliseconds ago. The last packet sent successfully to the server was 1,521,447 milliseconds ago. at sun.reflect.GeneratedConstructorAccessor84.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121) at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3938) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2551) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2814) at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5338) at com.jolbox.bonecp.ConnectionHandle.setAutoCommit(ConnectionHandle.java:1292) at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:423) at org.datanucleus.store.rdbms.SQLController.getStatementForQuery(SQLController.java:311) at org.datanucleus.store.rdbms.SQLController.getStatementForQuery(SQLController.java:295) at org.datanucleus.store.rdbms.scostore.JoinListStore.listIterator(JoinListStore.java:761) at org.datanucleus.store.rdbms.scostore.AbstractListStore.listIterator(AbstractListStore.java:93) at org.datanucleus.store.rdbms.scostore.AbstractListStore.iterator(AbstractListStore.java:83) at org.datanucleus.store.types.wrappers.backed.List.loadFromStore(List.java:264) at org.datanucleus.store.types.wrappers.backed.List.getValue(List.java:225) at org.datanucleus.store.types.wrappers.backed.List.getValue(List.java:70) at org.datanucleus.store.types.SCOUtils.unwrapSCOField(SCOUtils.java:79) at org.datanucleus.store.fieldmanager.DetachFieldManager.internalFetchObjectField(DetachFieldManager.java:236) at org.datanucleus.store.fieldmanager.AbstractFetchDepthFieldManager.fetchObjectField(AbstractFetchDepthFieldManager.java:114) at org.datanucleus.state.StateManagerImpl.detach(StateManagerImpl.java:3571) at org.datanucleus.ExecutionContextImpl.detachObject(ExecutionContextImpl.java:2693) at org.datanucleus.ExecutionContextThreadedImpl.detachObject(ExecutionContextThreadedImpl.java:329) at org.datanucleus.store.fieldmanager.DetachFieldManager.processPersistable(DetachFieldManager.java:92) at org.datanucleus.store.fieldmanager.DetachFieldManager.internalFetchObjectField(DetachFieldManager.java:125) at org.datanucleus.store.fieldmanager.AbstractFetchDepthFieldManager.fetchObjectField(AbstractFetchDepthFieldManager.java:105) at org.datanucleus.state.StateManagerImpl.detach(StateManagerImpl.java:3571) at org.datanucleus.ExecutionContextImpl.performDetachAllOnTxnEnd(ExecutionContextImpl.java:4579) at org.datanucleus.ExecutionContextImpl.postCommit(ExecutionContextImpl.java:4616) at org.datanucleus.ExecutionContextImpl.transactionCommitted(ExecutionContextImpl.java:775) at org.datanucleus.TransactionImpl.internalPostCommit(TransactionImpl.java:559) at org.datanucleus.TransactionImpl.commit(TransactionImpl.java:342) at org.datanucleus.api.jdo.JDOTransaction.commit(JDOTransaction.java:107) at org.apache.hadoop.hive.metastore.ObjectStore.commitTransaction(ObjectStore.java:727) at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:101) at com.sun.proxy.$Proxy26.commitTransaction(Unknown Source) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_table_core(HiveMetaStore.java:1582) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_table_with_environment_context(HiveMetaStore.java:1615) at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:140) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:99) at com.sun.proxy.$Proxy28.create_table_with_environment_context(Unknown Source) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$create_table_with_environment_context.getResult(ThriftHiveMetastore.java:10993) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$create_table_with_environment_context.getResult(ThriftHiveMetastore.java:10977) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:594) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:589) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor.process(HadoopThriftAuthBridge.java:589) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.net.SocketException: Connection reset at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115) at java.net.SocketOutputStream.write(SocketOutputStream.java:155) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3919) ... 58 more 2021-06-04 12:01:28,329 INFO org.apache.hadoop.hive.metastore.HiveMetaStore: [pool-9-thread-3]: 3: create_table: Table(tableName:test_table, dbName:test_database, owner:user, createTime:0, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols)], location:hdfs://ns1/user/hive/warehouse/test_database.db/test_table, inputFormat:, outputFormat:, compressed:false, numBuckets:0, serdeInfo:SerDeInfo(name:, serializationLib:, parameters:{}), bucketCols:[], sortCols:[], parameters:{}), partitionKeys:[], parameters:{kudu.table_id=xxxxxxxxxxxx, transient_lastDdlTime=0, kudu.master_addresses=xxxxxxxx, storage_handler=org.apache.hadoop.hive.kudu.KuduStorageHandler, kudu.table_name=test_database.test_table}, viewOriginalText:, viewExpandedText:, tableType:MANAGED_TABLE, temporary:false, ownerType:USER) 2021-06-04 12:01:28,330 INFO org.apache.hadoop.hive.metastore.HiveMetaStore.audit: [pool-9-thread-3]: ugi=kudu/host@DOMAIN.LOCAL ip=xx.xx.xx.xx cmd=create_table: Table(tableName:test_table, dbName:test_database, owner:user, ... tableType:MANAGED_TABLE, temporary:false, ownerType:USER) 2021-06-04 12:01:28,356 ERROR org.apache.hadoop.hive.metastore.RetryingHMSHandler: [pool-9-thread-3]: AlreadyExistsException(message:Table test_table already exists) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_table_core(HiveMetaStore.java:1528) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_table_with_environment_context(HiveMetaStore.java:1615) at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:140) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:99) at com.sun.proxy.$Proxy28.create_table_with_environment_context(Unknown Source) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$create_table_with_environment_context.getResult(ThriftHiveMetastore.java:10993) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$create_table_with_environment_context.getResult(ThriftHiveMetastore.java:10977) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:594) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor$1.run(HadoopThriftAuthBridge.java:589) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor.process(HadoopThriftAuthBridge.java:589) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) {code} > Add NoReconnect Annotation to CreateXXX Methods With AlreadyExistsException > --------------------------------------------------------------------------- > > Key: HIVE-25144 > URL: https://issues.apache.org/jira/browse/HIVE-25144 > Project: Hive > Issue Type: Improvement > Reporter: David Mollitor > Assignee: David Mollitor > Priority: Major > Labels: pull-request-available > Time Spent: 0.5h > Remaining Estimate: 0h > > I have recently seen an issue where a Hive {{CREATE TABLE}} method fails with > {{AlreadyExistsException}} even though the table does absolutely not exist. > > I believe the issue is there there is a timeout/transient error with HMS and > the backend database. So, the client submits the request to HMS, and the > request does eventually succeed, but only after the connection to the client > connects. Therefore, when the HMS Client "retry" functionality kicks it, the > second time around, the table looks like it already exists. > > If something goes wrong during a HMS CREATE operation, we do not know the > state of the operation and therefore it should just fail. > > It would certainly be more transparent to the end-user what is going on. An > {{AlreadyExistsException}} is confusing. -- This message was sent by Atlassian Jira (v8.3.4#803005)