Perf dashboard JSON API should fail gracefully when postgres is down
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Jan 2016 01:00:25 +0000 (01:00 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Jan 2016 01:00:25 +0000 (01:00 +0000)
https://bugs.webkit.org/show_bug.cgi?id=152812

Reviewed by Chris Dumez.

Even though all JSON APIs returned DatabaseConnectionFailure as the status when Database::connect
returned a falsy value, PHP was spitting out warnings and producing HTTP responses that cannot be
parsed as a JSON when pg_connect failed.

Fixed the bug by suppressing warning messages in pg_connect.

* public/include/db.php:
(Database::connect): Use '@' prefix to suppress warning messages.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@194680 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Websites/perf.webkit.org/ChangeLog
Websites/perf.webkit.org/public/include/db.php

index 39aa0ae..49bd549 100644 (file)
@@ -1,5 +1,21 @@
 2016-01-06  Ryosuke Niwa  <rniwa@webkit.org>
 
+        Perf dashboard JSON API should fail gracefully when postgres is down
+        https://bugs.webkit.org/show_bug.cgi?id=152812
+
+        Reviewed by Chris Dumez.
+
+        Even though all JSON APIs returned DatabaseConnectionFailure as the status when Database::connect
+        returned a falsy value, PHP was spitting out warnings and producing HTTP responses that cannot be
+        parsed as a JSON when pg_connect failed.
+
+        Fixed the bug by suppressing warning messages in pg_connect.
+
+        * public/include/db.php:
+        (Database::connect): Use '@' prefix to suppress warning messages.
+
+2016-01-06  Ryosuke Niwa  <rniwa@webkit.org>
+
         Perf dashboard should auto-generate manifest file when one is missing
         https://bugs.webkit.org/show_bug.cgi?id=152813
 
index 1f1880e..2dac8c4 100644 (file)
@@ -82,7 +82,7 @@ class Database
 
     function connect() {
         $databaseConfig = config('database');
-        $this->connection = pg_connect('host=' . $databaseConfig['host'] . ' port=' . $databaseConfig['port']
+        $this->connection = @pg_connect('host=' . $databaseConfig['host'] . ' port=' . $databaseConfig['port']
             . ' dbname=' . $databaseConfig['name'] . ' user=' . $databaseConfig['username'] . ' password=' . $databaseConfig['password']);
         return $this->connection ? true : false;
     }