Vamsee Yarlagadda created SENTRY-1586:
-----------------------------------------

             Summary: [unit test] Race condition between metastore 
server/client could cause connection refused errors
                 Key: SENTRY-1586
                 URL: https://issues.apache.org/jira/browse/SENTRY-1586
             Project: Sentry
          Issue Type: Bug
          Components: Test
            Reporter: Vamsee Yarlagadda
            Assignee: Vamsee Yarlagadda


Test failure:
{code}
Running org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationEnd2End
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 10.778 sec <<< 
FAILURE! - in org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationEnd2End
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationEnd2End  Time elapsed: 
10.776 sec  <<< ERROR!
java.lang.reflect.UndeclaredThrowableException: null
        at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1809)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.startHiveAndMetastore(TestHDFSIntegrationBase.java:462)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.startHiveAndMetastore(TestHDFSIntegrationBase.java:458)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.setup(TestHDFSIntegrationBase.java:435)
        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:483)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
        at 
org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:62)
Caused by: org.apache.hadoop.hive.metastore.api.MetaException: Could not 
connect to meta store using any of the URIs provided. Most recent failure: 
org.apache.thrift.transport.TTransportException: java.net.ConnectException: 
Connection refused
        at org.apache.thrift.transport.TSocket.open(TSocket.java:226)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:462)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:242)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:187)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase$3.run(TestHDFSIntegrationBase.java:551)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase$3.run(TestHDFSIntegrationBase.java:462)
        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:1796)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.startHiveAndMetastore(TestHDFSIntegrationBase.java:462)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.startHiveAndMetastore(TestHDFSIntegrationBase.java:458)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.setup(TestHDFSIntegrationBase.java:435)
        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:483)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
        at 
org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:62)
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at 
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
        at 
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at 
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.thrift.transport.TSocket.open(TSocket.java:221)
        ... 21 more

        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:510)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:242)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:187)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase$3.run(TestHDFSIntegrationBase.java:551)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase$3.run(TestHDFSIntegrationBase.java:462)
        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:1796)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.startHiveAndMetastore(TestHDFSIntegrationBase.java:462)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.startHiveAndMetastore(TestHDFSIntegrationBase.java:458)
        at 
org.apache.sentry.tests.e2e.hdfs.TestHDFSIntegrationBase.setup(TestHDFSIntegrationBase.java:435)
        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:483)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
        at 
org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:62)
{code}

I was able to repro the issue by running the test multiple times

{code}
2017-01-03 17:15:41,648 (main) [WARN - 
org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:2811)] HiveConf 
of name hive.sentry.conf.url does not exist
2017-01-03 17:15:41,653 (main) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:389)]
 Trying to connect to metastore with URI thrift://localhost:64116
2017-01-03 17:15:41,680 (main) [WARN - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:472)]
 Failed to connect to the MetaStore Server...
2017-01-03 17:15:41,681 (main) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:503)]
 Waiting 1 seconds before next connection attempt.
2017-01-03 17:15:42,682 (main) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:389)]
 Trying to connect to metastore with URI thrift://localhost:64116
2017-01-03 17:15:42,683 (main) [WARN - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:472)]
 Failed to connect to the MetaStore Server...
2017-01-03 17:15:42,684 (main) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:503)]
 Waiting 1 seconds before next connection attempt.
2017-01-03 17:15:43,688 (main) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:389)]
 Trying to connect to metastore with URI thrift://localhost:64116
2017-01-03 17:15:43,689 (main) [WARN - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:472)]
 Failed to connect to the MetaStore Server...
2017-01-03 17:15:43,689 (main) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:503)]
 Waiting 1 seconds before next connection attempt.
2017-01-03 17:15:43,784 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.MetaStoreDirectSql.<init>(MetaStoreDirectSql.java:135)]
 Using direct SQL, underlying DB is DERBY
2017-01-03 17:15:43,785 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:316)] 
Initialized ObjectStore
2017-01-03 17:15:43,911 (pool-25-thread-1) [WARN - 
org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:7207)]
 Version information not found in metastore. hive.metastore.schema.verification 
is not enabled so recording the schema version 1.1.0
2017-01-03 17:15:43,981 (pool-25-thread-1) [WARN - 
org.apache.hadoop.hive.metastore.ObjectStore.getDatabase(ObjectStore.java:621)] 
Failed to get database default, returning NoSuchObjectException
2017-01-03 17:15:44,091 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultRoles_core(HiveMetaStore.java:726)]
 Added admin role in metastore
2017-01-03 17:15:44,094 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultRoles_core(HiveMetaStore.java:735)]
 Added public role in metastore
2017-01-03 17:15:44,177 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.addAdminUsers_core(HiveMetaStore.java:775)]
 No user is added in admin role, since config is empty
2017-01-03 17:15:44,206 (pool-25-thread-1) [INFO - 
org.apache.sentry.binding.hive.conf.HiveAuthzConf.<init>(HiveAuthzConf.java:159)]
 DefaultFS: file:///
2017-01-03 17:15:44,233 (pool-25-thread-1) [INFO - 
org.apache.sentry.binding.hive.conf.HiveAuthzConf.<init>(HiveAuthzConf.java:162)]
 DefaultFS: file:///
2017-01-03 17:15:44,303 (pool-25-thread-1) [WARN - 
org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:2811)] HiveConf 
of name hive.sentry.conf.url does not exist
2017-01-03 17:15:44,329 (pool-25-thread-1) [INFO - 
org.apache.sentry.binding.hive.conf.HiveAuthzConf.<init>(HiveAuthzConf.java:159)]
 DefaultFS: file:///
2017-01-03 17:15:44,361 (pool-25-thread-1) [INFO - 
org.apache.sentry.binding.hive.conf.HiveAuthzConf.<init>(HiveAuthzConf.java:162)]
 DefaultFS: file:///
2017-01-03 17:15:44,580 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:6411)]
 Starting DB backed MetaStore Server with SetUGI enabled
2017-01-03 17:15:44,583 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:6491)]
 Started the new metaserver on port [64116]...
2017-01-03 17:15:44,583 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:6493)]
 Options.minWorkerThreads = 5
2017-01-03 17:15:44,583 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:6495)]
 Options.maxWorkerThreads = 1000
2017-01-03 17:15:44,583 (pool-25-thread-1) [INFO - 
org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:6497)]
 TCP keepalive = true
2017-01-03 17:15:44,692 (main) [WARN - 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1799)]
 PriviledgedActionException as:admin1 (auth:SIMPLE) 
cause:MetaException(message:Could not connect to meta store using any of the 
URIs provided. Most recent failure: 
org.apache.thrift.transport.TTransportException: java.net.ConnectException: 
Connection refused
        at org.apache.thrift.transport.TSocket.open(TSocket.java:226)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:462)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:242)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:187)
        at org.apache.sentry.tests.e2e.hive.Context$1.run(Context.java:266)
        at org.apache.sentry.tests.e2e.hive.Context$1.run(Context.java:263)
        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:1796)
        at 
org.apache.sentry.tests.e2e.hive.Context.getMetaStoreClient(Context.java:263)
        at 
org.apache.sentry.tests.e2e.metastore.TestAuthorizingObjectStore.setup(TestAuthorizingObjectStore.java:71)
        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:483)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at 
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:275)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:149)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
        at 
org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
        at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
        at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at 
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
        at 
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at 
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.thrift.transport.TSocket.open(TSocket.java:221)
        ... 37 more
)
2017-01-03 17:15:44,693 (main) [INFO - 
org.apache.sentry.tests.e2e.hive.AbstractTestWithStaticConfiguration.clearAfterPerTest(AbstractTestWithStaticConfiguration.java:592)]
 AbstractTestStaticConfiguration clearAfterPerTest
2017-01-03 17:15:44,708 (main) [INFO - 
org.apache.sentry.service.thrift.SentryService.stop(SentryService.java:277)] 
Attempting to stop...
2017-01-03 17:15:44,708 (main) [INFO - 
org.apache.sentry.service.thrift.SentryService.stop(SentryService.java:279)] 
Attempting to stop sentry thrift service...
2017-01-03 17:15:44,709 (main) [INFO - 
org.apache.sentry.service.thrift.SentryService.stop(SentryService.java:302)] 
Sentry web service is already stopped...
2017-01-03 17:15:44,709 (main) [INFO - 
org.apache.sentry.service.thrift.SentryService.stop(SentryService.java:307)] 
Stopped...
{code}

It looks like Hive Metastore startup is having a race issue with metastore 
client trying to connect to it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to