[
https://issues.apache.org/jira/browse/FLINK-6493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16112329#comment-16112329
]
ASF GitHub Bot commented on FLINK-6493:
---------------------------------------
Github user tzulitai commented on a diff in the pull request:
https://github.com/apache/flink/pull/4328#discussion_r131068854
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/state/RegisteredOperatorBackendStateMetaInfo.java
---
@@ -175,14 +175,19 @@ public boolean equals(Object obj) {
return false;
}
+ if (!(obj instanceof Snapshot)) {
+ return false;
+ }
+
+ Snapshot snapshot = (Snapshot)obj;
+
// need to check for nulls because serializer and
config snapshots may be null on restore
- return (obj instanceof Snapshot)
- && name.equals(((Snapshot) obj).getName())
- && assignmentMode.equals(((Snapshot)
obj).getAssignmentMode())
- && ((partitionStateSerializer == null &&
((Snapshot) obj).getPartitionStateSerializer() == null)
- ||
partitionStateSerializer.equals(((Snapshot) obj).getPartitionStateSerializer()))
- && ((partitionStateSerializerConfigSnapshot ==
null && ((Snapshot) obj).getPartitionStateSerializerConfigSnapshot() == null)
- ||
partitionStateSerializerConfigSnapshot.equals(((Snapshot)
obj).getPartitionStateSerializerConfigSnapshot()));
+ return name.equals(snapshot.getName())
+ &&
assignmentMode.equals(snapshot.getAssignmentMode())
+ && ((partitionStateSerializer == null &&
(snapshot.getPartitionStateSerializer() == null)
--- End diff --
That makes sense. Haven't performed the merge yet, @zhangminglei would you
like to address this comment?
> Ineffective null check in RegisteredOperatorBackendStateMetaInfo#equals()
> -------------------------------------------------------------------------
>
> Key: FLINK-6493
> URL: https://issues.apache.org/jira/browse/FLINK-6493
> Project: Flink
> Issue Type: Bug
> Components: State Backends, Checkpointing
> Reporter: Ted Yu
> Assignee: mingleizhang
> Priority: Minor
> Fix For: 1.4.0
>
>
> {code}
> && ((partitionStateSerializer == null && ((Snapshot)
> obj).getPartitionStateSerializer() == null)
> || partitionStateSerializer.equals(((Snapshot)
> obj).getPartitionStateSerializer()))
> && ((partitionStateSerializerConfigSnapshot == null && ((Snapshot)
> obj).getPartitionStateSerializerConfigSnapshot() == null)
> || partitionStateSerializerConfigSnapshot.equals(((Snapshot)
> obj).getPartitionStateSerializerConfigSnapshot()));
> {code}
> The null check for partitionStateSerializer /
> partitionStateSerializerConfigSnapshot is in combination with another clause.
> This may lead to NPE in the partitionStateSerializer.equals() call.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)