[pve-devel] [PATCH RFC access-control] Add is_worker to RPCEnvironment
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Mar 15 13:58:44 CET 2016
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 | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/PVE/RPCEnvironment.pm b/PVE/RPCEnvironment.pm
index b3a7dc7..0651eb7 100644
--- a/PVE/RPCEnvironment.pm
+++ b/PVE/RPCEnvironment.pm
@@ -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"; };
--
2.1.4
More information about the pve-devel
mailing list