NAME

DBIx::Roles::AutoReconnect - restart DBI calls after reconnecting on failure

DESCRIPTION

The role wraps all calls to DBI methods call so that any operation with DB connection handle that fails due to connection break ( server shutdown, tcp reset etc etc), is automatically reconnected.

The role is useful when a little more robustness is desired for a cheap price; the proper DB failure resistance should of course be inherent to the program logic.

SYNOPSIS

     use DBIx::Roles qw(AutoReconnect);

     my $dbh = DBI-> connect(
           "dbi:Pg:dbname=template1",
	   "postgres",
	   "password",
	   {
	   	PrintError => 0,
		ReconnectTimeout => 5,
		ReconnectFailure => sub { warn "oops!" },
	   },
     );

Attributes

ReconnectFailure &SUB

Called when a DBI method fails.

ReconnectTimeout $SECONDS

Seconds to sleep after reconnection attempt fails.

Default: 60

ReconnectMaxTries $INTEGER

Max number of tries before giving up. The connections are tried indefinitely if undef.

Default: 5

NOTES

Transactions are not restarted if connection breaks, moreover, begin_work, rollback, and commit die when called, to protect from unintentional use. To use transactions, operate with the original DBI handle returned by dbh. AutoCommit is allowed though.

RaiseError is mostly useless with this role, because the DBI errors that might raise the exception, are all wrapped in eval by the connection detector code. The only place where it is useful, is when ReconnectMaxTries tries are exhausted, and depending on RaiseError, the code dies or returns undef from the connect call.

SEE ALSO

DBI, DBIx::Roles, DBIx::AutoReconnect.

COPYRIGHT

Copyright (c) 2005 catpipe Systems ApS. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Dmitry Karasik <dk@catpipe.net>