[ https://issues.apache.org/jira/browse/HBASE-2321?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
stack updated HBASE-2321: ------------------------- Fix Version/s: (was: 0.90.0) 0.92.0 Moving into 0.92 as per discussion up on dev list (Correct me if I'm making wrong move here lads). > Support RPC interface changes at runtime > ---------------------------------------- > > Key: HBASE-2321 > URL: https://issues.apache.org/jira/browse/HBASE-2321 > Project: HBase > Issue Type: Improvement > 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. - You can reply to this email to add a comment to the issue online.