[
https://issues.apache.org/jira/browse/HDFS-16932?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17692461#comment-17692461
]
Steve Vaughan commented on HDFS-16932:
--------------------------------------
It looks like the problem is caused by Mockito Spy (doAnswer on getBlocks
within TestBalancer) that then calls another handler of Mockito Spy.
> Mockito causing ClassCastException
> ----------------------------------
>
> Key: HDFS-16932
> URL: https://issues.apache.org/jira/browse/HDFS-16932
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: hdfs
> Affects Versions: 3.4.0
> Environment: Running in the Hadoop development environment in docker,
> running mvn.
> Reporter: Steve Vaughan
> Priority: Major
>
> Running tests in TestBalancerRPCDelay fails because of ClassCastExceptions
> introduced by Mockito. As an example, in this stack trace note that the
> RedundancyMonitor is calling "isRunning" but incorrectly ends up being routed
> to getBlocks (which returns BlocksWithLocations) via TestBalancer and a
> Mockito Spy. This ultimately is reported as a failure during the shutdown
> process.
> {{Exception in thread "RedundancyMonitor" java.lang.ClassCastException:
> java.lang.Boolean cannot be cast to
> org.apache.hadoop.hdfs.server.protocol.BlocksWithLocations}}{{ at
> org.apache.hadoop.hdfs.server.balancer.TestBalancer$2.answer(TestBalancer.java:1865)}}{{
> at
> org.apache.hadoop.hdfs.server.balancer.TestBalancer$2.answer(TestBalancer.java:1858)}}{{
> at
> org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:39)}}{{
> at
> org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:96)}}{{
> at
> org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)}}{{
> at
> org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:35)}}{{
> at
> org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:61)}}{{
> at
> org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:49)}}{{
> at
> org.mockito.internal.creation.bytebuddy.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptSuperCallable(MockMethodInterceptor.java:108)}}{{
> at
> org.apache.hadoop.hdfs.server.namenode.FSNamesystem$MockitoMock$1070381809.isRunning(Unknown
> Source)}}{{ at
> org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$RedundancyMonitor.run(BlockManager.java:5155)}}{{
> at java.lang.Thread.run(Thread.java:750)}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]