In the process of upgrading to 4.1 from 3.6, I've noticed that our
master servers do not show any commit points available until after a
new commit happens. So, for static indexes, replication doesn't happen
and for dynamic indexes, we have to wait until an incremental update
of master for slaves to see any commits.

Tracing through the code, it looks like the change that may have
effected us was part of SOLR-3911 [1], specifically commenting out the
initialization of the newIndexWriter in the replicateAfterStartup
block [2]:

// TODO: perhaps this is no longer necessary then?
// core.getUpdateHandler().newIndexWriter(true);

I'm guessing this is commented out because it is assumed that
indexCommitPoint was going to be set by that block, but when a slave
requests commits, that goes back to
core.getDeletionPolicy().getCommits() to fetch the list of commits. If
no indexWriter has been initialized, then, as far as I can tell,
IndexDeletionPolicyWrapper#onInit will not have been called and there
will be no commits available.

Is there something in the code or configuration that we may be missing
that should be initializing the commits for replication or should we
just try uncommenting that line in ReplicationHandler?

Thanks!

--Gregg

Gregg Donovan
Senior Software Engineer, Etsy.com
gr...@etsy.com


[1]
https://issues.apache.org/jira/browse/SOLR-3911
https://issues.apache.org/jira/secure/attachment/12548596/SOLR-3911.patch

[2]
http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java?annotate=1420992&diff_format=h&pathrev=1420992#l880

Reply via email to