[ https://issues.apache.org/jira/browse/HIVE-20740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16680304#comment-16680304 ]
Vihang Karajgaonkar commented on HIVE-20740: -------------------------------------------- The error logs say this :( {noformat} [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.apache.hadoop.hive.cli.TestMiniDruidCliDriver [INFO] [INFO] Results: [INFO] [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 47.068s [INFO] Finished at: Wed Nov 07 17:57:04 UTC 2018 [INFO] Final Memory: 61M/510M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (default-test) on project hive-it-qfile: There are test failures. [ERROR] [ERROR] Please refer to /home/hiveptest/35.232.67.223-hiveptest-0/apache-github-source-source/itests/qtest/target/surefire-reports for the individual test results. [ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream. [ERROR] ExecutionException The forked VM terminated without properly saying goodbye. VM crash or System.exit called? [ERROR] Command was /bin/sh -c cd /home/hiveptest/35.232.67.223-hiveptest-0/apache-github-source-source/itests/qtest && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Xmx2048m -jar /home/hiveptest/35.232.67.223-hiveptest-0/apache-github-source-source/itests/qtest/target/surefire/surefirebooter2827692084749430164.jar /home/hiveptest/35.232.67.223-hiveptest-0/apache-github-source-source/itests/qtest/target/surefire 2018-11-07T17-56-50_252-jvmRun1 surefire203521922645361632tmp surefire_04497948723045853634tmp [ERROR] Error occurred in starting fork, check output in log [ERROR] Process Exit Code: 1 [ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: ExecutionException The forked VM terminated without properly saying goodbye. VM crash or System.exit called? [ERROR] Command was /bin/sh -c cd /home/hiveptest/35.232.67.223-hiveptest-0/apache-github-source-source/itests/qtest && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Xmx2048m -jar /home/hiveptest/35.232.67.223-hiveptest-0/apache-github-source-source/itests/qtest/target/surefire/surefirebooter2827692084749430164.jar /home/hiveptest/35.232.67.223-hiveptest-0/apache-github-source-source/itests/qtest/target/surefire 2018-11-07T17-56-50_252-jvmRun1 surefire203521922645361632tmp surefire_04497948723045853634tmp [ERROR] Error occurred in starting fork, check output in log [ERROR] Process Exit Code: 1 {noformat} > Remove global lock in ObjectStore.setConf method > ------------------------------------------------ > > Key: HIVE-20740 > URL: https://issues.apache.org/jira/browse/HIVE-20740 > Project: Hive > Issue Type: Improvement > Reporter: Vihang Karajgaonkar > Assignee: Vihang Karajgaonkar > Priority: Major > Attachments: HIVE-20740.01.patch, HIVE-20740.02.patch, > HIVE-20740.04.patch, HIVE-20740.05.patch, HIVE-20740.06.patch, > HIVE-20740.08.patch, HIVE-20740.09.patch, HIVE-20740.10.patch > > > The ObjectStore#setConf method has a global lock which can block other > clients in concurrent workloads. > {code} > @Override > @SuppressWarnings("nls") > public void setConf(Configuration conf) { > // Although an instance of ObjectStore is accessed by one thread, there > may > // be many threads with ObjectStore instances. So the static variables > // pmf and prop need to be protected with locks. > pmfPropLock.lock(); > try { > isInitialized = false; > this.conf = conf; > this.areTxnStatsSupported = MetastoreConf.getBoolVar(conf, > ConfVars.HIVE_TXN_STATS_ENABLED); > configureSSL(conf); > Properties propsFromConf = getDataSourceProps(conf); > boolean propsChanged = !propsFromConf.equals(prop); > if (propsChanged) { > if (pmf != null){ > clearOutPmfClassLoaderCache(pmf); > if (!forTwoMetastoreTesting) { > // close the underlying connection pool to avoid leaks > pmf.close(); > } > } > pmf = null; > prop = null; > } > assert(!isActiveTransaction()); > shutdown(); > // Always want to re-create pm as we don't know if it were created by > the > // most recent instance of the pmf > pm = null; > directSql = null; > expressionProxy = null; > openTrasactionCalls = 0; > currentTransaction = null; > transactionStatus = TXN_STATUS.NO_STATE; > initialize(propsFromConf); > String partitionValidationRegex = > MetastoreConf.getVar(this.conf, > ConfVars.PARTITION_NAME_WHITELIST_PATTERN); > if (partitionValidationRegex != null && > !partitionValidationRegex.isEmpty()) { > partitionValidationPattern = > Pattern.compile(partitionValidationRegex); > } else { > partitionValidationPattern = null; > } > // Note, if metrics have not been initialized this will return null, > which means we aren't > // using metrics. Thus we should always check whether this is non-null > before using. > MetricRegistry registry = Metrics.getRegistry(); > if (registry != null) { > directSqlErrors = > Metrics.getOrCreateCounter(MetricsConstants.DIRECTSQL_ERRORS); > } > this.batchSize = MetastoreConf.getIntVar(conf, > ConfVars.RAWSTORE_PARTITION_BATCH_SIZE); > if (!isInitialized) { > throw new RuntimeException( > "Unable to create persistence manager. Check dss.log for details"); > } else { > LOG.debug("Initialized ObjectStore"); > } > } finally { > pmfPropLock.unlock(); > } > } > {code} > The {{pmfPropLock}} is a static object and it disallows any other new > connection to HMS which is trying to instantiate ObjectStore. We should > either remove the lock or reduce the scope of the lock so that it is held for > a very small amount of time. -- This message was sent by Atlassian JIRA (v7.6.3#76005)