"William A. Rowe, Jr." <[EMAIL PROTECTED]> writes:

> >1. revamp mod_dav's use of pools internally.
> >
> >   This means adding pool arguments to the various "layers" of
> >   function calls within mod_dav.  Each caller controls subpool
> >   creation, and possibly passes a subpool into a subordinate function
> >   call.  Whereever there are loops that allocate temporary memory, we
> >   use (and *clear*) a subpool within the loop.  These changes are
> >   made up to the point of the provider backend;  but we halt there,
> >   and do not pass pools into provider callbacks.
> 
> It makes me wonder... today we have to create and destroy the pool.
> But what about reuse?  The overhead of creating the pool itself? 

I see someone already told you about svn_pool_clear().  :-)

By the way, for those interested in reading about our "best pool
practices" philosophy, take a look at Subversion's HACKING guidelines
-- at the section called "APR pool usage conventions".  These are the
magic formulas that we'd like to spread into mod_dav:
 
        http://svn.collab.net/repos/svn/trunk/HACKING


> >2. make all mod_dav_svn callbacks take pools.  But then we wrap these
> >   callbacks with wrappers that *don't* take pools, so mod_dav_svn can
> >   still plug-in to mod_dav.
> 
> Why - in the sense that httpd-2.1 forward breaks binary compatibility?
> Wouldn't it make more sense to extend mod_dav_svn (and other dav
> backends) going forward?  We aren't troubling ourselves with that sort
> of compatibility for httpd-2.2, in that we will just get the API 'right' as
> of each major/minor bump.  That means code must be 'adjusted' for
> the next release anyways.

We don't want to force Subversion to depend on the httpd-2.1 branch.

Our policy (for simplicity and stability) is that every release of
Subversion is guaranteed to build/run against the latest stable
release of httpd.  As Subversion gets closer and closer to 1.0
stability, it's important that we're not forcing users to checkout
bleeding-edge httpd and apr.


> >3. use the API versioning which is present in httpd-2.0 (and later) to
> >   define two back-end interfaces for mod_dav. The current interface
> >   is v1, and the new "pool accepting" interface becomes v2.  mod_dav
> >   is updated so that it can use either interface.  mod_dav_svn is
> >   updated to supply both: the old wrapper-based form, and the new
> >   form. This will allow a mix/match between httpd-2.0.X (and 2.X.Y)
> >   and mod_dav_svn.
> 
> I'm mostly asking, is this a real win?

This is Greg Stein's department;  I'm not familiar with the political
implications of our various options.   ("Do we make v1 and v2 provider
interfaces available to the 2.0 branch?  Or just declare that mod_dav
has a new API in httpd-2.1?")  I'll let him address this topic.

But at the moment, it's outside the scope o our immediate goals to
drag every mod_dav_* backend kicking-and-screaming into a new v2
interface.  We just want to make mod_dav use pools efficiently in
httpd-2.0, and that's a relatively short-term project.

Reply via email to