Hi folks,
I just noticed a ticket over in Phoenix [1] in which some method
additions to the Table interface [2] breaks the source compatibility of
Phoenix with HBase 1.2.2.
My understanding of the current guidelines is that these are allowed as
they do not invalidate binary compatibility of clients using the API.
Personally, I am very hard-pressed to use the word "compatible" in a
sentence describing this change that isn't sarcastic :)
A couple of questions:
1) I find the InterfaceAudience annotations on this really strange. How
can we have a Public audience Interface (o.a.h.h.c.Table) with Private
methods? Is that just "how things are", or am I missing something? If
this is not something that's meant to be public, I would think these new
methods should be defined in a non-public interface.
2) Now that we've had quite a few releases in the "not-quite-SemVer"
compatibility guide, is there any interest in trying to make the
compatibility guarantees more stringent? I would like to see us get to
source-compatibility on patch releases, not just binary compatibility. I
am happy to try to help, but I know I don't have the time to devote to
catch everything.
3) What do people think about changing this in a 1.2.3 with a quick
turn-around?
Thanks!
- Josh
[1] https://issues.apache.org/jira/browse/PHOENIX-3116
[2] https://issues.apache.org/jira/browse/HBASE-15645