Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- /usr/lib64/perl5/site_perl/5.12.4/Mojo/Server/Hypnotoad.pm 2012-05-31 04:06:56.000000000 +1000
- +++ Mojo/Server/Hypnotoad.pm 2013-02-27 09:05:07.802873941 +1000
- @@ -10,7 +10,11 @@
- use Mojo::Server::Daemon;
- use POSIX qw(setsid WNOHANG);
- use Scalar::Util 'weaken';
- -use Time::HiRes 'ualarm';
- +use Time::HiRes qw/ualarm clock_gettime CLOCK_MONOTONIC/;
- +
- +sub _gettime {
- + return clock_gettime(CLOCK_MONOTONIC);
- +};
- sub DESTROY {
- my $self = shift;
- @@ -101,11 +105,11 @@
- while ((my $pid = waitpid -1, WNOHANG) > 0) { $self->_reap($pid) }
- };
- $SIG{QUIT} = sub { $self->{finished} = $self->{graceful} = 1 };
- - $SIG{USR2} = sub { $self->{upgrade} ||= time };
- + $SIG{USR2} = sub { $self->{upgrade} ||= _gettime };
- $SIG{TTIN} = sub { $c->{workers}++ };
- $SIG{TTOU} = sub {
- return unless $c->{workers} && $c->{workers}--;
- - $self->{workers}{shuffle keys %{$self->{workers}}}{graceful} ||= time;
- + $self->{workers}{shuffle keys %{$self->{workers}}}{graceful} ||= _gettime;
- };
- # Mainloop
- @@ -152,7 +156,7 @@
- return unless $self->{reader}->sysread(my $chunk, 4194304);
- # Update heartbeats
- - $self->{workers}{$1} and $self->{workers}{$1}{time} = time
- + $self->{workers}{$1} and $self->{workers}{$1}{time} = _gettime
- while $chunk =~ /(\d+)\n/g;
- }
- @@ -207,7 +211,7 @@
- # Timeout
- kill 'KILL', $self->{new}
- - if $self->{upgrade} + $c->{upgrade_timeout} <= time;
- + if $self->{upgrade} + $c->{upgrade_timeout} <= _gettime;
- }
- # Workers
- @@ -216,17 +220,17 @@
- # No heartbeat (graceful stop)
- my $interval = $c->{heartbeat_interval};
- my $timeout = $c->{heartbeat_timeout};
- - if ($w->{time} + $interval + $timeout <= time) {
- + if ($w->{time} + $interval + $timeout <= _gettime) {
- $self->{log}->info("Worker $pid has no heartbeat, restarting.");
- - $w->{graceful} ||= time;
- + $w->{graceful} ||= _gettime;
- }
- # Graceful stop with timeout
- - $w->{graceful} ||= time if $self->{graceful};
- + $w->{graceful} ||= _gettime if $self->{graceful};
- if ($w->{graceful}) {
- $self->{log}->debug("Trying to stop worker $pid gracefully.");
- kill 'QUIT', $pid;
- - $w->{force} = 1 if $w->{graceful} + $c->{graceful_timeout} <= time;
- + $w->{force} = 1 if $w->{graceful} + $c->{graceful_timeout} <= _gettime;
- }
- # Normal stop
- @@ -287,7 +291,7 @@
- # Manager
- die "Can't fork: $!" unless defined(my $pid = fork);
- - return $self->{workers}{$pid} = {time => time} if $pid;
- + return $self->{workers}{$pid} = {time => _gettime} if $pid;
- # Prepare lock file
- my $c = $self->{config};
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement