From f57d88fa24a4e72584ac6ef121613e131927a9af Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Jul 22 2010 20:53:45 +0000 Subject: Bug 617013 - repl-monitor.pl use cpu upto 90% https://bugzilla.redhat.com/show_bug.cgi?id=617013 Resolves: bug 617013 Bug Description: repl-monitor.pl use cpu upto 90% Reviewed by: nhosoi (Thanks!) Branch: master Fix Description: The script recursively looks for servers - looks at servers in replication agreements, adds them, then looks for replication agreements on those servers, etc. When it added the servers, the logic was faulty for seeing if the server was already in the list. So it just kept recursing forever. One of the problems was that the script did not like a hostname with a non \w char in it, such as the "-" char. There was another problem with matching a server without a shadowport. Platforms tested: RHEL5 x86_64 Flag Day: no Doc impact: no (cherry picked from commit 7de9007936a790625258967bfb959bc5989d25f2) --- diff --git a/ldap/admin/src/scripts/repl-monitor.pl.in b/ldap/admin/src/scripts/repl-monitor.pl.in index 4ae9bf4..b8e6d2d 100755 --- a/ldap/admin/src/scripts/repl-monitor.pl.in +++ b/ldap/admin/src/scripts/repl-monitor.pl.in @@ -783,7 +783,7 @@ sub add_server # Remove the domain name from the host name my ($hostnode) = $host; - $hostnode = $1 if $host =~ /^(\w+)\./; + $hostnode = $1 if $host =~ /^(.+?)\./; # new host:port if ($binddn eq "" || $bindpwd eq "" && $bindcert eq "") { @@ -819,6 +819,7 @@ sub add_server for ($i = 0; $i <= $#servers; $i++) { return $i if ($servers[$i] =~ /$hostnode($domainpattern)*:\d*=$shadowport\D/i); + return $i if ($servers[$i] =~ /$hostnode($domainpattern)*:$port\D/i); } if ($shadowport) {