lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Earwin Burrfoot (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-2320) Add MergePolicy to IndexWriterConfig
Date Mon, 15 Mar 2010 02:01:27 GMT

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

Earwin Burrfoot commented on LUCENE-2320:
-----------------------------------------

Or, maybe, we should think of MergePolicy API that doesn't require one to keep a reference
to IW?
The more you struggle to control such circular multistage initializations and check their
validity, the more their ugliness stands out and screams - refactor meee!

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


Mime
View raw message