From a00441220d48d7de88e4072950d8088a323e91bb Mon Sep 17 00:00:00 2001
From: Matthieu Napoli <matthieu@mnapoli.fr>
Date: Mon, 16 Feb 2015 12:58:03 +1300
Subject: [PATCH] Added log statements in the task scheduler to debug future
 problems and #6868

---
 core/Scheduler/Scheduler.php                   | 15 ++++++++++++++-
 tests/PHPUnit/Unit/Scheduler/SchedulerTest.php |  5 +++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/core/Scheduler/Scheduler.php b/core/Scheduler/Scheduler.php
index 68c78135ad..7156e1be9c 100644
--- a/core/Scheduler/Scheduler.php
+++ b/core/Scheduler/Scheduler.php
@@ -10,6 +10,7 @@ namespace Piwik\Scheduler;
 
 use Exception;
 use Piwik\Timer;
+use Psr\Log\LoggerInterface;
 
 /**
  * Schedules task execution.
@@ -62,10 +63,16 @@ class Scheduler
      */
     private $loader;
 
-    public function __construct(TaskLoader $loader)
+    /**
+     * @var LoggerInterface
+     */
+    private $logger;
+
+    public function __construct(TaskLoader $loader, LoggerInterface $logger)
     {
         $this->timetable = new Timetable();
         $this->loader = $loader;
+        $this->logger = $logger;
     }
 
     /**
@@ -85,6 +92,8 @@ class Scheduler
     {
         $tasks = $this->loader->loadTasks();
 
+        $this->logger->debug('{count} scheduled tasks loaded', array('count' => count($tasks)));
+
         // remove from timetable tasks that are not active anymore
         $this->timetable->removeInactiveTasks($tasks);
 
@@ -131,6 +140,8 @@ class Scheduler
      */
     public function rescheduleTask(Task $task)
     {
+        $this->logger->debug('Rescheduling task {task}', array('task' => $task->getName()));
+
         $this->timetable->rescheduleTask($task);
     }
 
@@ -166,6 +177,8 @@ class Scheduler
      */
     private function executeTask($task)
     {
+        $this->logger->debug('Running task {task}', array('task' => $task->getName()));
+
         try {
             $timer = new Timer();
             call_user_func(array($task->getObjectInstance(), $task->getMethodName()), $task->getMethodParameter());
diff --git a/tests/PHPUnit/Unit/Scheduler/SchedulerTest.php b/tests/PHPUnit/Unit/Scheduler/SchedulerTest.php
index 7c06370b07..2547d3e5e9 100644
--- a/tests/PHPUnit/Unit/Scheduler/SchedulerTest.php
+++ b/tests/PHPUnit/Unit/Scheduler/SchedulerTest.php
@@ -13,6 +13,7 @@ use Piwik\Scheduler\Scheduler;
 use Piwik\Scheduler\Task;
 use Piwik\Scheduler\Timetable;
 use Piwik\Tests\Framework\Mock\PiwikOption;
+use Psr\Log\NullLogger;
 use ReflectionProperty;
 
 /**
@@ -50,7 +51,7 @@ class SchedulerTest extends \PHPUnit_Framework_TestCase
         self::stubPiwikOption($timetable);
 
         $taskLoader = $this->getMock('Piwik\Scheduler\TaskLoader');
-        $scheduler = new Scheduler($taskLoader);
+        $scheduler = new Scheduler($taskLoader, new NullLogger());
 
         $this->assertEquals($expectedTime, $scheduler->getScheduledTimeForMethod($className, $methodName, $methodParameter));
 
@@ -159,7 +160,7 @@ class SchedulerTest extends \PHPUnit_Framework_TestCase
         // stub the piwik option object to control the returned option value
         self::stubPiwikOption(serialize($timetableBeforeTaskExecution));
 
-        $scheduler = new Scheduler($taskLoader);
+        $scheduler = new Scheduler($taskLoader, new NullLogger());
 
         // execute tasks
         $executionResults = $scheduler->run();
-- 
GitLab