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;