hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gregory Chanan <gcha...@cloudera.com>
Subject Re: 0.92/0.94 compatibility and HBASE-5206
Date Sat, 01 Sep 2012 04:29:45 GMT
I filed HBASE-6710.

Greg

On Fri, Aug 31, 2012 at 8:21 PM, lars hofhansl <lhofhansl@yahoo.com> wrote:

> I see. Makes sense. I made a trivial 0.94 patch for HBASE-6268.
> Can you file a jira for the other changes you describe below?
>
> -- Lars
>
>
>
> ________________________________
>  From: Gregory Chanan <gchanan@cloudera.com>
> To: dev@hbase.apache.org; lars hofhansl <lhofhansl@yahoo.com>
> Sent: Friday, August 31, 2012 7:42 PM
> Subject: Re: 0.92/0.94 compatibility and HBASE-5206
>
> @Lars: agreed on your point of leaving the name for the 92 znode the same.
>
> On upgrading a 0.94.0 or 0.94.1 cluster out of sync, I think it would work.
> The 0.94.2 client should work against all 0.94.2, 0.94.1, and 0.94.0
> versions (and all 0.92.x versions as well).  We just need to apply
> HBASE-6268 to 0.94.2.  So you would first upgrade the client, then the
> server(s).  The reason this works is because the client, with HBASE-6268
> applied, can handle the znode being in either the 0.92 or 0.94 format, it
> doesn't need to know which is which.  I'll of course test all this :).
>
> Greg
>
> On Fri, Aug 31, 2012 at 7:02 PM, lars hofhansl <lhofhansl@yahoo.com>
> wrote:
>
> > Also, if understand this correctly this would not help if somebody had
> > deployed an 0.94.0 or 0.94.1 cluster and want to upgrade the client and
> > server out of sync.
> > In one configuration the client would work against 0.94.0 and 0.94.1 but
> > not against 0.94.2. In the other configuration the client would work
> > against 0.94.2 but not against 0.94.0 or 0.94.1.
> >
> >
> > There is however and clean upgrade path to 0.92.2 and from there to
> 0.94.2
> > if we just fix this in 0.92.2.
> >
> >
> > -- Lars
> >
> >
> >
> > ________________________________
> >  From: lars hofhansl <lhofhansl@yahoo.com>
> > To: Gregory Chanan <gchanan@cloudera.com>; "dev@hbase.apache.org" <
> > dev@hbase.apache.org>
> > Sent: Friday, August 31, 2012 6:34 PM
> > Subject: Re: 0.92/0.94 compatibility and HBASE-5206
> >
> > Sounds complicated. But since you are the folks with customers that'll
> > upgrade to from 0.92 to 0.94, let's do this.
> >
> > The only input I'd have is that format we'll use going forward will not
> > have a version attached to it.
> >
> > So maybe the 92 version would still be called
> > "zookeeper.znode.tableEnableDisable" and the new node could have a
> > different name "zookeeper.znode.tableEnableDisableNew" (or something).
> >
> > -- Lars
> >
> >
> >
> > ________________________________
> > From: Gregory Chanan <gchanan@cloudera.com>
> > To: dev@hbase.apache.org; lars hofhansl <lhofhansl@yahoo.com>
> > Sent: Friday, August 31, 2012 5:54 PM
> > Subject: Re: 0.92/0.94 compatibility and HBASE-5206
> >
> >
> > Actually, I think we can make 0.94.2 compatible with both {0.94.0,0.94.1}
> > and {0.92.0,0.92.1}, although one of those sets will require
> configuration
> > changes.
> >
> > The basic problem is that there is a znode for each table
> > "zookeeper.znode.tableEnableDisable" that is handled differently.
> >
> > On 0.92.0 and 0.92.1 the states for this table are:
> > [ disabled, disabling, enabling ] or deleted if the table is enabled
> >
> > On 0.94.1 and 0.94.2 the states for this table are:
> > [ disabled, disabling, enabling, enabled ]
> >
> > What saves us is that the location of this znode is configurable.  So the
> > basic idea is to have the 0.94.2 master write two different znodes,
> > "zookeeper.znode.tableEnableDisabled92" and
> > "zookeeper.znode.tableEnableDisabled94" where the 92 node is in 92
> format,
> > the 94 node is in 94 format.  And internally, the master would only use
> the
> > 94 format in order to solve the original bug HBASE-5155 solves.
> > We can of course make one of these the same default as exists now, so we
> > don't need to make config changes for one of 0.92 or 0.94 clients.  I
> argue
> > that 0.92 clients shouldn't have to make config changes for the same
> reason
> > I argued above.  But that is debatable.
> >
> > Then, I think the only question left is Stack's question of how to bring
> > along the {0.94.0, 0.94.1} crew.  A {0.94.0, 0.94.1} client would work
> > against a 0.94.2 cluster by just
> > configuring "zookeeper.znode.tableEnableDisable" in the client to be
> > whatever "zookeeper.znode.tableEnableDisabled94" is in the cluster.  A
> > 0.94.2 client would work against both a {0.94.0, 0.94.1} and {0.92.0,
> > 0.92.1} cluster if it had HBASE-6268 applied.  About rolling upgrade from
> > {0.94.0, 0.94.1} to 0.94.2 -- I'd have to think about that.  Do the
> > regionservers ever read the tableEnableDisabled znode?
> >
> > Greg
> >
> > On Fri, Aug 31, 2012 at 4:41 PM, lars hofhansl <lhofhansl@yahoo.com>
> > wrote:
> >
> > I guess you voiced your opinion in your initial email already (you prefer
> > to break compatibility between 0.94.0/0.94.1 with 0.94.2).
> > >If that is indeed the consensus, please file a jira against 0.94.2.
> > >
> > >-- Lars
> > >
> > >
> > >
> > >
> > >----- Original Message -----
> > >From: lars hofhansl <lhofhansl@yahoo.com>
> > >To: "dev@hbase.apache.org" <dev@hbase.apache.org>
> > >Cc:
> > >Sent: Friday, August 31, 2012 4:24 PM
> > >Subject: Re: 0.92/0.94 compatibility and HBASE-5206
> > >
> > >What do you think we should do?
> > >
> > >1. Breaking compatibility between minor versions is bad. (i.e. we should
> > fix this in 0.92.2 as currently proposed)
> > >2. At the same time 0.92 might be in wider distribution and that the
> > upgrade path 0.94 might be more important (and include the fix that you
> > propose).
> > >
> > >I'm +1 on #1 and +0 on #2.
> > >
> > >
> > >I agree we need better cross-version integration testing and be
> generally
> > more diligent about this.
> > >
> > >-- Lars
> > >________________________________
> > >From: Gregory Chanan <gchanan@cloudera.com>
> > >To: dev@hbase.apache.org
> > >Cc: lars hofhansl <lhofhansl@yahoo.com>
> > >Sent: Friday, August 31, 2012 4:06 PM
> > >Subject: Re: 0.92/0.94 compatibility and HBASE-5206
> > >
> > >@Lars:
> > >you are correct that this would break compatibility between {0.94.0,
> > >0.94.1} and 0.94.2.
> > >
> > >We clearly need better compatibility testing, these issues are hard to
> > find
> > >by just looking at patches.
> > >
> > >Greg
> > >
> > >On Fri, Aug 31, 2012 at 4:03 PM, Ted Yu <yuzhihong@gmail.com> wrote:
> > >
> > >> I should also apologize for HBASE-5206 where I didn't maintain
> > >> compatibility in the first place.
> > >>
> > >> We just need to find the solution which minimizes impact of this
> issue.
> > >>
> > >> Cheers
> > >>
> > >> On Fri, Aug 31, 2012 at 3:55 PM, lars hofhansl <lhofhansl@yahoo.com>
> > >> wrote:
> > >>
> > >> > Won't we then break compatibility between 0.94.0 and 0.94.1 with
> > 0.94.2?
> > >> > I do not have a strong opinion about this.
> > >> >
> > >> > It was my fault that HBASE-5206 slipped into 0.94.0, I apologize for
> > >> that.
> > >> >
> > >> > I was going to spin the first 0.94.2 today. Is the general consensus
> > that
> > >> > I should wait?
> > >> >
> > >> >
> > >> > -- Lars
> > >> >
> > >> >
> > >> >
> > >> > ________________________________
> > >> >  From: Gregory Chanan <gchanan@cloudera.com>
> > >> > To: dev@hbase.apache.org
> > >> > Sent: Friday, August 31, 2012 3:13 PM
> > >> > Subject: 0.92/0.94 compatibility and HBASE-5206
> > >> >
> > >> > There has been some discussion on the JIRA lately about what to do
> > about
> > >> a
> > >> > 0.92/0.94 compatibility issue.  I wanted to bring this up to a
> larger
> > >> > audience in order to solicit additional opinions.
> > >> >
> > >> > HBASE-5206 (https://issues.apache.org/jira/browse/HBASE-5206),
> which
> > is
> > >> in
> > >> > 0.94.0 and 0.94.1, breaks compatibility with 0.92.0 and 0.92.1.  The
> > >> issue
> > >> > is described in the release notes for HBASE-5155 (of which
> HBASE-5206
> > is
> > >> a
> > >> > forward port).  Excerpted here:
> > >> >
> > >> >   This issue is an incompatible change.
> > >> >   If an HBase client with the changes for HBASE-5155 and a server
> > >> (master)
> > >> > without the changes for HBASE-5155 is used, then the is_enabled
> (from
> > >> HBase
> > >> > Shell) or isTableEnabled() (from HBaseAdmin) will return false
> though
> > the
> > >> > table is already enabled as per the master.
> > >> >
> > >> >   If the HBase client does have the changes for HBASE-5155 and the
> > server
> > >> > does not have the changes for HBASE-5155, then if we try to Enable
a
> > >> table
> > >> > then the client will hang.
> > >> >
> > >> >   The reason is because,
> > >> >   Prior to HBASE-5155 once the table is enabled the znode in the
> > >> zookeeper
> > >> > created for the table is deleted.
> > >> >   After HBASE-5155 once the table is enabled the znode in the
> > zookeeper
> > >> > created for the table is not deleted, whereas the same node is
> updated
> > >> with
> > >> > the status ENABLED.
> > >> >
> > >> >   The client also expects the status of the znode in the zookeeper
> to
> > be
> > >> in
> > >> > the ENABLED state if the table has been enabled successfully.
> > >> >   The above changes makes the client behaviour incompatible if the
> > client
> > >> > does not have this fix whereas the server has this fix.
> > >> >   If both the client and the server does not have this fix, then the
> > >> > behaviour is as expected.
> > >> >
> > >> > So we have a situation where 0.92.0 and 0.92.1 clients are not
> > compatible
> > >> > with 0.94.0 and 0.94.1 servers and visa-versa.
> > >> >
> > >> > The issue is, what should we do about the 0.94.2 server?  As far as
> I
> > can
> > >> > tell, we cannot make both {0.92.0,0.92.1} and {0.94.0,0.94.1}
> clients
> > >> > happy.  I propose we make the 0.94.2 server compatible with the
> > {0.92.0,
> > >> > 0.92.1} client set.  My thinking is that we should optimize for the
> > most
> > >> > common use case.  Given that both CDH4 and HDP 1.0 ship 0.92.1, and
> > that
> > >> > 0.94 is relatively new, it seems more likely that users will upgrade
> > >> > servers from 0.92.1 to 0.94.2+ than from an earlier 0.94 version.
 I
> > >> think
> > >> > we can do this while actually fixing the issue that HBASE-5206
> > purports
> > >> to
> > >> > fix by moving the ENABLED state to a different znode.  I'll even
> > >> volunteer
> > >> > to do that :).  I don't think there is an obvious or easy answer
> > here, so
> > >> > wanted to get other's opinions.
> > >> >
> > >> > As for the client, HBASE-6268 (
> > >> > https://issues.apache.org/jira/browse/HBASE-6268) was introduced in
> > >> 0.92.2
> > >> > to handle both cases of servers ({0.92.0,0.92.1} and
> {0.94.0,0.94.1})
> > by
> > >> > accepting both possibilities for the table znode.  I think that
> > approach
> > >> > works whether we leave the server as is or go with what I've
> proposed
> > --
> > >> > but we should test.
> > >> >
> > >> > Greg
> > >>
> > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message