[ 
https://issues.apache.org/jira/browse/SOLR-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12843356#action_12843356
 ] 

Hoss Man commented on SOLR-1807:
--------------------------------

No all plugin APIs are created equal ... some like TokenizerFactories are 
designed to be extended by lots of people, others werent' particularly well 
thought out abstractions in the first place, and your milage may vary when 
implementing them -- feel free to post doc patches/suggestions to help make 
this more clear.

as to the specific problem...

Even if UpdateHandler had been an abstract class, at best we could have added a 
version of {{forceOpenWriter()}} that just threw an UnsupportedOpException -- 
there's no "default" impl we could have provided that would have worked for any 
possible UpdateHandler subclass people might have written.

The best conceivable solution we probably could have come up with at the time 
would be to introduce a marker interface that UpdateHandlers could optionaly 
implement containing the APIs needed to support replication, and make the 
ReplicationHandler test the registered UpdateHandler on startup to see if it 
implements that API, and if not then throw an error.

This type of solution could still be implemented today, in place of the 
"instanceof DirectUpdateHandler2" ... particularly now that the code has been 
vetted a little bit by users and we have a pretty good idea of what type of 
functionality an UpdateHandler needs to support in order to play nice with 
ReplicationHandler.



> UpdateHandler plugin is not fully supported
> -------------------------------------------
>
>                 Key: SOLR-1807
>                 URL: https://issues.apache.org/jira/browse/SOLR-1807
>             Project: Solr
>          Issue Type: Bug
>          Components: update
>    Affects Versions: 1.4
>            Reporter: John Wang
>
> UpdateHandler is published as a supported Plugin, but code such as the 
> following:
> if (core.getUpdateHandler() instanceof DirectUpdateHandler2) {
>             ((DirectUpdateHandler2) 
> core.getUpdateHandler()).forceOpenWriter();
>           } else {
>             LOG.warn("The update handler being used is not an instance or 
> sub-class of DirectUpdateHandler2. " +
>                     "Replicate on Startup cannot work.");
>           } 
> suggest that it is really not fully supported.
> Must all implementations of UpdateHandler be subclasses of 
> DirectUpdateHandler2 for it to work with replication?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to