Right, so I am not particularly proud of this but again, more of a note to self than anything. Secondly, I am most certainly not a Perl expert. This little hack should probably never be used or put into any production Mac setup. If you know of a proper fix, please do let me know.
Lastly, this is varnish-agent and not varnish-agent2. The former is written in Perl while the latter is written in C and uses Varnish API directly.
OK! Now that the disclaimer is out of the way, onward with the dodgy! So when running varnish-agent on OSX 10.8.2, one may encounter the following issue:
Can't kill a non-numeric process ID at /Library/Perl/5.12/File/Pid.pm line 124.
The quick fix is proposed here involves adding this line to the the Pid.pm file on line 124.
return undef unless $pid > 0;
So your subroutine in Pid.pm will end up looking more like this.
sub running {
my $self = shift;
my $pid = $self->_get_pid_from_file;
return undef unless $pid > 0;
return kill(0, $pid)
? $pid
: undef;
}
I am a Perl expert. This has nothing to do with Perl 5.12 itself because File-PID is a 3rd party CPAN module.
The File-PID distribution is unmaintained and buggy, see reviews at “http://cpanratings.perl.org/dist/File-Pid”. Your bug is a long-known one, discussion/patch is available from “https://rt.cpan.org/Ticket/Display.html?id=18960″. It is a mistake of varnish-agent to depend on File-PID. The authors should change their code and depend on a better PID handling module. If you care about varnish-agent, report this upstream so it can be taken care of properly; writing in your blog accomplishes nothing.
Cool thanks for the comment. The good news is varnish-agent2 is re-written in C and this issue will be a thing of the past. Good to hear from an expert on this matter.