Thanks Patrick for the detail (Support of the quality below puts us
hbasistas at ease about our deciscion to bet the farm on zk making our
next major release).
On Thu, Mar 25, 2010 at 3:57 PM, Patrick Hunt ph...@apache.org wrote:
Some background on this: In order to add new features (sometimes to fix
bugs) we need to change the client lib in a non-b/w compatible way, this is
infrequent, but there's just no way around this in some cases. At the server
level we always ensure (and even in extreme cases this might not be
possible, but so far it has) that a new server can talk to an old (at least
1 version back) client. Additionally we also ensure that a new server can
talk to an old server, this allows rolling upgrade of the ensemble. WRT
this approach I'm probably not telling you anything you don't already know
from your own/prior projects.
In zk THIS IS CRITICAL to our primary project level goals of high
availability. It would be laughable if we bill ourselves as highly
available but sorry, you need to shut everything down then upgrade
everything to a new version. That's just not acceptable.
The roadmap has some detail on this, but it's out of date from our current
practices. We also need to include this information in our release notes.
Stack, in your specific case you are seeing that 3.3 client works fine with
3.2 server. In 3.3 we added a new API method to the client, which sends a
new message type to the server. As long as you don't use this method
(getchildren2) it will probably work fine. However, we don't officially
support this configuration as we don't design for this case (the changes)
and we don't test for this. It may be that there was some semantic change at
the protocol (client-server protocol) level, that may not be exposed except
in unusual cases. Perhaps if we had more resources we could verify this case
(3.3C with 3.2S) but today we do not, so essentially it would be use at
your own risk.
Hope this helps. If you have further insights, esp wrt HBase using ZK please
feel free to comment.
Patrick just let me know that newer client talking to older server is
not supported. I didn't know that. Thanks for pointing it out. Was
sort of surprised it worked at all so just noted this aspect of my zk
3.3.0 RC0 eval.
Congrats on new release lads,
P.S. Below is backup of my assertion 3.3.0 client basically works
against 3.2.2 ensemble:
In client log I see this:
2010-03-25 12:23:57,670 INFO org.apache.zookeeper.ZooKeeper: Client
environment:zookeeper.version=3.3.0-925362, built on 03/19/2010 18:38
2010-03-25 12:23:57,672 INFO org.apache.zookeeper.ZooKeeper:
Initiating client connection,
2010-03-25 12:23:57,683 INFO org.apache.zookeeper.ClientCnxn: Opening
socket connection to server sv2borg166/10.20.20.166:2181
2010-03-25 12:23:57,686 INFO org.apache.zookeeper.ClientCnxn: Socket
connection established to sv2borg166/10.20.20.166:2181, initiating
Over on 166 I see...
2010-03-25 12:23:57,697 INFO
org.apache.zookeeper.server.NIOServerCnxn: Connected to
/10.20.20.185:46331 lastZxid 0
2010-03-25 12:23:57,725 INFO
org.apache.zookeeper.server.NIOServerCnxn: Creating new session
2010-03-25 12:23:57,726 INFO
org.apache.zookeeper.server.NIOServerCnxn: Finished init of
2010-03-25 12:25:07,305 INFO
org.apache.zookeeper.server.NIOServerCnxn: Processing stat command
2010-03-25 12:25:07,306 WARN
org.apache.zookeeper.server.NIOServerCnxn: Exception causing close of
session 0x0 due to java.io.IOException: Responded to info probe
2010-03-25 12:25:07,306 INFO
org.apache.zookeeper.server.NIOServerCnxn: closing session:0x0
If I do stat over there I see Zookeeper version: 3.2.2-888565, built
on 12/08/2009 21:51 GMT...
On Thu, Mar 25, 2010 at 2:00 PM, Patrick Hunt ph...@apache.org wrote:
Stack, you can't use a new client with an old server. We support b/w
compatibility at the server level (new server works with old client) but
the other way around. You would have to upgrade the server and client at
same time, or upgrade the servers (rolling upgrade) then upgrade the
All hbase tests pass with 3.3.0 in place. I ran small loading and
nothing odd looking. Looks like no issue having a zk 3.3.0 client
talk to a 3.2.2 ensemble.
Requires small mods to hbase other than dropping new zk jar into
hbase/lib in place of zk 3.2.2: HBASE-2380.
On Fri, Mar 19, 2010 at