From c2163bfab58b7f9b7abc2f0aec3131b3705b9bd0 Mon Sep 17 00:00:00 2001
From: Benaka Moorthi <benaka.moorthi@gmail.com>
Date: Mon, 23 Sep 2013 05:10:19 -0400
Subject: [PATCH] Adding more debug output and show output in travis to try and
 solve deadlocking issue.

---
 .travis.yml                         | 1 +
 core/DataAccess/ArchiveWriter.php   | 9 ++++++++-
 tests/PHPUnit/config.ini.travis.php | 3 +++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index b2c54386f0..1a1bea5ab4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -48,6 +48,7 @@ after_success:
 after_script:
   - cat /var/log/nginx/error.log
   - cat $TRAVIS_BUILD_DIR/../piwik/tmp/php-fpm.log
+  - cat $TRAVIS_BUILD_DIR/../piwik/tmp/logs/logger_message.htm
   - cd $TRAVIS_BUILD_DIR
   - ./tests/travis/upload_artifacts.sh
 
diff --git a/core/DataAccess/ArchiveWriter.php b/core/DataAccess/ArchiveWriter.php
index 45027c5bd3..e4aac89d30 100644
--- a/core/DataAccess/ArchiveWriter.php
+++ b/core/DataAccess/ArchiveWriter.php
@@ -105,7 +105,14 @@ class ArchiveWriter
 								'" . $date . "',
 								0 "
             . " FROM $numericTable as tb1";
-        $db->exec($insertSql);
+        try { // TODO: this is temporary, remove when deadlocking issue is fixed
+            $db->exec($insertSql);
+        } catch (Exception $ex) {
+            if (\Zend_Registry::get('db')->isErrNo($e, 1213)) {
+                $deadlockInfo = \Piwik\Db::fetchAll("SHOW ENGINE INNODB STATUS");
+                Piwik::log("DEADLOCK INFO: " . print_r($deadlockInfo));
+            }
+        }
         Db::releaseDbLock($dbLockName);
         $selectIdSql = "SELECT idarchive FROM $numericTable WHERE name = ? LIMIT 1";
         $id = $db->fetchOne($selectIdSql, $locked);
diff --git a/tests/PHPUnit/config.ini.travis.php b/tests/PHPUnit/config.ini.travis.php
index c65df6a0f7..3c19606cc2 100644
--- a/tests/PHPUnit/config.ini.travis.php
+++ b/tests/PHPUnit/config.ini.travis.php
@@ -15,3 +15,6 @@ dbname            = piwik_tests
 adapter            = PDO_MYSQL ; PDO_MYSQL, MYSQLI, or PDO_PGSQL
 tables_prefix        = piwiktests_
 ;charset        = utf8
+
+[log]
+logger_message[] = file
\ No newline at end of file
-- 
GitLab