[ 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