[Mimedefang] MySQL connection per slave

David F. Skoll dfs at roaringpenguin.com
Mon Jul 14 08:39:00 EDT 2003

On Mon, 14 Jul 2003, Chris Masters wrote:

> Now this does not address error conditions such as
> disconnecting if the slave dies (make sure that
> connections don't remain open) or how to re-connect if
> the connection is lost during the slave lifecycle.

Our CanIt product works something like this:

undef $PersistentDatabaseConnection;

sub get_db_connection () {
    if (defined($PersistentDatabaseConnection)) {
	if (simple_query_succeeds($PersistentDatabaseConnection)) {
	    return $PersistentDatabaseConnection;
	undef $PersistentDatabaseConnection;
    $PersistentDatabaseConnection = connect_to_database();
    return $PersistentDatabaseConnection;

Whenever we need the connection handle, we call get_db_connection().
This lazily maintains a per-slave connection.  We also run a simple
query ("SELECT 1") on the connection to make sure it's alive before
returning it.  You need to trade off how long you keep the connection
in a local variable vs. calling the function, because each function
call runs the simple query.

This doesn't require any changes to mimedefang.pl or any special
initialization function.


More information about the MIMEDefang mailing list