diff --git a/ACU/Process.pm b/ACU/Process.pm index f0cc632..13ed468 100644 --- a/ACU/Process.pm +++ b/ACU/Process.pm @@ -62,9 +62,23 @@ sub do_work ($$$@) my $sax_handler = ProcessHandler->new($args); my $parser = XML::SAX::ParserFactory->parser( Handler => $sax_handler ); - $parser->parse_string(${ $_[0]{argref} }); + eval { + $parser->parse_string(${ $_[0]{argref} }); + } + if ($@) { + my $err = "Parse error: $@"; + log ERROR, $err; + return $err; + } - return $subref->($given_args, $args); + eval { + return $subref->($given_args, $args); + } + if ($@) { + my $err = $@; + log ERROR, $err; + return $err; + } } sub register_no_parse ($$;$) @@ -76,13 +90,23 @@ sub register_no_parse ($$;$) my $worker = Gearman::Worker->new; $worker->job_servers('gearmand:4730'); - $worker->register_function($funcname => sub { return $subref->($given_arg, $_[0]{argref}); }); + $worker->register_function($funcname => sub + { + eval { + return $subref->($given_arg, $_[0]{argref}); + } + if ($@) { + my $err = $@; + log ERROR, $err; + return $err; + } + }); # Disable exit on warning or error $ACU::Log::fatal_warn = 0; $ACU::Log::fatal_error = 0; - log DEBUG, "$funcname registered"; + log INFO, "$funcname registered"; $worker->work while 1; } @@ -103,7 +127,7 @@ sub register ($$;$$) $ACU::Log::fatal_warn = 0; $ACU::Log::fatal_error = 0; - log DEBUG, "$funcname registered"; + log INFO, "$funcname registered"; $worker->work while 1; }