Automatically reset flapping mirrors after 24 hours
authorMagnus Hagander <magnus@hagander.net>
Sun, 23 Oct 2005 19:13:39 +0000 (19:13 +0000)
committerMagnus Hagander <magnus@hagander.net>
Sun, 23 Oct 2005 19:13:39 +0000 (19:13 +0000)
git-svn-id: https://pgweb.postgresql.org/svn/trunk@1015 8f5c7a92-453e-0410-a47f-ad33c8a6b003

automirror.php

index f28bcf80a001b8f4af5f5b2164743c38ad6d9d9f..e1a74ee8830d92778433d9344836b115bfd7b0bb 100644 (file)
        $log =& new Logger(1,$MAIL_TO);
        $db =& new Database($log,'host=62.65.68.80 user=mhapgmir dbname=mhapgmir');
 
-       $log->Status('Connecting to database...');
+       $log->status('Resetting flapping flags...');
+       $db->Query("UPDATE mirrors SET flapping=0,insync=0 WHERE enabled=1 AND flapping=1 AND (CURRENT_TIMESTAMP - (SELECT max(dat) FROM mirror_state_change WHERE mirrors.id=mirror_state_change.mirror) > '24 hours')");
+       
+       $log->Status('Fetching list of mirrors...');
        $mirrors = $db->Query("SELECT id,ip,insync,description FROM mirrors WHERE enabled=1 AND flapping=0", TRUE);
        
        $log->Status('Loading from wwwmaster...');
@@ -71,7 +74,7 @@
 
        // Look for flapping servers.
        // We define flapping has having more than four state-changes in the past five hours
-       // Note! We *never* reset the flapping flag, that has to be done manually.
+       // Note! We reset the flapping flag after 24 hours.
        $log->Status('Looking for flapping servers');
        $flappers = $db->Query("SELECT id,ip,description FROM mirrors INNER JOIN mirror_state_change ON mirrors.id=mirror_state_change.mirror WHERE current_timestamp-dat<'5 hours' AND mirrors.enabled=1 AND mirrors.flapping=0 GROUP BY id,ip,description HAVING count(*) > 3",TRUE);
        while ($row = pg_fetch_row($flappers)) {