[
https://issues.apache.org/jira/browse/SOLR-12374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16495231#comment-16495231
]
Yonik Seeley commented on SOLR-12374:
-------------------------------------
The CHANGES for 7.4 has:
* SOLR-12374: SnapShooter.getIndexCommit can forget to decref the searcher;
though it's not clear in practice when.
(David Smiley)
But it's missing on the master branch...
> Add SolrCore.withSearcher(lambda accepting SolrIndexSearcher)
> -------------------------------------------------------------
>
> Key: SOLR-12374
> URL: https://issues.apache.org/jira/browse/SOLR-12374
> Project: Solr
> Issue Type: Improvement
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: David Smiley
> Assignee: David Smiley
> Priority: Minor
> Fix For: 7.4
>
> Attachments: SOLR-12374.patch
>
>
> I propose adding the following to SolrCore:
> {code:java}
> /**
> * Executes the lambda with the {@link SolrIndexSearcher}. This is more
> convenience than using
> * {@link #getSearcher()} since there is no ref-counting business to worry
> about.
> * Example:
> * <pre class="prettyprint">
> * IndexReader reader =
> h.getCore().withSearcher(SolrIndexSearcher::getIndexReader);
> * </pre>
> */
> @SuppressWarnings("unchecked")
> public <R> R withSearcher(Function<SolrIndexSearcher,R> lambda) {
> final RefCounted<SolrIndexSearcher> refCounted = getSearcher();
> try {
> return lambda.apply(refCounted.get());
> } finally {
> refCounted.decref();
> }
> }
> {code}
> This is a nice tight convenience method, avoiding the clumsy RefCounted API
> which is easy to accidentally incorrectly use – see
> https://issues.apache.org/jira/browse/SOLR-11616?focusedCommentId=16477719&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16477719
> I guess my only (small) concern is if hypothetically you might make the
> lambda short because it's easy to do that (see the one-liner example above)
> but the object you return that you're interested in (say IndexReader) could
> potentially become invalid if the SolrIndexSearcher closes. But I think/hope
> that's impossible normally based on when this getSearcher() used? I could at
> least add a warning to the docs.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]