[
https://issues.apache.org/jira/browse/LUCENE-2320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12846615#action_12846615
]
Shai Erera commented on LUCENE-2320:
------------------------------------
Uwe, I'm pretty familiar w/ how backwards goes .. I've had a lot of bw breaks
in my contributions history :). This patch + issue removes the MP ctor which
accepts IW and exposes the default ctor only. That's a bw break, which is
documented in CHANGES as well as was agreed on here because MP is experimental
and gives us the freedom to do that (not that it's such a drastic change).
Therefore I had to update the src/java section of bw, so that its tests would
compile against MPs that expose the default ctor, and not the one accepting IW.
> Add MergePolicy to IndexWriterConfig
> ------------------------------------
>
> Key: LUCENE-2320
> URL: https://issues.apache.org/jira/browse/LUCENE-2320
> Project: Lucene - Java
> Issue Type: Improvement
> Components: Index
> Reporter: Shai Erera
> Assignee: Michael McCandless
> Fix For: 3.1
>
> Attachments: LUCENE-2320.patch, LUCENE-2320.patch, LUCENE-2320.patch,
> LUCENE-2320.patch
>
>
> Now that IndexWriterConfig is in place, I'd like to move MergePolicy to it as
> well. The change is not straightforward and so I've kept it for a separate
> issue. MergePolicy requires in its ctor an IndexWriter, however none can be
> passed to it before an IndexWriter actually exists. And today IW may create
> an MP just for it to be overridden by the application one line afterwards. I
> don't want to make iw member of MP non-final, or settable by extending
> classes, however it needs to remain protected so they can access it directly.
> So the proposed changes are:
> * Add a SetOnce object (to o.a.l.util), or Immutable, which can only be set
> once (hence its name). It'll have the signature SetOnce<T> w/ *synchronized
> set<T>* and *T get()*. T will be declared volatile, so that get() won't be
> synchronized.
> * MP will define a *protected final SetOnce<IndexWriter> writer* instead of
> the current writer. *NOTE: this is a bw break*. any suggestions are welcomed.
> * MP will offer a public default ctor, together with a set(IndexWriter).
> * IndexWriter will set itself on MP using set(this). Note that if set will be
> called more than once, it will throw an exception (AlreadySetException - or
> does someone have a better suggestion, preferably an already existing Java
> exception?).
> That's the core idea. I'd like to post a patch soon, so I'd appreciate your
> review and proposals.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]