[Midnightbsd-cvs] mports: lib/Magus: various bg fixes, you can now halt and resume the
ctriv at midnightbsd.org
ctriv at midnightbsd.org
Mon Oct 29 13:07:48 EDT 2007
Log Message:
-----------
various bg fixes, you can now halt and resume the cluster.
Modified Files:
--------------
mports/Tools/lib/Magus:
Cluster.pm (r1.1 -> r1.2)
Task.pm (r1.1 -> r1.2)
mports/Tools/lib/Magus/Task:
UpdateMports.pm (r1.1 -> r1.2)
Wait.pm (r1.1 -> r1.2)
-------------- next part --------------
Index: Task.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Magus/Task.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -LTools/lib/Magus/Task.pm -LTools/lib/Magus/Task.pm -u -r1.1 -r1.2
--- Tools/lib/Magus/Task.pm
+++ Tools/lib/Magus/Task.pm
@@ -39,8 +39,8 @@
use Magus::Task::UpdateMports ();
-__PACKAGE__->table('results');
-__PACKAGE__->columns(All => qw/machine type completed/);
+__PACKAGE__->table('tasks');
+__PACKAGE__->columns(All => qw/id type machine started completed/);
__PACKAGE__->has_a(machine => 'Magus::Machine');
@@ -49,7 +49,9 @@
my $self = $class->SUPER::construct(@args);
- bless $self, ref $self . "::" . $self->type;
+ my $subclass = join('::', ref $self, $self->type);
+
+ bless $self, $subclass;
return $self;
}
@@ -59,7 +61,7 @@
sub set_callbacks {
my ($class, %cbs) = @_;
- $class->callbacks = \%cbs;
+ $class->callbacks(\%cbs);
}
sub is_complete {
Index: Cluster.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Magus/Cluster.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -LTools/lib/Magus/Cluster.pm -LTools/lib/Magus/Cluster.pm -u -r1.1 -r1.2
--- Tools/lib/Magus/Cluster.pm
+++ Tools/lib/Magus/Cluster.pm
@@ -40,7 +40,10 @@
}
sub resume {
- $_->complete(1) for Magus::Tasks->search(type => wait);
+ foreach my $task (Magus::Task->search(type => 'Wait', started => 1)) {
+ $task->completed(1);
+ $task->update;
+ }
}
@@ -53,20 +56,28 @@
while ($running_count > 0) {
$running_count = Magus::Task->search(type => $type, complete => 0)->count;
+ sleep(5);
}
}
-sub _send_task {
+sub _send_tasks {
my ($type) = @_;
+
+ my $count = 0;
+ foreach my $machine (Magus::Machine->retrieve_all) {
+ next if $machine->id == $Magus::Machine->id;
- foreach my $machine (Magus::Machine->retrive_all) {
- next if $machine eq $Magus::Machine;
-
Magus::Task->insert({
machine => $machine,
type => $type
});
+
+ $count++;
+ }
+
+ while (Magus::Task->search(type => $type, started => 1)->count != $count) {
+ sleep(1);
}
}
Index: UpdateMports.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Magus/Task/UpdateMports.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -LTools/lib/Magus/Task/UpdateMports.pm -LTools/lib/Magus/Task/UpdateMports.pm -u -r1.1 -r1.2
--- Tools/lib/Magus/Task/UpdateMports.pm
+++ Tools/lib/Magus/Task/UpdateMports.pm
@@ -47,6 +47,8 @@
sub exec {
my ($self) = @_;
+
+ $self->started(1); $self->update;
$self->callbacks->{'log'}->('Updating mports tree');
Index: Wait.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Magus/Task/Wait.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -LTools/lib/Magus/Task/Wait.pm -LTools/lib/Magus/Task/Wait.pm -u -r1.1 -r1.2
--- Tools/lib/Magus/Task/Wait.pm
+++ Tools/lib/Magus/Task/Wait.pm
@@ -46,17 +46,29 @@
=cut
-
sub exec {
my ($self) = @_;
+ $self->started(1); $self->update;
+
+ $self->callbacks->{'log'}->("Halted");
+
while (1) {
- sleep(60);
+ sleep(1);
+
+ #
+ # Run other tasks
+ #
+ if (my @torun = Magus::Task->retrieve_from_sql('machine=? AND id!=? AND started=0 AND completed=0', $Magus::Machine, $self->id)) {
+ $_->exec for @torun;
+ }
if ($self->is_complete) {
last;
}
}
+
+ $self->delete;
}
More information about the Midnightbsd-cvs
mailing list