[ 
https://issues.apache.org/jira/browse/HBASE-28035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nihal Jain updated HBASE-28035:
-------------------------------
    Description: 
This looks like a regression where 
[{{org.apache.hadoop.hbase.client.ConnectionFactory#createConnection(org.apache.hadoop.conf.Configuration,
 
java.util.concurrent.ExecutorService)}}|https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionFactory.java#L161]
 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:

{code:java}
[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

{code}


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

 

 

  was:
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 since HBASE-22244), has stopped working for `ForkJoinPool` and throws 
`java.lang.ClassCastException: java.util.concurrent.ForkJoinPool cannot be cast 
to java.util.concurrent.ThreadPoolExecutor`

I have been able to write a UT to verify the same and ran it on a branch not 
having above change i.e. branch-2.1 where the test passes while for branch-2, 
having this change, the test fails. Also it worth noting that the issue does 
not exist in master, i think its because of HBASE-21723 which removes 
`ConnectionImplementation` from master. 

 

 


> ConnectionFactory.createConnection does not work with anything except 
> ThreadPoolExecutor
> ----------------------------------------------------------------------------------------
>
>                 Key: HBASE-28035
>                 URL: https://issues.apache.org/jira/browse/HBASE-28035
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Nihal Jain
>            Priority: Major
>
> This looks like a regression where 
> [{{org.apache.hadoop.hbase.client.ConnectionFactory#createConnection(org.apache.hadoop.conf.Configuration,
>  
> java.util.concurrent.ExecutorService)}}|https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionFactory.java#L161]
>  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:
> {code:java}
> [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
> {code}
> Also it worth noting that the issue does not exist in master, i think its 
> because of HBASE-21723 which removes `ConnectionImplementation` from master. 
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to