Should GC hooks be used to help broken software?
Vsevolod Dyomkin
vseloved at gmail.com
Sat Jul 4 17:20:24 UTC 2015
Hi,
Did you consider adding a configuration variable that turns this feature on
and off and can be used to set up environments differently for
dev/test/prod?
---
Vsevolod Dyomkin
+38-096-111-41-56
skype, twitter: vseloved
On Sat, Jul 4, 2015 at 4:30 AM, Elias Mårtenson <lokedhs at gmail.com> wrote:
> The following question was raised during my development of an asynchronous
> library <https://github.com/lokedhs/cl-rabbit-async> I'm currently
> building for RabbitMQ.
>
> In summary, the library allows you to create an object of type
> ASYNCH-CONNECTION, from which instances of ASYNC-CHANNEL can be
> retrieved. A connection holds a reference to all channels that it uses, and
> each channel holds a reference to its connection. The connection object has
> a pointer to a native CFFI object that for the underlying connection (my
> library is built on the RabbitMQ C API).
>
> My question is: Should I use trivial-garbage to create a GC hook for the
> connection object so that if the user of the library forgets to close the
> connection, it will get closed eventually once it's GC'ed?
>
> I can see arguments for both behaviours:
>
> - It's a bad idea, since losing the reference to the connection object
> means that the program is broken, and silently cleaning up the underlying
> connection might hide the fact there is a bug (if the GC doesn't run often
> enough I might have hundreds or even thousands of lingering connections)
> - On the other hand, it might be a good idea since Lisp developers
> often use the REPL to experiment, so it's easy to accidentally lose a
> reference to an object during testing. Thus, using the GC hook will improve
> the stability of one's development environment.
>
> To me, there is no strictly correct answer to the question, which is why
> I'm asking for suggestions from you guys.
>
> Regards,
> Elias (loke on #lisp)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/pro/attachments/20150704/5e30769e/attachment.html>
More information about the pro
mailing list