From 53e7f82b534eef2b513fe31bcb2a9c719a7ee746 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Fri, 18 Aug 2017 11:11:29 -0400 Subject: [PATCH] LP#1711194: avoid division by zero errors Under some circumstances, osrf_control --diagnostic may not be able to deduce the correct max_children setting for a service, e.g., if it's run without --localhost on a system that doesn't have a opensrf.xml config section specifying active apps for a specific hostname. When that happens, just display the count of running drones rather than displaying error messages about undefined $dmax values and divisions by zero. Signed-off-by: Galen Charlton Signed-off-by: Bill Erickson --- bin/opensrf-perl.pl.in | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/opensrf-perl.pl.in b/bin/opensrf-perl.pl.in index 021f00e..40015e3 100755 --- a/bin/opensrf-perl.pl.in +++ b/bin/opensrf-perl.pl.in @@ -267,8 +267,12 @@ sub do_diagnostic { my @drones = `pgrep -f "Drone \\[$svc\\]"`; my $dcount = scalar(@drones); my $dmax = $max_children_map{$svc}; - $str .= "#drones=$dcount/$dmax "; - $str .= sprintf('%3d%%', (int(($dcount / $dmax) * 100))); + if (defined($dmax) && $dmax > 0) { + $str .= "#drones=$dcount/$dmax "; + $str .= sprintf('%3d%%', (int(($dcount / $dmax) * 100))); + } else { + $str .= "#drones=$dcount"; + } msg($str); msg("\tERR $svc has no running drones.") unless @drones; } -- 2.43.2