[
https://issues.apache.org/jira/browse/SOLR-6246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14102604#comment-14102604
]
Hoss Man commented on SOLR-6246:
--------------------------------
bq. SolrSuggester adds close hooks but that doesn't work in this case. The
reason is that the close hooks gets called only after the new core gets
created....
bq. I experimented by adding a closeHook which gets called before the new
SolrCore gets created. At least the core now reloads correctly.
Hmm, yeah ... the lifecycle implications and general API changes involved in
fixing this bug are definitely tricky ... i'm not eager to rush into adding a
new method to CloseHook. If we do add something, i think it might be better to
consider a general "ReloadHook" that could inform components when a SolrCore is
about to be reloaded, and then followup with the new SolrCore instance once
it's created, maybe something like...
{code}
public abstract ReloadHook {
public abstract void preReload(SolrCore oldCore);
public abstract void postReload(SolrCore oldCore, SolrCore newCore);
}
{code}
bq. This approach has one major disadvantage - There will be a short period
where the suggester won't work since we close it before the new core has been
registered.
One way we might be able to mitigate that is by: a) changing the lock factory
we use on the suggester Directory; 2) subclassing AnalyzingInfixSuggester to
be aware of the reloading taking place.
The idea being that when AnalyzingInfixLookupFactory initially constructs the
FSDirectory, it could explicitly configure something like the
SingleInstanceLockFactory - that should allow 2 instances of
AnalyzingInfixSuggester (in the same JVM) open it at the same time -- but then,
to prevent corruption risk if both Suggester instances try to write to that
Directory, we need to subclass them and customize them to know when the
"reload" is taking place, so the old one blocks itself from doing anymore
writes.
so suggestions would still be available while waiting for the new core to
start, but not updates to the dictionary.
----
This is definitely hairy.
> Core fails to reload when AnalyzingInfixSuggester is used as a Suggester
> ------------------------------------------------------------------------
>
> Key: SOLR-6246
> URL: https://issues.apache.org/jira/browse/SOLR-6246
> Project: Solr
> Issue Type: Bug
> Affects Versions: 4.8, 4.8.1, 4.9
> Reporter: Varun Thacker
> Fix For: 5.0, 4.10
>
> Attachments: SOLR-6246-test.patch, SOLR-6246-test.patch,
> SOLR-6246.patch
>
>
> LUCENE-5477 - added near-real-time suggest building to
> AnalyzingInfixSuggester. One of the changes that went in was a writer is
> persisted now to support real time updates via the add() and update() methods.
> When we call Solr's reload command, a new instance of AnalyzingInfixSuggester
> is created. When trying to create a new writer on the same Directory a lock
> cannot be obtained and Solr fails to reload the core.
> Also when AnalyzingInfixLookupFactory throws a RuntimeException we should
> pass along the original message.
> I am not sure what should be the approach to fix it. Should we have a
> reloadHook where we close the writer?
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]