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?
James 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 > you > > 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 > upgrade > > 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 > between > > 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. > St.Ack >
