]> Sergey Matveev's repositories - public-inbox.git/commit
inboxwritable: drop {-importer} cyclic reference
authorEric Wong <e@80x24.org>
Thu, 14 Nov 2019 01:12:11 +0000 (01:12 +0000)
committerEric Wong <e@80x24.org>
Thu, 14 Nov 2019 06:43:18 +0000 (06:43 +0000)
commit6466b21e0776fdd88648730e7248d6887d380224
treea0cad403b0fbae219906ec04886ae7f938684c93
parent45fb16664775746dc4b3f7a55743dbe622a3c5ae
inboxwritable: drop {-importer} cyclic reference

InboxWritable caching the result of ->importer leads to a
circular references with returned (V2Writable|Import) object
holds onto the calling InboxWritable object.

With public-inbox-watch, this leads to a memory leak if a user
is reloading via SIGHUP after a message is imported (it would
only become noticeable with SIGHUPs after every message imported).

I would not expect anybody to to notice this in real-world
usage.  I only noticed this since I was making -xcpdb suitable
for long-lived process use (e.g. "mod_perl style") and a flock
remained unreleased on v1 inboxes after resharding.

WatchMaildir (used by -watch) already handles caching of the
importer object itself, and all of our other real-world uses of
->importer are short-lived or designed for batch scripts, so
there's no need to cache the importer result internally.
lib/PublicInbox/Admin.pm
lib/PublicInbox/InboxWritable.pm
lib/PublicInbox/Xapcmd.pm
script/public-inbox-index