diff options
Diffstat (limited to 'heartbeat.cgi')
-rw-r--r-- | heartbeat.cgi | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/heartbeat.cgi b/heartbeat.cgi new file mode 100644 index 000000000..47f3d59a2 --- /dev/null +++ b/heartbeat.cgi @@ -0,0 +1,45 @@ +#!/usr/bin/perl -T +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +use 5.10.1; +use strict; +use warnings; + +use lib qw(. lib local/lib/perl5); + +use Bugzilla; +use Bugzilla::Constants; +use Bugzilla::Error; +use Bugzilla::Update; + +my $ok = eval { + # Ensure that any Throw*Error calls just use die, rather than trying to return html... + Bugzilla->error_mode(ERROR_MODE_DIE); + my $memcached = Bugzilla->memcached; + my $dbh = Bugzilla->dbh; + my $database_ok = $dbh->ping; + my $versions = $memcached->{memcached}->server_versions; + my $memcached_ok = keys %$versions; + + die "database not available" unless $database_ok; + die "memcached server(s) not available" unless $memcached_ok; + die "mod_perl not configured?" unless $ENV{MOD_PERL}; + 1; +}; +warn "heartbeat error: $@" if !$ok && $@; + +my $cgi = Bugzilla->cgi; +print $cgi->header(-type => 'text/plain', -status => $ok ? '200 OK' : '500 Internal Server Error'); +print $ok ? "Bugzilla OK\n" : "Bugzilla NOT OK\n"; + +if ($ENV{MOD_PERL}) { + my $r = $cgi->r; + # doing this supresses the error document, but does not change the http response code. + $r->rflush; + $r->status(200); +} |