[
https://issues.apache.org/jira/browse/HIVE-84?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12660840#action_12660840
]
Prasad Chakka commented on HIVE-84:
-----------------------------------
I don't think needsRefresh code is needed in SessionState.java
I think only these variables are needed to check whether connection to metadata
server is needs to reset. But would it be safe to change conf to whatever
passed in through Hive.get() function and refresh only when meta vars change?
> MetaStore Client is not thread safe
> -----------------------------------
>
> Key: HIVE-84
> URL: https://issues.apache.org/jira/browse/HIVE-84
> Project: Hadoop Hive
> Issue Type: Bug
> Components: Metastore
> Affects Versions: 0.2.0
> Environment: with patch for hive-77 - run:
> ant -lib ./testlibs -Dtestcase=TestMTQueries test
> Reporter: Joydeep Sen Sarma
> Assignee: Prasad Chakka
> Fix For: 0.2.0
>
> Attachments: hive-84.patch
>
>
> when running DDL Tasks in concurrent threads - the following exception trace
> is observed:
> java.sql.SQLIntegrityConstraintViolationException: The statement was aborted
> because it would have caused a duplicate ke\ y value in a unique or primary
> key constraint or unique index identified by 'UNIQUETABLE' defined on 'TBLS'.
> at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:207)
> at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:209)
> at org.apache.hadoop.hive.ql.Driver.run(Driver.java:174)
> at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:185)
> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:210)
> at org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:390)
> at org.apache.hadoop.hive.ql.QTestUtil$QTRunner.run(QTestUtil.java:681)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: javax.jdo.JDODataStoreException: Insert of object
> "org.apache.hadoop.hive.metastore.model.mta...@3bc8d400" us\ ing statement
> "INSERT INTO TBLS
> (TBL_ID,CREATE_TIME,DB_ID,RETENTION,TBL_NAME,SD_ID,OWNER,LAST_ACCESS_TIME)
> VALUES (?,?,?\ ,?,?,?,?,?)" failed : The statement was aborted because it
> would have caused a duplicate key value in a unique or primar\ y key
> constraint or unique index identified by 'UNIQUETABLE' defined on 'TBLS'.
> NestedThrowables:
> java.sql.SQLIntegrityConstraintViolationException: The statement was aborted
> because it would have caused a duplicate ke\ y value in a unique or primary
> key constraint or unique index identified by 'UNIQUETABLE' defined on 'TBLS'.
> at
> org.jpox.jdo.JPOXJDOHelper.getJDOExceptionForJPOXException(JPOXJDOHelper.java:291)
> at
> org.jpox.jdo.AbstractPersistenceManager.jdoMakePersistent(AbstractPersistenceManager.java:671)
> at
> org.jpox.jdo.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:691)
> at
> org.apache.hadoop.hive.metastore.ObjectStore.createTable(ObjectStore.java:479)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.create_table(HiveMetaStore.java:292)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:252)
> at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:205)
> ... 7 more
> Caused by: java.sql.SQLIntegrityConstraintViolationException: The statement
> was aborted because it would have caused a d\ uplicate key value in a unique
> or primary key constraint or unique index identified by 'UNIQUETABLE' defined
> on 'TBLS'.
> at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown
> Source)
> at
> org.jpox.store.rdbms.SQLController.executeStatementUpdate(SQLController.java:396)
> at
> org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:370)
> at
> org.jpox.store.rdbms.RDBMSPersistenceHandler.insertTable(RDBMSPersistenceHandler.java:157)
> at
> org.jpox.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:136)
> at
> org.jpox.state.JDOStateManagerImpl.internalMakePersistent(JDOStateManagerImpl.java:3082)
> at
> org.jpox.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImpl.java:3062)
> at
> org.jpox.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java:1231)
> at org.jpox.ObjectManagerImpl.persistObject(ObjectManagerImpl.java:1077)
> at
> org.jpox.jdo.AbstractPersistenceManager.jdoMakePersistent(AbstractPersistenceManager.java:666)
> ... 12 more
> Caused by: java.sql.SQLException: The statement was aborted because it would
> have caused a duplicate key value in a uniq\ ue or primary key constraint or
> unique index identified by 'UNIQUETABLE' defined on 'TBLS'.
> at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
> Source)
> ... 30 more
> Caused by: ERROR 23505: The statement was aborted because it would have
> caused a duplicate key value in a unique or prim\ ary key constraint or
> unique index identified by 'UNIQUETABLE' defined on 'TBLS'.
> at org.apache.derby.iapi.error.StandardException.newException(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown Source)
> at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown Source)
> at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown Source)
> at org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
> Source)
> at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
> when running normal select queries as well - one hits exception, stack trace:
> 2008-11-27 01:54:00,216 ERROR metadata.Hive (Hive.java:getTable(275)) -
> NoSuchObjectException(message:default.dummySrc t\
> able not found)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.get_table(HiveMetaStore.java:347)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getTable(HiveMetaStoreClient.java:433)
> at
> org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getTable(HiveMetaStoreClient.java:472)
> at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:272)
> at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:254)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:544)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:3192)
> at
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:73)
> at org.apache.hadoop.hive.ql.QTestUtil.analyzeAST(QTestUtil.java:672)
> at
> org.apache.hadoop.hive.ql.parse.TestParseNegative.testParseNegative_unknown_table1(TestParseNegative.java:231)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297)
> at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672)
> at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:567)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.