the Dancer advent calendar says that: Use Starman's --preload-app option to enable this (but be aware that this can cause Bad Things to happen if resources like database connections or other sockets are opened by your app at compile time, as they will be unintentionally shared amongst child processes. what is actually meant by that? when a url is requested my route is calling the model which opens a database connection, does sql and closes the connection. So this is done at runtime. when would calling database connection at compile time then ?also calling connect_cached would cause any problems under a preforked server like starman?
On Mon, 21 Sep 2015 08:43:09 +0000 (UTC) Mike Cu <mike_cu80@yahoo.com> wrote:
the Dancer advent calendar says that: Use Starman's --preload-app option to enable this (but be aware that this can cause Bad Things to happen if resources like database connections or other sockets are opened by your app at compile time, as they will be unintentionally shared amongst child processes. what is actually meant by that? when a url is requested my route is calling the model which opens a database connection, does sql and closes the connection.
So this is done at runtime. when would calling database connection at compile time then ?also calling connect_cached would cause any problems under a preforked server like starman?
Belatedly - I would only expect you to see any issues if you grab a database connection in a BEGIN block or similar. If you're using Dancer::Plugin::Database, though, you don't need to worry as it's designed to be fork and thread-safe for you. Either way, connections established at run-time should be fine even if you use Starman's --preload-app option.
participants (2)
-
David Precious -
Mike Cu