Advertisement
Guest User

Untitled

a guest
Feb 26th, 2013
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.65 KB | None | 0 0
  1. --- /usr/lib64/perl5/site_perl/5.12.4/Mojo/Server/Hypnotoad.pm  2012-05-31 04:06:56.000000000 +1000
  2. +++ Mojo/Server/Hypnotoad.pm    2013-02-27 09:05:07.802873941 +1000
  3. @@ -10,7 +10,11 @@
  4.  use Mojo::Server::Daemon;
  5.  use POSIX qw(setsid WNOHANG);
  6.  use Scalar::Util 'weaken';
  7. -use Time::HiRes 'ualarm';
  8. +use Time::HiRes qw/ualarm clock_gettime CLOCK_MONOTONIC/;
  9. +
  10. +sub _gettime {
  11. +   return clock_gettime(CLOCK_MONOTONIC);
  12. +};
  13.  
  14.  sub DESTROY {
  15.    my $self = shift;
  16. @@ -101,11 +105,11 @@
  17.      while ((my $pid = waitpid -1, WNOHANG) > 0) { $self->_reap($pid) }
  18.    };
  19.    $SIG{QUIT} = sub { $self->{finished} = $self->{graceful} = 1 };
  20. -  $SIG{USR2} = sub { $self->{upgrade} ||= time };
  21. +  $SIG{USR2} = sub { $self->{upgrade} ||= _gettime };
  22.    $SIG{TTIN} = sub { $c->{workers}++ };
  23.    $SIG{TTOU} = sub {
  24.      return unless $c->{workers} && $c->{workers}--;
  25. -    $self->{workers}{shuffle keys %{$self->{workers}}}{graceful} ||= time;
  26. +    $self->{workers}{shuffle keys %{$self->{workers}}}{graceful} ||= _gettime;
  27.    };
  28.  
  29.    # Mainloop
  30. @@ -152,7 +156,7 @@
  31.    return unless $self->{reader}->sysread(my $chunk, 4194304);
  32.  
  33.    # Update heartbeats
  34. -  $self->{workers}{$1} and $self->{workers}{$1}{time} = time
  35. +  $self->{workers}{$1} and $self->{workers}{$1}{time} = _gettime
  36.      while $chunk =~ /(\d+)\n/g;
  37.  }
  38.  
  39. @@ -207,7 +211,7 @@
  40.  
  41.      # Timeout
  42.      kill 'KILL', $self->{new}
  43. -      if $self->{upgrade} + $c->{upgrade_timeout} <= time;
  44. +      if $self->{upgrade} + $c->{upgrade_timeout} <= _gettime;
  45.    }
  46.  
  47.    # Workers
  48. @@ -216,17 +220,17 @@
  49.      # No heartbeat (graceful stop)
  50.      my $interval = $c->{heartbeat_interval};
  51.      my $timeout  = $c->{heartbeat_timeout};
  52. -    if ($w->{time} + $interval + $timeout <= time) {
  53. +    if ($w->{time} + $interval + $timeout <= _gettime) {
  54.        $self->{log}->info("Worker $pid has no heartbeat, restarting.");
  55. -      $w->{graceful} ||= time;
  56. +      $w->{graceful} ||= _gettime;
  57.      }
  58.  
  59.      # Graceful stop with timeout
  60. -    $w->{graceful} ||= time if $self->{graceful};
  61. +    $w->{graceful} ||= _gettime if $self->{graceful};
  62.      if ($w->{graceful}) {
  63.        $self->{log}->debug("Trying to stop worker $pid gracefully.");
  64.        kill 'QUIT', $pid;
  65. -      $w->{force} = 1 if $w->{graceful} + $c->{graceful_timeout} <= time;
  66. +      $w->{force} = 1 if $w->{graceful} + $c->{graceful_timeout} <= _gettime;
  67.      }
  68.  
  69.      # Normal stop
  70. @@ -287,7 +291,7 @@
  71.  
  72.    # Manager
  73.    die "Can't fork: $!" unless defined(my $pid = fork);
  74. -  return $self->{workers}{$pid} = {time => time} if $pid;
  75. +  return $self->{workers}{$pid} = {time => _gettime} if $pid;
  76.  
  77.    # Prepare lock file
  78.    my $c    = $self->{config};
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement