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!

Reply via email to