[pve-devel] [RFC pve-common] improve error handling.
Dietmar Maurer
dietmar at proxmox.com
Mon May 22 10:11:17 CEST 2017
Maybe you want to use Carp? (see "man Carp")
> On May 22, 2017 at 10:03 AM Wolfgang Link <w.link at proxmox.com> wrote:
>
>
> Get more information about the function where a timeout occurs.
> ---
> src/PVE/Tools.pm | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
> index f84855d..d3034de 100644
> --- a/src/PVE/Tools.pm
> +++ b/src/PVE/Tools.pm
> @@ -88,7 +88,18 @@ use constant {O_PATH => 0x00200000,
> sub run_with_timeout {
> my ($timeout, $code, @param) = @_;
>
> - die "got timeout\n" if $timeout <= 0;
> + # We need more information if a timeout occurs.
> + my $packname = __PACKAGE__;
> + my $func = (caller(2))[3];
> + my $line = (caller(2))[2];
> +
> + # if the caller is in this package we get no real information about it.
> + if ($func =~ m/\Q$packname\E/) {
> + $func = (caller(3))[3];
> + $line = (caller(3))[2];
> + }
> +
> + die "got timeout: $func, $line" if $timeout <= 0;
>
> my $prev_alarm = alarm 0; # suspend outer alarm early
>
> @@ -117,7 +128,7 @@ sub run_with_timeout {
> # this shouldn't happen anymore?
> die "unknown error" if $sigcount && !$err; # seems to happen sometimes
>
> - die $err if $err;
> + die "$err: $func, $line" if $err;
>
> return $res;
> }
> --
> 2.1.4
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
More information about the pve-devel
mailing list