[pve-devel] r5734 - in pve-access-control/trunk: . PVE
svn-commits at proxmox.com
svn-commits at proxmox.com
Mon Mar 21 09:46:21 CET 2011
Author: dietmar
Date: 2011-03-21 09:46:21 +0100 (Mon, 21 Mar 2011)
New Revision: 5734
Modified:
pve-access-control/trunk/ChangeLog
pve-access-control/trunk/PVE/RPCEnvironment.pm
Log:
immediately move finished
task to the index file.
Modified: pve-access-control/trunk/ChangeLog
===================================================================
--- pve-access-control/trunk/ChangeLog 2011-03-21 08:43:29 UTC (rev 5733)
+++ pve-access-control/trunk/ChangeLog 2011-03-21 08:46:21 UTC (rev 5734)
@@ -1,3 +1,8 @@
+2011-03-21 Proxmox Support Team <support at proxmox.com>
+
+ * PVE/RPCEnvironment.pm (active_workers): immediately move finished
+ task to the index file.
+
2011-03-17 Proxmox Support Team <support at proxmox.com>
* PVE/RPCEnvironment.pm (active_workers): update/get worker list
Modified: pve-access-control/trunk/PVE/RPCEnvironment.pm
===================================================================
--- pve-access-control/trunk/PVE/RPCEnvironment.pm 2011-03-21 08:43:29 UTC (rev 5733)
+++ pve-access-control/trunk/PVE/RPCEnvironment.pm 2011-03-21 08:46:21 UTC (rev 5734)
@@ -302,6 +302,8 @@
}
# 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.
sub active_workers {
my ($new_upid) = @_;
@@ -322,7 +324,6 @@
my $pstart = PVE::ProcFSTools::read_proc_starttime($task->{pid});
if ($pstart && ($pstart == $task->{pstart})) {
- print "RUNNING $task->{upid}\n";
push @$tlist, $task;
} else {
delete $task->{pid};
@@ -357,21 +358,14 @@
$save = 1;
}
- # we try to reduce the amount of data
- # only list running tasks and task not older than 5 minutes
- # try to limit to 25 tasks
- my $ctime = time();
- my $max = 25 - scalar(@$tlist);
-
my $archive = '';
+ my @arlist = ();
foreach my $task (@ta) {
- if (($max <= 0) || (($ctime - $task->{starttime}) > 60*5)) {
- $archive .= sprintf("$task->{upid} %08X $task->{status}\n",
- $task->{endtime});
+ if (!$task->{saved}) {
+ $archive .= sprintf("$task->{upid} %08X $task->{status}\n", $task->{endtime});
$save = 1;
- } else {
- push @$tlist, $task;
- $max--;
+ push @arlist, $task;
+ $task->{saved} = 1;
}
}
@@ -387,9 +381,23 @@
my $err = $@;
if ($err) {
syslog('err', $err);
- $save = 0; # don't write changes
+ foreach my $task (@arlist) { # mark as not saved
+ $task->{saved} = 0;
+ }
}
}
+
+ # 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;
+ push @$tlist, $task;
+ $max--;
+ }
+
PVE::INotify::write_file('active', $tlist) if $save;
return $tlist;
@@ -408,9 +416,10 @@
# STDOUT,STDERR are redirected to the filename returned by upid_decode
# NOTE: we simulate running in foreground if ($self->{type} eq 'cli')
sub fork_worker {
- my ($self, $dtype, $user, $function) = @_;
+ my ($self, $dtype, $id, $user, $function) = @_;
$dtype = 'unknown' if !defined ($dtype);
+ $id = '' if !defined ($id);
$user = 'root at pve' if !defined ($user);
@@ -438,7 +447,7 @@
my $upid = PVE::Tools::upid_encode ({
node => $node, pid => $workerpuid, pstart => $pstart,
- starttime => $starttime, type => $dtype, user => $user });
+ starttime => $starttime, type => $dtype, id => $id, user => $user });
my $outfh;
More information about the pve-devel
mailing list