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.
http://wiki.apache.org/hadoop/ZooKeeper/Roadmap
https://issues.apache.org/jira/browse/ZOOKEEPER-727

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.

Regards,

Patrick

Stack wrote:
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,
St.Ack

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
GMT

...

Then this:

2010-03-25 12:23:57,672 INFO org.apache.zookeeper.ZooKeeper:
Initiating client connection,
connectString=sv2borg165:2181,sv2borg166:2181,sv2borg167:2181,sv2borg169:2181,sv2borg164:2181
sessionTimeout=60000 watcher=Thread[Thread-0,5,main]
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
session

..

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
0x3266d5140d70759
2010-03-25 12:23:57,726 INFO
org.apache.zookeeper.server.NIOServerCnxn: Finished init of
0x3266d5140d70759 valid:true
2010-03-25 12:25:07,305 INFO
org.apache.zookeeper.server.NIOServerCnxn: Processing stat command
from /10.20.20.185:60661
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
NIOServerCnxn: java.nio.channels.SocketChannel[connected
local=/10.20.20.166:2181 remote=/10.20.20.185:60661]

...

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 not
the other way around. You would have to upgrade the server and client at the
same time, or upgrade the servers (rolling upgrade) then upgrade the
clients.

Patrick

Stack wrote:
+1

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.

St.Ack

On Fri, Mar 19, 2010 at 12:43 PM, Patrick Hunt <ph...@apache.org> wrote:
I have created a candidate build for ZooKeeper 3.3.0. Over 180 JIRAs are
addressed in this release.

*** Please download, test and VOTE before the
*** vote closes 1pm PT on Wednesday, March 24.***

http://people.apache.org/~phunt/zookeeper-3.3.0-candidate-0/

Should we release this?

Patrick






Reply via email to