My two cents: if we want to ensure we're backward compatible, we need to do
two things: define clear boundaries of the classes and/or packages to which
this applies, and run automated tests that verify that backward
compatibility is maintained across point releases. Or maybe we have this
and I'm not aware of it? The way that APIs are annotated in the later
branches as public/private/evolving is a good thing, but unfortunately
doesn't apply to the 0.94 branch. Maybe that could be back-ported?
On Wed, Sep 4, 2013 at 2:39 PM, Stack <[EMAIL PROTECTED]> wrote:
> On Thu, Sep 5, 2013 at 5:00 AM, lars hofhansl <[EMAIL PROTECTED]> wrote:
> > Shrijeet Paliwal just pointed me to this section in the HBase bookhttp://
> > hbase.apache.org/upgrading.html#upgrade0.94 (thanks Shrijeet):
> > ----
> > 1.3. Upgrading from 0.92.x to 0.94.x
> > We used to think that 0.92 and 0.94 were interface compatible and that
> > can do a rolling upgrade between these versions but then we figured that
> > HBASE-5357 Use builder pattern in HColumnDescriptor changed method
> > signatures so rather than return void they instead return
> > HColumnDescriptor. This will throw
> > java.lang.NoSuchMethodError:
> > org.apache.hadoop.hbase.HColumnDescriptor.setMaxVersions(I)V
> > .... so 0.92 and 0.94 are NOT compatible. You cannot do a rolling
> > between them.
> > ----
> > Is that statement actually correct? The issue here is binary code
> > compatibility, which we indeed do not support, but which does not impede
> > rolling upgrades between versions (as long as we're wire compatible
> > releases, which we are).
> The statement overreaches with its absolute that the two are NOT
> compatible. If someone suggests text, I'll update the refguide.