[ 
https://issues.apache.org/jira/browse/SOLR-14541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17129233#comment-17129233
 ] 

Ilan Ginzburg commented on SOLR-14541:
--------------------------------------

Changing {{equals()}} without changing {{hashCode()}} is incorrect as per the 
{{hashCode()}} contract from the Javadoc:

{{If two objects are equal according to the equals(Object) method, then calling 
the hashCode method on each of the two objects must produce the same integer 
result}}

It's possible that existing code doesn't put these objects in maps but there's 
no guarantee this will not be changed going forward, bugs might then be really 
tricky to find.

Why not implement a very simple hashCode() method for these classes instead:
{code:java}
  @Override
  public int hashCode() {
    throw new RuntimeException("hash code is not used");
  }
{code}

> Ensure classes that implement equals implement hashCode or suppress warnings
> ----------------------------------------------------------------------------
>
>                 Key: SOLR-14541
>                 URL: https://issues.apache.org/jira/browse/SOLR-14541
>             Project: Solr
>          Issue Type: Sub-task
>            Reporter: Erick Erickson
>            Assignee: Erick Erickson
>            Priority: Major
>
> While looking at warnings, I found that the following classes generate this 
> warning:
> *overrides equals, but neither it nor any superclass overrides hashCode 
> method*
> I can suppress the warning, but this has been a source of errors in the past 
> so I'm reluctant to just do that blindly.
> NOTE: The Lucene one should probably be it's own Jira if it's going to have 
> hashCode implemented, but here for triage.
> What I need for each method is for someone who has a clue about that 
> particular code to render an opinion that we can safely suppress the warning 
> or to provide a hashCode method.
> Some of these have been here for a very long time and were implemented by 
> people no longer active...
> lucene/suggest/src/java/org/apache/lucene/search/spell/LuceneLevenshteinDistance.java:39
> solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java:34
>  solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java:26
>  solr/solrj/src/java/org/apache/solr/common/cloud/DocCollection.java:49
> solr/core/src/java/org/apache/solr/cloud/rule/Rule.java:277
>  solr/core/src/java/org/apache/solr/pkg/PackageAPI.java:177
>  solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java:31
>  
> Noble Paul says it's OK to suppress warnings for these:
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/VersionedData.java:31
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AutoScalingConfig.java:61
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AutoScalingConfig.java:150
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AutoScalingConfig.java:252
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/AutoScalingConfig.java:45
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Policy.java:73
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/Preference.java:32
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaInfo.java:39
>  
> Joel Bernstein says it's OK to suppress warnings for these:
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/cloud/autoscaling/ReplicaCount.java:27
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpression.java:25
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionNamedParameter.java:23
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/CloudSolrStream.java:467
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/DeepRandomStream.java:417
>  
> solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamExpressionValue.java:22
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to