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

Shai Erera commented on LUCENE-5885:
------------------------------------

I had a chat w/ Mike about this - we think that perhaps it's better if 
MergeScheduler doesn't implement close as well as any reference counting. Since 
IndexWriter either waits or aborts merges itself, there's nothing to close() 
about CMS. And if you have a custom MS, which e.g. uses a ThreadPool, you can 
implement a close() or ref-counting mechanism yourself.

> MergeScheduler should not implement Closeable
> ---------------------------------------------
>
>                 Key: LUCENE-5885
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5885
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/index
>            Reporter: Shai Erera
>
> MergeScheduler implements Closeable and IndexWriter calls ms.close() when 
> it's closed. But MergeScheduler can be shared between several writers, which 
> means closing it by any particular writer is wrong. We should rather 
> implement some ref-counting logic such that each IW will call incRef() in the 
> ctor, and decRef() on close(), and MergeScheduler will truly close when the 
> ref-count hits 0.
> As it is now, if you share a MergeScheduler between writers and close() does 
> something terminating, I doubt if it really works.
> Also, when I look at ConcurrentMergeScheduler.close(), it calls sync() which 
> joins all MergeThreads. But if that CMS instance is shared between few IWs, 
> doesn't it mean that a single IW calling close() waits on MergeThreads that 
> execute merges of other IWs!?!? This seems ... wrong?



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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

Reply via email to