[
https://issues.apache.org/jira/browse/HBASE-2321?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benoit Sigoure updated HBASE-2321:
----------------------------------
Hadoop Flags: [Incompatible change, Reviewed] (was: [Reviewed])
This breaks RPC compatibility.
> Support RPC interface changes at runtime
> ----------------------------------------
>
> Key: HBASE-2321
> URL: https://issues.apache.org/jira/browse/HBASE-2321
> Project: HBase
> Issue Type: Improvement
> Components: coprocessors
> Reporter: Andrew Purtell
> Assignee: Gary Helmling
> Fix For: 0.92.0
>
>
> Now we are able to append methods to interfaces without breaking RPC
> compatibility with earlier releases. However there is no way that I am aware
> of to dynamically add entire new RPC interfaces. Methods/parameters are fixed
> to the class used to instantiate the server at that time. Coprocessors need
> this. They will extend functionality on regions in arbitrary ways. How to
> support that on the client side? A couple of options:
> 1. New RPC from scratch.
> 2. Modify HBaseServer such that multiple interface objects can be used for
> reflection and objects can be added or removed at runtime.
> 3. Have the coprocessor host instantiate new HBaseServer instances on
> ephemeral ports and publish the endpoints to clients via Zookeeper. Couple
> this with a small modification to HBaseServer to support elastic thread pools
> to minimize the number of threads that might be kept around in the JVM.
> 4. Add a generic method to HRegionInterface, an ioctl-like construction,
> which accepts a ImmutableBytesWritable key and an array of Writable as
> parameters.
> My opinion is we should opt for #4 as it is the simplest and most expedient
> approach. I could also do #3 if consensus prefers. Really we should do #1 but
> it's not clear who has the time for that at the moment.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira