Repoze Blog

2008-04-16 00:00:00-05:00

repoze.zope2 Updates

repoze.zope2 (the reimplementation of Zope2's ZPublisher that allows Zope2 to run as a WSGI application) has been updated quietly over the last few months, with the latest release, 0.3.6, posted today. Below is the changelog for the releases performed in March and April of this year. If you haven't already given it a roll, and you're interested in WSGI, you might want to try it out.

0.3.6 (2008-04-16)

  - "http" exceptions (like Redirect and Unauthorized) weren't handled

    properly anywhere except in the repoze.zope2 obob helper's

    'invoke' step.  In-the-wild code uses these exceptions before the

    published object has been located (e.g. during traverse() or

    before_traverse()).  We now depend on repoze.obob >=0.3 to get

    extended exception handling behavior, and we implement a

    'handle_exception' method on our z2bob helper which will turn

    Zope2 Unauthorized and Redirect exceptions into their

    "httpexception" equivalents for consumption by upstream

    middleware.  This was prompted by code found in the wild in

    Plone's OpenId implementation which raises a redirect during


0.3.5 (2008-04-16)

  - "Legacy" virtual hosting (via Virtual Host Monster) did not work

    properly.  Symptom: if you set up proxy-rewrite rules in Apache

    pointing at the Zope root a repoze.zope2 server running under a

    separate paster server, and tried to visit the ZMI via the Apache

    virtualhost's /manage URL, you'd be presented with the

    VirtualHostMonster ZMI configuration page instead of the ZMI's

    framed root UI.  Reason: the PARENTS[0] item was not set up early

    enough (it was set up in traverse rather than

    before_traverse). Since it was depended on by Zope API's which VHM

    called out to to set the virtual root, this didn't work, and the

    resulting traversal name stack was incorrect.

0.3.4 (2008-03-24)

  - Bump ez_setup.py version.

  - When Zope 2 starts, it potentially writes data to the database

    during product initialization.  When multiple clients talk to the

    same ZEO storage at startup, they often simultaneously try to

    write (the same) information to the database concurrently.  This

    causes startup failure due to conflict errors.  We now retry

    product initialization up to five times to work around this issue.

0.3.3 (2008-03-10)

  - repoze.zope2 now properly respects virtual host directives

    provided to it by repoze.vhm xheaders middleware >= 0.4.  Zope's

    VHM can still be used as necessary, but is no longer required.

0.3.2 (2008-03-03)

  - Fix bug reported by Martin Aspeli: repoze.zope2 would choke on

    large images and files (symptom: broken images when images were

    large).  This was due to the fact that the Zope File- and

    Image-rendering machinery used HTTPResponse.write, which

    repoze.zope2's response handling didn't handle properly.  We now

    subclass HTTPResponse (as RepozeHTTPResponse) to solve the issue.

0.3.1 (2008-03-02)

  - mkzope2instance now:

    o takes no arguments, only options.  '-d' replaces the single

      argument path.

    o creates a "log" directory

    o writes out a zeo.conf into "etc" (unconditionally); you can

      start a ZEO instance after installation now via 'bin/runzeo -C

      etc/zeo.conf', after ensuring that the 'address' in the ZEO

      section is correct.

    o allows the specification of 'sandbox' (-s) (replaces

      single-argument instancedir), 'zeo-port' (-z) , 'zope-port'

      (-p), and 'use-zeo' (-z) options.  If 'use-zeo' is specified,

      the zope.conf that's written will use a ClientStorage by


    o writes a zope.conf with a zodb cache-size of 50000 rather than


  - addzope2user, runzope2script, and debugzope2 now respect a

    "ZOPE_CONF" environment variable, which can be used to specify the

    zope.conf configuration file to use.

  - Add a sample  section to the generated zope.conf

    that can be uncommented if the installer wants to use ZEO instead

    of FileStorage or vice versa.

  - Added an (experimental) 'zope2testrunner' script that sets up

    stuff in the environment before running

    'zope.testing.testrunner.run'.  It accepts the same arguments as

    the Zope 3 testrunner.  E.g. 'bin/zope2testrunner -m

    Products.faster'.  This also respects the ZOPE_CONF envvar.

  - Depend on Zope 2.10.5 (zopelib- instead of and

    various other updated repoze libraries.


posted at: 00:00 | permalink