[ 
https://issues.apache.org/jira/browse/LUCENE-5139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13720767#comment-13720767
 ] 

Shai Erera commented on LUCENE-5139:
------------------------------------

Not exactly. In your app, you control the commit() to both indexes. And 
therefore you "know" that after commit the two directories agree on their state 
and can refresh a single SearcherTaxoManager.

This might fail though if the commit to one index succeeded, and failed to the 
other (e.g. the machine crashed). For that reason, we always commit taxo first, 
because it's ok if it contains more ordinals than are currently used by the 
search index.

If you're not replacing your index content (i.e. iw.deleteAll() + 
tw.replaceTaxo()), you can do the following (by the same object/thread):

* Call iw.commit()
* Call tw.commit()
* Call searcherTaxoManager.refresh()

If you call refresh() from a different thread, you're still not safe, because 
it might be refreshing after iw committed, but before tw.
                
> ArrayIndexOutOfBoundsException in FacetsAccumulator.accumulate while indexing
> -----------------------------------------------------------------------------
>
>                 Key: LUCENE-5139
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5139
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: modules/facet
>    Affects Versions: 4.4
>         Environment: Ubuntu 64 bit
>            Reporter: Rob Audenaerde
>         Attachments: testfacetindexing.zip
>
>
> It is a hard to reproduce problem, but I see it from time to time. I am 
> indexing some 100k documents and while I am doing that, I use the search and 
> facet module. 
> In some cases, I get an AIOOBE on the FacetAccumulator.accumulate method. See 
> for example this little stacktrace:
> java.lang.ArrayIndexOutOfBoundsException: 1400222
>      at 
> org.apache.lucene.facet.search.FastCountingFacetsAggregator.aggregate(FastCountingFacetsAggregator.java:87)
>      at 
> org.apache.lucene.facet.search.FacetsAccumulator.accumulate(FacetsAccumulator.java:167)
>      at 
> org.apache.lucene.facet.search.FacetsCollector.getFacetResults(FacetsCollector.java:214)
>      at ...
> Some more detail:
> I have a index that is being written to by an IndexWriter. The index is 
> searched by a SearcherManager that uses the same Directory. The 
> searcherManager has a scheduled maybeRefresh each 1000ms. When refreshing, I 
> also check whether the taxonomy has changed. If so, I replace it by the new 
> one. I use this code:
> {code}
> TaxonomyReader newReader = TaxonomyReader.openIfChanged( this.taxoReader );
> if ( newReader != null )
> {
>       this.taxoReader = newReader;
>       LOG.info( "Reopening taxonomyReader because it has changed!" );
> }
> {code}
> I will try to make it more reproducable; but maybe someone already has an 
> idea on what might trigger this.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to