On 6/13/06, Branko Èibej <brane@xbc.nu> wrote:
> Well, it turns out that I did mess up, in a way, but it was an
> unavoidable way with the method described above. The short story is that
> we can't afford to close the DB_ENV handle while FS objects are still
> around, because those objects own handles to the databases themselves.
> Even if they didn't, we still couldn't afford to close the environment,
> because the FS object cleanup may have to access the environment. The
> only way to avoid that would be to pepper the code with validation
> checks wherever we call a BDB function, and I want to avoid that at all
> costs.
>
> There's another option, one I had thought about in the past: in order to
> keep the environment descriptor (and its reference count!) around long
> enough, I'd have to allocate it from the heap, not from a pool. That's
> not as sexy as the current code and it means mixing malloc and
> apr_palloc, but it's much more likely to actually work.
>
> BTW, Garrett's fix in svnserve/main.c elegantly avoids this problem
> /within svnserve/, but we we don't have that kind of control over pool
> lifetimes in general. I shudder to imagine what happens in a GUI, say,
> TSVN...
>
> Since the whole point of the BDB-4.4 work was to make that back-end
> stable, we can't leave things as they are. I'm working on a patch now.
Hey Branko, how's this going?
Is there any way some of the rest of us can help with this work?
-garrett
Received on Mon Jun 19 18:22:21 2006