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 or AutoCommit
is not set.
RaiseError
is not called when a connection is restarted, but rather when ReconnectMaxTries
tries are exhausted, and depending on RaiseError
, the code dies or returns undef
from the connect
call. All other error-related attributes (PrintError
, HandleError
) are not affected.
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>