[ https://issues.apache.org/jira/browse/HIVE-11616?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14975250#comment-14975250 ]
Sergey Shelukhin commented on HIVE-11616: ----------------------------------------- I am not familiar with DB token store. How does it work presently? Is it running on HS2 and creating local metastore even when HS2 is working with remote metastore? I assumed from the code modified in this patch that it runs inside metastore. Otherwise yeah it sounds like it should be changed. Should that be done in a separate JIRA though? > DelegationTokenSecretManager reuse the same objectstore ,which has cocurrent > issue > ---------------------------------------------------------------------------------- > > Key: HIVE-11616 > URL: https://issues.apache.org/jira/browse/HIVE-11616 > Project: Hive > Issue Type: Bug > Components: Metastore > Affects Versions: 1.2.1 > Reporter: wangwenli > Assignee: Cody Fu > Fix For: 0.12.1 > > Attachments: HIVE-11616.01.patch, HIVE-11616.patch > > Original Estimate: 12h > Remaining Estimate: 12h > > sometime in metastore log, will get below exception, after analysis, we > found that : > when hivemetastore start, the DelegationTokenSecretManager will maintain the > same objectstore, see here > saslServer.startDelegationTokenSecretManager(conf, *baseHandler.getMS()*, > ServerMode.METASTORE); > this lead to the cocurrent issue. > 2015-08-18 20:59:10,520 | ERROR | pool-6-thread-200 | Error occurred during > processing of message. | > org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:296) > org.apache.hadoop.hive.thrift.DelegationTokenStore$TokenStoreException: > org.datanucleus.transaction.NucleusTransactionException: Invalid state. > Transaction has already started > at > org.apache.hadoop.hive.thrift.DBTokenStore.invokeOnRawStore(DBTokenStore.java:154) > at > org.apache.hadoop.hive.thrift.DBTokenStore.getToken(DBTokenStore.java:88) > at > org.apache.hadoop.hive.thrift.TokenStoreDelegationTokenSecretManager.retrievePassword(TokenStoreDelegationTokenSecretManager.java:112) > at > org.apache.hadoop.hive.thrift.TokenStoreDelegationTokenSecretManager.retrievePassword(TokenStoreDelegationTokenSecretManager.java:56) > at > org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$SaslDigestCallbackHandler.getPassword(HadoopThriftAuthBridge.java:565) > at > org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$SaslDigestCallbackHandler.handle(HadoopThriftAuthBridge.java:596) > at > com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse(DigestMD5Server.java:589) > at > com.sun.security.sasl.digest.DigestMD5Server.evaluateResponse(DigestMD5Server.java:244) > at > org.apache.thrift.transport.TSaslTransport$SaslParticipant.evaluateChallengeOrResponse(TSaslTransport.java:539) > at > org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:283) > at > org.apache.thrift.transport.HiveTSaslServerTransport.open(HiveTSaslServerTransport.java:133) > at > org.apache.thrift.transport.HiveTSaslServerTransport$Factory.getTransport(HiveTSaslServerTransport.java:261) > at > org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:739) > at > org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory$1.run(HadoopThriftAuthBridge.java:736) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:360) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1652) > at > org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingTransportFactory.getTransport(HadoopThriftAuthBridge.java:736) > at > org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:268) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > Caused by: org.datanucleus.transaction.NucleusTransactionException: Invalid > state. Transaction has already started > at > org.datanucleus.transaction.TransactionManager.begin(TransactionManager.java:47) > at org.datanucleus.TransactionImpl.begin(TransactionImpl.java:131) > at > org.datanucleus.api.jdo.JDOTransaction.internalBegin(JDOTransaction.java:88) > at org.datanucleus.api.jdo.JDOTransaction.begin(JDOTransaction.java:80) > at > org.apache.hadoop.hive.metastore.ObjectStore.openTransaction(ObjectStore.java:420) > at > org.apache.hadoop.hive.metastore.ObjectStore.getToken(ObjectStore.java:6455) > at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at > org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:98) > at com.sun.proxy.$Proxy4.getToken(Unknown Source) > at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at > org.apache.hadoop.hive.thrift.DBTokenStore.invokeOnRawStore(DBTokenStore.java:146) > ... 21 more -- This message was sent by Atlassian JIRA (v6.3.4#6332)