Shai Erera created LUCENE-5885:
----------------------------------

             Summary: 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