-Have blade and ipmi plugins only decrease known child count when the child exiting belongs to it explicitly

-Have blade and ipmi plugin children wait longer for parent acknowledgement
-Ignore failure to deliver acknowledgements to children that give up and exit before that can occur


git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@3075 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
jbjohnso 2009-04-03 14:40:21 +00:00
parent 1b9a5bbb3d
commit 20775a4377
2 changed files with 6 additions and 6 deletions

View File

@ -264,7 +264,7 @@ sub waitforack {
my $select = new IO::Select;
$select->add($sock);
my $str;
if ($select->can_read(10)) { # Continue after 10 seconds, even if not acked...
if ($select->can_read(60)) { # Continue after 60 seconds, even if not acked...
if ($str = <$sock>) {
} else {
$select->remove($sock); #Block until parent acks data
@ -2178,7 +2178,7 @@ sub process_request {
my $children = 0;
$SIG{CHLD} = sub { my $cpid; while ($cpid = waitpid(-1, WNOHANG) > 0) { delete $mm_comm_pids{$cpid}; $children--; } };
$SIG{CHLD} = sub { my $cpid; while ($cpid = waitpid(-1, WNOHANG) > 0) { if ($mm_comm_pids{$cpid}) { delete $mm_comm_pids{$cpid}; $children--; } } };
my $inputs = new IO::Select;;
foreach my $info (@$moreinfo) {
$info=~/^\[(.*)\]\[(.*)\]\[(.*)\]/;
@ -2688,7 +2688,7 @@ sub forward_data {
while ($data !~ /ENDOFFREEZE6sK4ci/) {
$data .= <$rfh>;
}
print $rfh "ACK\n";
eval { print $rfh "ACK\n"; }; #Ignore ack loss due to child giving up and exiting, we don't actually explicitly care about the acks
my $responses=thaw($data);
foreach (@$responses) {
$callback->($_);

View File

@ -361,7 +361,7 @@ sub waitforack {
my $select = new IO::Select;
$select->add($sock);
my $str;
if ($select->can_read(10)) { # Continue after 10 seconds, even if not acked...
if ($select->can_read(60)) { # Continue after 60 seconds, even if not acked...
if ($str = <$sock>) {
} else {
$select->remove($sock); #Block until parent acks data
@ -6200,7 +6200,7 @@ sub process_request {
}
my $children = 0;
$SIG{CHLD} = sub {my $kpid; do { $kpid = waitpid(-1, WNOHANG); if ($kpid > 0) { delete $bmc_comm_pids{$kpid}; $children--; } } while $kpid > 0; };
$SIG{CHLD} = sub {my $kpid; do { $kpid = waitpid(-1, WNOHANG); if ($bmc_comm_pids{$kpid}) { delete $bmc_comm_pids{$kpid}; $children--; } } while $kpid > 0; };
my $sub_fds = new IO::Select;
foreach (@donargs) {
while ($children > $ipmimaxp) {
@ -6291,7 +6291,7 @@ sub forward_data { #unserialize data from pipe, chunk at a time, use magic to de
while ($data !~ /ENDOFFREEZE6sK4ci/) {
$data .= <$rfh>;
}
print $rfh "ACK\n";
eval { print $rfh "ACK\n"; }; # Ignore ack loss to child that has given up and exited
my $responses=thaw($data);
foreach (@$responses) {
#save the nodes that has errors and the ones that has no-op for use by the node status monitoring