summaryrefslogtreecommitdiffstats
path: root/mysqld-watcher.pl
diff options
context:
space:
mode:
authorjustdave%syndicomm.com <>2001-04-23 02:48:09 +0200
committerjustdave%syndicomm.com <>2001-04-23 02:48:09 +0200
commit3982da84f1676128d100d8be07d7ce3f36b20182 (patch)
tree0d70c5ffe80723f5399f1497c8da5f308c8e67e1 /mysqld-watcher.pl
parent367aab2f64fc40a22112b148f603a9a120713869 (diff)
downloadbugzilla-3982da84f1676128d100d8be07d7ce3f36b20182.tar.gz
bugzilla-3982da84f1676128d100d8be07d7ce3f36b20182.tar.xz
Per bug 76862, moving mysqld-watcher.pl into contrib
Diffstat (limited to 'mysqld-watcher.pl')
-rwxr-xr-xmysqld-watcher.pl102
1 files changed, 0 insertions, 102 deletions
diff --git a/mysqld-watcher.pl b/mysqld-watcher.pl
deleted file mode 100755
index d867c62c8..000000000
--- a/mysqld-watcher.pl
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bonsaitools/bin/perl -w
-#
-# The contents of this file are subject to the Mozilla Public
-# License Version 1.1 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS
-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 2000 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): Dan Mosedale <dmose@mozilla.org>
-#
-
-# mysqld-watcher.pl - a script that watches the running instance of
-# mysqld and kills off any long-running SELECTs against the shadow_db
-#
-use diagnostics;
-use strict;
-
-require "globals.pl";
-
-# some configurables:
-
-# length of time before a thread is eligible to be killed, in seconds
-#
-my $long_query_time = 600;
-#
-# the From header for any messages sent out
-#
-my $mail_from = "root\@lounge.mozilla.org";
-#
-# mail transfer agent. this should probably really be converted to a Param().
-#
-my $mta_program = "/usr/lib/sendmail -t -ODeliveryMode=deferred";
-
-# and STDIN is where we get the info about running threads
-#
-close(STDIN);
-open(STDIN, "/usr/bonsaitools/bin/mysqladmin processlist |");
-
-# iterate through the running threads
-#
-my @LONGEST = (0,0,0,0,0,0,0,0,0);
-while ( <STDIN> ) {
- my @F = split(/\|/);
-
- # if this line is not the correct number of fields, or if the thread-id
- # field contains Id, skip this line. both these cases indicate that this
- # line contains pretty-printing gunk and not thread info.
- #
- next if ( $#F != 9 || $F[1] =~ /Id/);
-
- if ( $F[4] =~ /shadow_bugs/ # shadowbugs database in use
- && $F[5] =~ /Query/ # this is actually a query
- && $F[6] > $long_query_time # this query has taken too long
- && $F[8] =~ /(select|SELECT)/ # only kill a select
- && $F[6] > $LONGEST[6] ) { # the longest running query seen
- @LONGEST = @F;
- }
-}
-
-# if we found anything, kill the database thread and send mail about it
-#
-if ($LONGEST[6] != 0) {
-
- system ("/usr/bonsaitools/bin/mysqladmin", "kill", $LONGEST[1]);
-
- # fire off an email telling the maintainer that we had to kill a thread
- #
- sendEmail($mail_from, Param("maintainer"),
- "long running MySQL thread killed",
- join(" ", @LONGEST) . "\n");
-}
-
-# send an email message
-#
-# should perhaps be moved to somewhere more global for use in bugzilla as a
-# whole; should also do more error-checking
-#
-sub sendEmail($$$$) {
- ($#_ == 3) || die("sendEmail: invalid number of arguments");
- my ($from, $to, $subject, $body) = @_;
-
- open(MTA, "|$mta_program");
- print MTA "From: $from\n";
- print MTA "To: $to\n";
- print MTA "Subject: $subject\n";
- print MTA "\n";
- print MTA $body;
- print MTA "\n";
- close(MTA);
-
-}