[ https://issues.apache.org/jira/browse/IGNITE-9160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16605634#comment-16605634 ]
Nikolay Izhikov commented on IGNITE-9160: ----------------------------------------- Let's add tests for each equals method that was edited. We need tests: 1. That fails without a patch. 2. That demonstrates that equals still works properly. > FindBugs: NPE and CCE on equals() methods > ----------------------------------------- > > Key: IGNITE-9160 > URL: https://issues.apache.org/jira/browse/IGNITE-9160 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: 2.6 > Reporter: Nikolai Kulagin > Assignee: Nikolai Kulagin > Priority: Minor > Labels: newbie > Fix For: 2.7 > > > Some classes have Incorrect equals() method: > {code:java} > // GridDhtPartitionMap.java > @Override public boolean equals(Object o) { > if (this == o) > return true; > GridDhtPartitionMap other = (GridDhtPartitionMap)o; > return other.nodeId.equals(nodeId) && other.updateSeq == updateSeq; > }{code} > In this case, we can get CCE > {code:java} > GridDhtPartitionMap gridDhtPartMap = new GridDhtPartitionMap(); > gridDhtPartMap.equals(new Object()); > -------------------------------------------------------------- > Exception in thread "main" java.lang.ClassCastException: java.lang.Object > cannot be cast to > org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap > at > org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap.equals(GridDhtPartitionMap.java:319) > at ru.zzzadruga.Ignite.main(Ignite.java:9){code} > Or NPE > {code:java} > GridDhtPartitionMap gridDhtPartMap = new GridDhtPartitionMap(); > gridDhtPartMap.equals(null); > -------------------------------------------------------------- > Exception in thread "main" java.lang.NullPointerException > at > org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap.equals(GridDhtPartitionMap.java:321) > at ru.zzzadruga.Ignite.main(Ignite.java:9){code} > The following code will prevent this > {code:java} > if (o == null || getClass() != o.getClass()) > return false;{code} > + List of classes with similar problems: + > * *GridTopic$T1-T8* - NPE > * *GridCachePreloadLifecycleAbstractTest -* NPE > * *GridDhtPartitionFullMap -* NPE and CCE > * *GridDhtPartitionMap -* NPE and CCE > * *OptimizedMarshallerSelfTest -* NPE and CCE > * *GatewayProtectedCacheProxy -* NPE and CCE > * *GridNearOptimisticTxPrepareFuture -* NPE and CCE > * *GridCacheDistributedQueryManager -* NPE and CCE > * *GridServiceMethodReflectKey -* NPE and CCE > * *GridListSetSelfTest -* NPE and CCE > * *GridTestKey -* NPE and CCE > * *GridCacheMvccCandidate -* CCE > * *GridDhtPartitionExchangeId -* CCE > * *GridTuple6 -* CCE -- This message was sent by Atlassian JIRA (v7.6.3#76005)