Re: [ZODB-Dev] RFC: compatibility of ZEO clients and servers running different Python versions

2010-04-20 Thread Jim Fulton
On Tue, Apr 20, 2010 at 12:17 PM, Christian Theune  wrote:
...
> Thanks for the effort, sounds like a rabbit hole. :)
>
> I basically aim running ZEO servers and clients at the same Python
> version. For upgrading purposes it would be nice to have your conclusion
> available to developers/admins so they can figure out (or we can tell
> them) a reasonable upgrade path.

I added some text to the README.txt on the trunk and 3.9 branch, so this
will be documented in upcoming 3.9 and 3.10 releases.

Jim

-- 
Jim Fulton
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] RFC: compatibility of ZEO clients and servers running different Python versions

2010-04-20 Thread Chris Withers
Jim Fulton wrote:
> Because of the complexity of the solution, I'm, sadly, inclined to
> leave things as they are:
> 
> - Can't use Python 2.4 clients with Python 2.5 or 2.6 servers
> - Can use Python 2.6 clients with 2.4 servers.
> - Can't use Python 2.5 or 2.6 servers with clients running ZODB 3.7 or
>   earlier.
> 
> I wonder what other people think.

Personally, I'm certainly okay with this.
It'd be great to have it advertised somewhere prominent though...

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] RFC: compatibility of ZEO clients and servers running different Python versions

2010-04-20 Thread Christian Theune
On 04/20/2010 05:47 PM, Jim Fulton wrote:
> Starting with Python 2.5, Python exception classes became new-style
> types, which led to changes in the way Exception pickles were
> constructed.  This primarily affects the ZEO protocol. Changes were
> made in ZODB 3.8 and later to accomidate this change.
>
> I realized recently that, while the changes made to ZODB cause ZEO to
> work with newer Python versions when clients and servers run the same
> version, there's still a problem when clients and servers run
> different Python versions.  A Python 2.4 client doesn't work properly
> with Python 2.5 or 2.6 servers. Also, if a server is running on Python
> 2.5 or 2.6, it won't work with clients older that ZODB 3.8, regardless
> of which Python version they use.
>
> Fortunately, clients running Python 2.5 or 2.6 will work with servers
> running 2.4, so there is a way to upgrade clients and servers without
> taking them all down at once.
>
> I've been pretty proud of the fact that modern ZEO servers work with
> ZEO clients as old as ZODB 3.2.  (We've had clients that old in
> production here at ZC until very recently.)  I'm a bit disappointed
> that will lose compatibility with older clients.
>
> Yesterday, I worked out an alternate exception pickling strategy that
> would support ZEO clients as old as 3.3:
>
>http://svn.zope.org/?rev=49&view=rev
>
> It does this at the cost of making pickling a little more brittle
> because different exception classes would have slightly different
> __reduce__ methods.
>
> Because of the complexity of the solution, I'm, sadly, inclined to
> leave things as they are:
>
> - Can't use Python 2.4 clients with Python 2.5 or 2.6 servers
> - Can use Python 2.6 clients with 2.4 servers.
> - Can't use Python 2.5 or 2.6 servers with clients running ZODB 3.7 or
>earlier.
>
> I wonder what other people think.

Thanks for the effort, sounds like a rabbit hole. :)

I basically aim running ZEO servers and clients at the same Python 
version. For upgrading purposes it would be nice to have your conclusion 
available to developers/admins so they can figure out (or we can tell 
them) a reasonable upgrade path.

Christian

-- 
Christian Theune · c...@gocept.com
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 0 · fax +49 345 1229889 1
Zope and Plone consulting and development

___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] RFC: compatibility of ZEO clients and servers running different Python versions

2010-04-20 Thread Jim Fulton
Starting with Python 2.5, Python exception classes became new-style
types, which led to changes in the way Exception pickles were
constructed.  This primarily affects the ZEO protocol. Changes were
made in ZODB 3.8 and later to accomidate this change.

I realized recently that, while the changes made to ZODB cause ZEO to
work with newer Python versions when clients and servers run the same
version, there's still a problem when clients and servers run
different Python versions.  A Python 2.4 client doesn't work properly
with Python 2.5 or 2.6 servers. Also, if a server is running on Python
2.5 or 2.6, it won't work with clients older that ZODB 3.8, regardless
of which Python version they use.

Fortunately, clients running Python 2.5 or 2.6 will work with servers
running 2.4, so there is a way to upgrade clients and servers without
taking them all down at once.

I've been pretty proud of the fact that modern ZEO servers work with
ZEO clients as old as ZODB 3.2.  (We've had clients that old in
production here at ZC until very recently.)  I'm a bit disappointed
that will lose compatibility with older clients.

Yesterday, I worked out an alternate exception pickling strategy that
would support ZEO clients as old as 3.3:

  http://svn.zope.org/?rev=49&view=rev

It does this at the cost of making pickling a little more brittle
because different exception classes would have slightly different
__reduce__ methods.

Because of the complexity of the solution, I'm, sadly, inclined to
leave things as they are:

- Can't use Python 2.4 clients with Python 2.5 or 2.6 servers
- Can use Python 2.6 clients with 2.4 servers.
- Can't use Python 2.5 or 2.6 servers with clients running ZODB 3.7 or
  earlier.

I wonder what other people think.

Jim

-- 
Jim Fulton
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev