[rt-users] RT loses MySQL connection

Jay Christopherson jc.listmail at gmail.com
Thu Nov 21 18:20:19 EST 2013


I just installed a new instance of RT (4.2.1).  I've been using RT for
quite a long time now, through a lot of different versions, but this is a
new issue for me.

Everything starts up fine, but after about 10 minutes or so, it loses
connection to MySQL.  It can only be recovered by resarting the web server.
 It's not limited to any particular functionality - I can be doing anything
and the next click will serve up the issue.

It's always the same error in the logs, no matter what I was doing in the
web interface when it occurred:

*[6876] [Thu Nov 21 23:12:06 2013] [warning]: DBI
connect('dbname=rt4;host=localhost;port=3306','rt_user',...) failed: Can't
connect to local MySQL server through socket '' (2) at
/usr/local/share/perl5/DBIx/SearchBuilder/Handle.pm line 105.
(/usr/local/share/perl5/Carp.pm:168)*

The socket is at /var/lib/mysql/mysql.sock.

Below is a really long stack trace from the web interface that may or may
not be useful.  I've tried setting MYSQL_UNIX_PORT in RT_SiteConfig.pm,
moving it to /tmp, etc... but it just seems to transition from working fine
to broken for no apparent reason.

Thanks!
Jay


Error trace

Connect Failed Can't connect to local MySQL server through socket '' (2)
 at /var/opt/rt-4.2.1/sbin/../lib/RT.pm line 210.
 at /usr/local/share/perl5/Carp.pm line 166


   1. in Carp::croak at /usr/local/share/perl5/Carp.pm line 166

     163:     shortmess_heavy(@_);
     164: }
     165: *  166: sub croak   { die shortmess @_ }
   *  167: sub confess { die longmess @_ }
     168: sub carp    { warn shortmess @_ }
     169: sub cluck   { warn longmess @_ }

   Show function arguments
   2. in DBIx::SearchBuilder::Handle::Connect at
   /usr/local/share/perl5/DBIx/SearchBuilder/Handle.pm line 105

     102:     # Only connect if we're not connected to this source already
     103:     return undef if $self->dbh && $self->dbh->ping &&
$new_dsn eq $old_dsn;
     104: *  105:     my $handle = DBI->connect(
   *  106:         $new_dsn, $args{'User'}, $args{'Password'}
     107:     ) or croak "Connect Failed $DBI::errstr\n";
     108:

   Show function arguments
   3. in RT::Handle::Connect at /var/opt/rt-4.2.1/sbin/../lib/RT/Handle.pm
   line 124

     121:     }
     122:
     123:     $self->SUPER::Connect(*  124:         User =>
RT->Config->Get('DatabaseUser'),
   *  125:         Password => RT->Config->Get('DatabasePassword'),
     126:         DisconnectHandleOnDestroy => 1,
     127:         %args,

   Show function arguments
   4. in RT::ConnectToDatabase at /var/opt/rt-4.2.1/sbin/../lib/RT.pm line
   210

     207: sub ConnectToDatabase {
     208:     require RT::Handle;
     209:     $Handle = RT::Handle->new unless $Handle;*  210:
$Handle->Connect;
   *  211:     return $Handle;
     212: }
     213:

   5. in RT::Interface::Web::Handler::__ANON__ at
   /var/opt/rt-4.2.1/sbin/../lib/RT/Interface/Web/Handler.pm line 278

     275:             return $self->_psgi_response_cb( $res->finalize ) if $res;
     276:         }
     277: *  278:         RT::ConnectToDatabase() unless RT->InstallMode;
   *  279:
     280:         my $req = Plack::Request->new($env);
     281:

   Show function arguments
   6. in Plack::Middleware::Static::call at
   /usr/local/share/perl5/Plack/Middleware/Static.pm line 18

      15:         return $res;
      16:     }
      17: *   18:     return $self->app->($env);
   *   19: }
      20:
      21: sub _handle_static {

   Show function arguments
   7. in Plack::Component::__ANON__ at
   /usr/local/share/perl5/Plack/Component.pm line 50

      47: sub to_app {
      48:     my $self = shift;
      49:     $self->prepare_app;*   50:     return sub { $self->call(@_) };
   *   51: }
      52:
      53:

   Show function arguments
   8. in Plack::Middleware::Static::call at
   /usr/local/share/perl5/Plack/Middleware/Static.pm line 18

      15:         return $res;
      16:     }
      17: *   18:     return $self->app->($env);
   *   19: }
      20:
      21: sub _handle_static {

   Show function arguments
   9. in Plack::Component::__ANON__ at
   /usr/local/share/perl5/Plack/Component.pm line 50

      47: sub to_app {
      48:     my $self = shift;
      49:     $self->prepare_app;*   50:     return sub { $self->call(@_) };
   *   51: }
      52:
      53:

   Show function arguments
   10. in Plack::Middleware::Lint::call at
   /usr/local/share/perl5/Plack/Middleware/Lint.pm line 24

      21:     my $env = shift;
      22:
      23:     $self->validate_env($env);*   24:     my $res =
$self->app->($env);
   *   25:     return $self->validate_res($res);
      26: }
      27:

   Show function arguments
   11. in Plack::Middleware::StackTrace::__ANON__ at
   /usr/local/share/perl5/Plack/Component.pm line 50

      47: sub to_app {
      48:     my $self = shift;
      49:     $self->prepare_app;*   50:     return sub { $self->call(@_) };
   *   51: }
      52:
      53:

   12. in (eval) at /usr/local/share/perl5/Try/Tiny.pm line 78

      75:     $@ = $prev_error;
      76:
      77:     # evaluate the try block in the correct context*   78:
  if ( $wantarray ) {
   *   79:       @ret = $try->();
      80:     } elsif ( defined $wantarray ) {
      81:       $ret[0] = $try->();

   13. in Plack::Middleware::StackTrace::call at
   /usr/local/share/perl5/Try/Tiny.pm line 74

      71:
      72:   # failed will be true if the eval dies, because 1 will not
be returned
      73:   # from the eval body*   74:   my $failed = not eval {
   *   75:     $@ = $prev_error;
      76:
      77:     # evaluate the try block in the correct context

   Show function arguments
   14. in Plack::Component::__ANON__ at
   /usr/local/share/perl5/Plack/Component.pm line 50

      47: sub to_app {
      48:     my $self = shift;
      49:     $self->prepare_app;*   50:     return sub { $self->call(@_) };
   *   51: }
      52:
      53:

   Show function arguments
   15. in Plack::Middleware::AccessLog::call at
   /usr/local/share/perl5/Plack/Middleware/AccessLog.pm line 24

      21:     my $self = shift;
      22:     my($env) = @_;
      23: *   24:     my $res = $self->app->($env);
   *   25:
      26:     if ( ref($res) && ref($res) eq 'ARRAY' ) {
      27:         my $content_length = Plack::Util::content_length($res->[2]);

   Show function arguments
   16. in Plack::Component::__ANON__ at
   /usr/local/share/perl5/Plack/Component.pm line 50

      47: sub to_app {
      48:     my $self = shift;
      49:     $self->prepare_app;*   50:     return sub { $self->call(@_) };
   *   51: }
      52:
      53:

   Show function arguments
   17. in (eval) at /usr/local/share/perl5/Plack/Util.pm line 142

     139: sub run_app($$) {
     140:     my($app, $env) = @_;
     141: *  142:     return eval { $app->($env) } || do {
   *  143:         my $body = "Internal Server Error";
     144:         $env->{'psgi.errors'}->print($@);
     145:         [ 500, [ 'Content-Type' => 'text/plain',
'Content-Length' => length($body) ], [ $body ] ];

   18. in Plack::Util::run_app at /usr/local/share/perl5/Plack/Util.pm line
   142

     139: sub run_app($$) {
     140:     my($app, $env) = @_;
     141: *  142:     return eval { $app->($env) } || do {
   *  143:         my $body = "Internal Server Error";
     144:         $env->{'psgi.errors'}->print($@);
     145:         [ 500, [ 'Content-Type' => 'text/plain',
'Content-Length' => length($body) ], [ $body ] ];

   Show function arguments
   19. in Plack::Handler::FCGI::run at
   /usr/local/share/perl5/Plack/Handler/FCGI.pm line 134

     131:             $env->{HTTP_AUTHORIZATION} = $HTTP_AUTHORIZATION;
     132:         }
     133: *  134:         my $res = Plack::Util::run_app $app, $env;
   *  135:
     136:         if (ref $res eq 'ARRAY') {
     137:             $self->_handle_response($res);

   Show function arguments
   20. in Plack::Loader::run at /usr/local/share/perl5/Plack/Loader.pm line
   84

      81:
      82: sub run {
      83:     my($self, $server, $builder) = @_;*   84:
$server->run($self->{app});
   *   85: }
      86:
      87: 1;

   Show function arguments
   21. in Plack::Runner::run at /usr/local/share/perl5/Plack/Runner.pm line
   277

     274:     $loader->preload_app($app);
     275:
     276:     my $server = $self->load_server($loader);*  277:
$loader->run($server);
   *  278: }
     279:
     280: 1;

   Show function arguments
   22. at /usr/local/bin/plackup line 10

       7:
       8: my $runner = Plack::Runner->new;
       9: $runner->parse_options(@ARGV);*   10: $runner->run;
   *   11:
      12: __END__
      13:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20131121/aaed652b/attachment.htm>


More information about the rt-users mailing list