Noticed while looking at https://issues.apache.org/jira/browse/SOLR-7859
that wall time recorded as commit data on a commit to check if replication
needs to be done. In IndexFetcher, there is this code:

      if (!forceReplication &&
IndexDeletionPolicyWrapper.getCommitTimestamp(commit) ==
latestVersion) {
        //master and slave are already in sync just return
LOG.info("Slave in sync with master.");
        successfulInstall = true;
        return true;
      }

We are checking wall times across machines to check if we are in sync? That
sounds wrong.. Or I am mistaken here? Why can't we just check generations?
Another place below checks both generations and timestamps to see if a full
copy is needed..

      // if the generation of master is older than that of the slave ,
it means they are not compatible to be copied      // then a new index
directory to be created and all the files need to be copied
boolean isFullCopyNeeded = IndexDeletionPolicyWrapper
          .getCommitTimestamp(commit) >= latestVersion
          || commit.getGeneration() >= latestGeneration || forceReplication;

Reply via email to