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

Shai Erera commented on LUCENE-3703:
------------------------------------

Thanks for reviewing Doron !

bq. CHANGES: rephrase the e.g. part like this: (e.g. if application called 
incRef/decRef).

Will fix, thanks.

bq. LTC.newDirectory() instead of new RAMDirectory()

I wrote a comment in the test "// no need for random directories here" -- it's 
really not related to any Directory.

bq. text messages in the asserts.

added.

bq. Would it be simpler to make close() synchronized (just like IR.close())

It would, but then it'd mean everyone who calls close() will wait, even if the 
TR is already closed. The code now is a nice way to only block threads which 
discover that TR is not already closed. I don't think it's that critical (how 
often do you call close() anyway), so I don't mind to keep it / make the entire 
method synchronized.

bq. Would it - again - be simpler to keep maintaining the ref-counts in the 
internal IR

I think that the code would look odd -- we'll ir.openIfChanged, then call 
incRef() until newIR.getRefCount() == oldIR.getRefCount(). And I'm not sure how 
will that play with someone calling concurrently to DTR.decRef() ... it might 
be a mess. Even though we duplicate ref counting logic, I think it's safer, but 
perhaps I misunderstood what you meant?

bq. Perhaps should document about it in CHANGES entry.

I will mention it as well.
                
> DirectoryTaxonomyReader.refresh misbehaves with ref counts
> ----------------------------------------------------------
>
>                 Key: LUCENE-3703
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3703
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: modules/facet
>            Reporter: Shai Erera
>            Assignee: Shai Erera
>             Fix For: 3.6, 4.0
>
>         Attachments: LUCENE-3703.patch
>
>
> DirectoryTaxonomyReader uses the internal IndexReader in order to track its 
> own reference counting. However, when you call refresh(), it reopens the 
> internal IndexReader, and from that point, all previous reference counting 
> gets lost (since the new IndexReader's refCount is 1).
> The solution is to track reference counting in DTR itself. I wrote a simple 
> unit test which exposes the bug (will be attached with the patch shortly).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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