"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.