Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-28035

ConnectionFactory.createConnection does not work with anything except ThreadPoolExecutor

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None

    Description

      This looks like a regression where org.apache.hadoop.hbase.client.ConnectionFactory#createConnection(org.apache.hadoop.conf.Configuration, java.util.concurrent.ExecutorService) even though supports ExecutorService but has stopped working for ForkJoinPool and throws java.lang.ClassCastException: java.util.concurrent.ForkJoinPool cannot be cast to java.util.concurrent.ThreadPoolExecutor, possibly due to HBASE-22244

      I have been able to write a UT to verify the same and ran it on a branch not having above-mentioned change (HBASE-22244) i.e. branch-2.1 where the test passes while for branch-2, having this change, the test fails with following:

      [INFO] -------------------------------------------------------
      [INFO]  T E S T S
      [INFO] -------------------------------------------------------
      [INFO] Running org.apache.hadoop.hbase.client.TestConnectionFactoryExecService
      [ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 16.635 s <<< FAILURE! - in org.apache.hadoop.hbase.client.TestConnectionFactoryExecService
      [ERROR] org.apache.hadoop.hbase.client.TestConnectionFactoryExecService.testConnectionWithFJP  Time elapsed: 0.268 s  <<< ERROR!
      java.io.IOException: java.lang.reflect.UndeclaredThrowableException
              at org.apache.hadoop.hbase.client.ConnectionFactory.lambda$createConnection$1(ConnectionFactory.java:235)
              at org.apache.hadoop.hbase.trace.TraceUtil.trace(TraceUtil.java:216)
              at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218)
              at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:160)
              at org.apache.hadoop.hbase.client.TestConnectionFactoryExecService.testConnectionWithFJP(TestConnectionFactoryExecService.java:83)
              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:498)
              at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
              at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
              at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
              at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
              at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
              at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
              at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
              at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
              at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
              at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
              at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
              at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
              at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
              at org.apache.hadoop.hbase.SystemExitRule$1.evaluate(SystemExitRule.java:39)
              at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299)
              at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293)
              at java.util.concurrent.FutureTask.run(FutureTask.java:266)
              at java.lang.Thread.run(Thread.java:748)
      Caused by: java.lang.reflect.UndeclaredThrowableException
              at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1956)
              at org.apache.hadoop.hbase.security.User$SecureHadoopUser.runAs(User.java:320)
              at org.apache.hadoop.hbase.client.ConnectionFactory.lambda$createConnection$1(ConnectionFactory.java:232)
              ... 29 more
      Caused by: java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
              at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
              at org.apache.hadoop.hbase.client.ConnectionFactory.lambda$null$0(ConnectionFactory.java:233)
              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:1938)
              ... 31 more
      Caused by: java.lang.ClassCastException: java.util.concurrent.ForkJoinPool cannot be cast to java.util.concurrent.ThreadPoolExecutor
              at org.apache.hadoop.hbase.client.ConnectionImplementation.<init>(ConnectionImplementation.java:294)
              at org.apache.hadoop.hbase.client.ConnectionImplementation.<init>(ConnectionImplementation.java:281)
              ... 39 more
      
      [INFO] 
      [INFO] Results:
      [INFO] 
      [ERROR] Errors: 
      [ERROR]   TestConnectionFactoryExecService.testConnectionWithFJP:83 » IO java.lang.reflect.UndeclaredThrowableException
      [INFO] 
      [ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0
      
      

      Also it worth noting that the issue does not exist in master, i think its because of HBASE-21723 which removes `ConnectionImplementation` from master. 

       

       

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              nihaljain.cs Nihal Jain
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: