Last week I wrote on use.perl about a quite big memory "leak" problem I was experiencing with HTTP::DAV.
Well, "leak" as in "big circular references" between different objects. I think I finally managed to solve it after some days of struggling, trying to write awkward destructors and other debugging pains.
It turned out the solution was simple. Just using Scalar::Util::weaken() on the "hot" back references. The problematic references were between HTTP::DAV and HTTP::DAV::Resource and between HTTP::DAV::Resource and HTTP::DAV::ResourceList.
I'm using HTTP::DAV to export hundreds of thousands of images in many different sizes to some mod_dav-enabled static servers for, well, static serving.
For this I needed the export tool to work for at least 2 days continuously, talking to 3 different servers, and all of this without problems... :-)
Now it seems to work properly! The updated CPAN version will be out soon, I hope.
|
|---|