You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Steve Vaughan (Jira)" <ji...@apache.org> on 2023/02/23 03:05:00 UTC

[jira] [Commented] (HDFS-16932) Mockito causing ClassCastException

    [ 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: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org