When cluster does rolling restart to upgrade servers, you would want to keep clients working during that period of time. This means version 2 of the endpoint should implement both methods.
Once cluster is fully upgraded, you can switch the clients over to using the version 2 protocol. Cheers On Thu, Oct 17, 2013 at 12:18 PM, Asaf Mesika <[email protected]> wrote: > Hi, > > I'm writing an Endpoint Coprocessor for HBase v0.94.6 (cdh4.3.1). > > I'm trying to understand how the CoprocessorProtocol and > CoprocessorEndPoint implementation versioning works, both backwards and > forward. > > For instance, I have my protocol as: > > public interface MyQueryProtocol extends CoprocessorProtocol{ > > public static final long VERSION = 1L; > > public MyResult query(int x) throws IOException; > } > > Let's say I have deployed them both at the client and at the Region Server > (and their respective implementation. > Now lets say after 0.5 year I've discovered I want to change the method by > adding another parameter y: > > public interface MyQueryProtocol extends CoprocessorProtocol{ > > public static final long VERSION = *2L*; > > public MyResult query(int x*, int y*) throws IOException; > } > > Am I suppose to have both the old method and the new method in the > interface? > What happens if I update the client first - is it even possible, or is it > always the order of: server first and then client? > > So in essence: How am I supposed to do both in the protocol and endpoint > implementation in terms of versioning. > > Thanks! >
