Add is_worker to RPCEnvironment
authorFabian Gr├╝nbichler <f.gruenbichler@proxmox.com>
Tue, 15 Mar 2016 12:58:44 +0000 (13:58 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 15 Mar 2016 15:47:11 +0000 (16:47 +0100)
after forking the actual worker process, the child/worker
sets a flag that can be checked later on by methods called
in the worker.

used in the ZFS storage plugins in pve-storage to decide on
a short or long default timeout for ZFS operations.

PVE/RPCEnvironment.pm

index b3a7dc7..3ec2c91 100644 (file)
@@ -28,6 +28,7 @@ my $pve_env;
 # that (also see perlipc)
 
 my $WORKER_PIDS;
+my $WORKER_FLAG = 0;
 
 my $log_task_result = sub {
     my ($upid, $user, $status) = @_;
@@ -614,6 +615,10 @@ sub get_user {
     return $self->{user};
 }
 
+sub is_worker {
+    return $WORKER_FLAG;
+}
+
 # read/update list of active workers 
 # we move all finished tasks to the archive index,
 # but keep aktive and most recent task in the active file.
@@ -808,6 +813,7 @@ sub fork_worker {
     if (!$cpid) { # child
 
        $0 = "task $upid";
+       $WORKER_FLAG = 1;
 
        $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { die "received interrupt\n"; };