You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Shai Erera (JIRA)" <ji...@apache.org> on 2013/07/26 07:59:53 UTC

[jira] [Updated] (LUCENE-4876) IndexWriterConfig.clone should clone the MergeScheduler

     [ https://issues.apache.org/jira/browse/LUCENE-4876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Shai Erera updated LUCENE-4876:
-------------------------------

    Attachment: LUCENE-4876.patch

I thought it will be an easy change, but some tests failed, as they relied on the private cloning. I was able to fix all of them except TestSnapshotDeletionPolicy.testRollbackToOldSnapshot.

I don't know if the test was always buggy, or SDP is buggy, but here's what happens if I don't clone IWC (which I put a nocommit on):

* First IW instance is created with the non-cloned SDP, the snapshots (IndexCommit instances) match the ones in the SDP instance. That is, assertSame passes.

* Second time we create an IW instance, not cloning IWC, SDP.onInit receives new IndexCommit instances, and swaps them in its map, *thereby changing* the SDP.commits instances vs the test's snapshots instances, which causes assertSame to fail.

This is the result of SDP.onInit which despite already having IC instances, swaps them with the new ones given by IW. I think this is correct, since that's a new IW and we should use the new IndexCommit references. In that case, the test should be relaxed to use assertEquals and not assertSame? I've put a nocommit next to calling assertSnapshotExists -- changed to not check "same" IC, and the test passes without cloning ... what do you think?
                
> IndexWriterConfig.clone should clone the MergeScheduler
> -------------------------------------------------------
>
>                 Key: LUCENE-4876
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4876
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Adrien Grand
>            Assignee: Adrien Grand
>             Fix For: 4.3
>
>         Attachments: LUCENE-4876.patch, LUCENE-4876.patch, LUCENE-4876.patch
>
>
> ConcurrentMergeScheduler has a List<MergeThread> member to track the running merging threads, so IndexWriterConfig.clone should clone the merge scheduler so that both IndexWriterConfig instances are independant.

--
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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org