]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/RESTEnvironment.pm
restenv: catch broadcast_tasklist errors gracefully
[pve-common.git] / src / PVE / RESTEnvironment.pm
index fc820fc0c8df4f95c9148083087f78724e912ec7..bab4a2e1843fa763dbeeb0a76ccd973590f1725b 100644 (file)
@@ -47,7 +47,8 @@ my $log_task_result = sub {
     }
 
     my $tlist = $rest_env->active_workers($upid);
-    $rest_env->broadcast_tasklist($tlist);
+    eval { $rest_env->broadcast_tasklist($tlist); };
+    syslog('err', $@) if $@;
 
     my $task;
     foreach my $t (@$tlist) {
@@ -60,8 +61,7 @@ my $log_task_result = sub {
        $msg = $task->{status};
     }
 
-    $rest_env->log_cluster_msg($pri, $user, "end task $upid $msg")
-       if $rest_env;
+    $rest_env->log_cluster_msg($pri, $user, "end task $upid $msg");
 };
 
 my $worker_reaper = sub {
@@ -210,11 +210,11 @@ sub set_user {
 }
 
 sub get_user {
-    my ($self) = @_;
+    my ($self, $noerr) = @_;
 
-    die "user name not set\n" if !$self->{user};
+    return $self->{user} if defined($self->{user}) || $noerr;
 
-    return $self->{user};
+    die "user name not set\n";
 }
 
 sub is_worker {
@@ -319,7 +319,6 @@ sub active_workers  {
        # we try to reduce the amount of data
        # list all running tasks and task and a few others
        # try to limit to 25 tasks
-       my $ctime = time();
        my $max = 25 - scalar(@$tlist);
         foreach my $task (@ta) {
            last if $max <= 0;
@@ -560,7 +559,8 @@ sub fork_worker {
     $self->log_cluster_msg('info', $user, "starting task $upid");
 
     my $tlist = $self->active_workers($upid, $sync);
-    $self->broadcast_tasklist($tlist);
+    eval { $self->broadcast_tasklist($tlist); };
+    syslog('err', $@) if $@;
 
     my $res = 0;