You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by lars hofhansl <la...@apache.org> on 2013/09/04 23:00:19 UTC

Rolling restart from 0.92 to 0.94

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).

-- Lars


Re: Rolling restart from 0.92 to 0.94

Posted by Andrew Purtell <ap...@apache.org>.
That doesn't look right if you exclude coprocessors (which we always
should). If I upgrade a 0.92 client and it's application after a recompile
on one node to 0.94 but have other client or server nodes still at 0.92,
those other nodes won't then encounter a Java linkage problem.


On Wed, Sep 4, 2013 at 2:00 PM, lars hofhansl <la...@apache.org> 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).
>
> -- Lars
>
>


-- 
Best regards,

   - Andy

Problems worthy of attack prove their worth by hitting back. - Piet Hein
(via Tom White)

Re: Rolling restart from 0.92 to 0.94

Posted by Jonathan Hsieh <jo...@cloudera.com>.
There are two places (at least) to worry about compatibility -- rpc/wire
compatibility and client api/binary jar compatibility.  In 0.92->0.94 we
got wire compatibility (fixed a few like this HBASE-6710) meaning we could
heterogeneous a client/master/rs from 0.92 and 0.94 (thus allowing rolling
upgrades).  There are a few places where we broke api compatibility and did
not address it.

I'm facing similar problems currently between 0.94 and 0.95/0.96 -- we've
agreed to break wire compat (for the protobuf changes) and we have broken
api compatibliity implicitly (HBASE-7215 removed an api used by a dependent
project)  and explicitly (HBASE-9334/HBASE-9247).

We have a patch in flight that can help detects api compatibility breakages
now -- see HBASE-9153 and its associated gdoc with a detailed report [1] .
 Please comment ! After 0.96 goes out we'll likely be stuck with the
breakages.  Since HBase has many dependencies now we should try to minimize
the amount we do this in the future and be strict about our deprecation
policies.

[1]
https://docs.google.com/a/cloudera.com/document/d/14nqQXlIvgJOxGFTfhSoquYzjW8Yx-v9TqTBqRjiB7g0/edit


On Wed, Sep 4, 2013 at 3:08 PM, Jean-Daniel Cryans <jd...@apache.org>wrote:

> Link to this discussion we had in April about binary compatibility:
> http://search-hadoop.com/m/Lg90wHGW981
>
>
> On Wed, Sep 4, 2013 at 3:04 PM, James Taylor <jt...@salesforce.com>
> wrote:
>
> > 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 <st...@duboce.net> wrote:
> >
> > > On Thu, Sep 5, 2013 at 5:00 AM, lars hofhansl <la...@apache.org>
> 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
> > >
> >
>



-- 
// Jonathan Hsieh (shay)
// Software Engineer, Cloudera
// jon@cloudera.com

Re: Rolling restart from 0.92 to 0.94

Posted by Jean-Daniel Cryans <jd...@apache.org>.
Link to this discussion we had in April about binary compatibility:
http://search-hadoop.com/m/Lg90wHGW981


On Wed, Sep 4, 2013 at 3:04 PM, James Taylor <jt...@salesforce.com> wrote:

> 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 <st...@duboce.net> wrote:
>
> > On Thu, Sep 5, 2013 at 5:00 AM, lars hofhansl <la...@apache.org> 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
> >
>

Re: Rolling restart from 0.92 to 0.94

Posted by James Taylor <jt...@salesforce.com>.
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 <st...@duboce.net> wrote:

> On Thu, Sep 5, 2013 at 5:00 AM, lars hofhansl <la...@apache.org> 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
>

Re: Rolling restart from 0.92 to 0.94

Posted by Stack <st...@duboce.net>.
On Thu, Sep 5, 2013 at 5:00 AM, lars hofhansl <la...@apache.org> 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