[ https://issues.apache.org/jira/browse/FLINK-6493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16112877#comment-16112877 ]
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_r131167537 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/state/RegisteredOperatorBackendStateMetaInfo.java --- @@ -175,14 +176,17 @@ 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()) + && (Objects.equals(partitionStateSerializer, snapshot.getPartitionStateSerializer())) --- End diff -- These extra most-outer wrapping parenthesis are redundant. I'll remove them when merging. > 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)