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

Pushkar Raste edited comment on SOLR-9310 at 7/28/16 4:49 PM:
--------------------------------------------------------------

[~noble.paul] - Seems like with your patch we are matching fingerprint upto the 
version before node went down, whereas intent is to compare fingerprint after 
apply updates from the leader.  I modified {{PeerSync.handleUpdates()}} to not 
apply updates at all and fingerprint check still passed. Here is excerpt of 
change I am talking about 
{code}
  private boolean handleUpdates(ShardResponse srsp) {
    // we retrieved the last N updates from the replica
    boolean test = true;
    
    List<Object> updates = 
(List<Object>)srsp.getSolrResponse().getResponse().get("updates");

    SyncShardRequest sreq = (SyncShardRequest) srsp.getShardRequest();
    
    if(test) {
      return compareFingerprint(sreq);
    }
   ...
{code}

I am not sure if there is a way to write a test for my observation about 
fingerprint check happening on state before updates were applied and not after 
were applied.

This probably defies intent of comparing fingerprint after applying updates. 
Why not check it before asking for updates in the first place then.  




was (Author: praste):
[~noble.paul] - Seems like with your patch we are matching fingerprint upto the 
version before node went down, whereas intent is to compare fingerprint after 
apply updates from the leader.  I modified {{PeerSync.handleUpdates()}} to not 
apply updates at all and fingerprint check still passed. Here is excerpt of 
change I am talking about 
{code}
  private boolean handleUpdates(ShardResponse srsp) {
    // we retrieved the last N updates from the replica
    boolean test = true;
    
    List<Object> updates = 
(List<Object>)srsp.getSolrResponse().getResponse().get("updates");

    SyncShardRequest sreq = (SyncShardRequest) srsp.getShardRequest();
    
    if(test) {
      return compareFingerprint(sreq);
    }
   ...
{code}


This probably defies intent of comparing fingerprint after applying updates. 
Why not check it before asking for updates in the first place then. 

> PeerSync fails on a node restart due to IndexFingerPrint mismatch
> -----------------------------------------------------------------
>
>                 Key: SOLR-9310
>                 URL: https://issues.apache.org/jira/browse/SOLR-9310
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Pushkar Raste
>            Assignee: Noble Paul
>         Attachments: SOLR-9310.patch, SOLR-9310.patch, SOLR-9310.patch
>
>
> I found that Peer Sync fails if a node restarts and documents were indexed 
> while node was down. IndexFingerPrint check fails after recovering node 
> applies updates. 
> This happens only when node restarts and not if node just misses updates due 
> reason other than it being down.
> Please check attached patch for the test.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to