From 52e37e2dc2c5eb62ca095f45eb38a17ffc8f3b14 Mon Sep 17 00:00:00 2001 From: Daniel Nichter Date: Sun, 19 May 2013 12:46:47 -0700 Subject: [PATCH] Fix stopping logger thread for real. --- bin/pt-agent | 5 +++-- lib/Percona/Agent/Logger.pm | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/bin/pt-agent b/bin/pt-agent index fb4c6e56..b6aa4d0b 100755 --- a/bin/pt-agent +++ b/bin/pt-agent @@ -4869,7 +4869,7 @@ sub enable_online_logging { && $max_log_entries-- && (my $entry = $self->_message_queue->dequeue()) ) { - if ( scalar @$entry ) { + if ( defined $entry->[0] ) { push @log_entries, Percona::WebAPI::Resource::LogEntry->new( log_level => $entry->[0], message => $entry->[1], @@ -4978,7 +4978,8 @@ sub _log { sub DESTROY { my $self = shift; if ( $self->online_logging ) { - $self->_message_queue->enqueue( () ); # stop thread's while loop + my @stop :shared = (undef, undef); + $self->_message_queue->enqueue(\@stop); # stop the thread $self->_thread->join(); } return; diff --git a/lib/Percona/Agent/Logger.pm b/lib/Percona/Agent/Logger.pm index 76d51cca..2b59ebc7 100644 --- a/lib/Percona/Agent/Logger.pm +++ b/lib/Percona/Agent/Logger.pm @@ -99,14 +99,14 @@ sub enable_online_logging { && (my $entry = $self->_message_queue->dequeue()) ) { # $entry = [ level, "message" ] - if ( scalar @$entry ) { + if ( defined $entry->[0] ) { push @log_entries, Percona::WebAPI::Resource::LogEntry->new( log_level => $entry->[0], message => $entry->[1], ); } else { - # empty entry = stop + # Got "stop" entry: [ undef, undef ] $oktorun = 0; } } @@ -210,7 +210,8 @@ sub _log { sub DESTROY { my $self = shift; if ( $self->online_logging ) { - $self->_message_queue->enqueue( () ); # stop thread's while loop + my @stop :shared = (undef, undef); + $self->_message_queue->enqueue(\@stop); # stop the thread $self->_thread->join(); } return;