allows to overwrite retry behavior to speed up updates
authorPhilipp Schüle <p.schuele@metaways.de>
Fri, 29 Aug 2014 08:15:23 +0000 (10:15 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Thu, 4 Sep 2014 09:26:47 +0000 (11:26 +0200)
Change-Id: Ic0e53bcf5221136ae6b8c37e4327c32a1051108a
Reviewed-on: http://gerrit.tine20.com/customers/1064
Tested-by: Jenkins CI (http://ci.tine20.com/)
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
tine20/Calendar/Import/CalDav/Client.php
tine20/Tinebase/Import/CalDav/Client.php

index be9bb7a..a21fefb 100644 (file)
@@ -279,17 +279,30 @@ class Calendar_Import_CalDav_Client extends Tinebase_Import_CalDav_Client
     }
     
     /**
     }
     
     /**
+     * update all calendars for current user
      * 
      * @param string $onlyCurrentUserOrganizer
      * @return boolean
      */
     public function updateAllCalendarData($onlyCurrentUserOrganizer = false)
     {
      * 
      * @param string $onlyCurrentUserOrganizer
      * @return boolean
      */
     public function updateAllCalendarData($onlyCurrentUserOrganizer = false)
     {
-        if (count($this->calendarICSs) < 1 && ! $this->findAllCalendarICSs()) {
-            if (Tinebase_Core::isLogLevel(Zend_Log::INFO))
-                Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' no calendars found for: ' . $this->userName);
+        // only try once to find all user calendars
+        $this->_requestTries = 1;
+        try {
+            if (count($this->calendarICSs) < 1 && ! $this->findAllCalendarICSs()) {
+                if (Tinebase_Core::isLogLevel(Zend_Log::INFO))
+                    Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' no calendars found for: ' . $this->userName);
+                $this->_requestTries = null;
+                return false;
+            }
+        } catch (Tinebase_Exception $te) {
+            if (Tinebase_Core::isLogLevel(Zend_Log::NOTICE))
+                Tinebase_Core::getLogger()->notice(__METHOD__ . '::' . __LINE__ . ' Could not update user caldav data.');
+            Tinebase_Exception::log($te);
+            $this->_requestTries = null;
             return false;
         }
             return false;
         }
+        $this->_requestTries = null;
         
         $newICSs = array();
         $newEventCount = 0;
         
         $newICSs = array();
         $newEventCount = 0;
@@ -299,7 +312,6 @@ class Calendar_Import_CalDav_Client extends Tinebase_Import_CalDav_Client
         if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__
                 . ' Looking for updates in ' . count($this->calendarICSs). ' calendars ...');
         
         if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__
                 . ' Looking for updates in ' . count($this->calendarICSs). ' calendars ...');
         
-        // @todo move to a member variable
         $recordBackend = Tinebase_Core::getApplicationInstance($this->appName, $this->modelName)->getBackend();
         
         foreach ($this->calendarICSs as $calUri => $calICSs) {
         $recordBackend = Tinebase_Core::getApplicationInstance($this->appName, $this->modelName)->getBackend();
         
         foreach ($this->calendarICSs as $calUri => $calICSs) {
index 44f2e01..c8585cd 100644 (file)
  */
 class Tinebase_Import_CalDav_Client extends \Sabre\DAV\Client
 {
  */
 class Tinebase_Import_CalDav_Client extends \Sabre\DAV\Client
 {
+    /**
+     * used to overwrite default retry behavior (if != null)
+     * 
+     * @var integer
+     */
+    protected $_requestTries = null;
+    
     protected $currentUserPrincipal = '';
     protected $calendarHomeSet = '';
     protected $principals = array();
     protected $currentUserPrincipal = '';
     protected $calendarHomeSet = '';
     protected $principals = array();
@@ -218,6 +225,10 @@ class Tinebase_Import_CalDav_Client extends \Sabre\DAV\Client
     public function calDavRequest($method, $uri, $body, $depth = 0, $tries = 10, $sleep = 30)
     {
         $response = null;
     public function calDavRequest($method, $uri, $body, $depth = 0, $tries = 10, $sleep = 30)
     {
         $response = null;
+        if ($this->_requestTries !== null) {
+            // overwrite default retry behavior
+            $tries = $this->_requestTries;
+        }
         while ($tries > 0)
         {
             try {
         while ($tries > 0)
         {
             try {
@@ -249,8 +260,6 @@ class Tinebase_Import_CalDav_Client extends \Sabre\DAV\Client
         
         $result = $this->parseMultiStatus($response['body']);
         
         
         $result = $this->parseMultiStatus($response['body']);
         
-        //fputs($this->requestLogFH, $method.' '.$uri."\n".$body."\n".$depth."\n".$response['body']."\n\n\n\n\n\n\n", 10000000);
-        
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__
                 . ' Uri: ' . $uri . ' | request: ' . $body . ' | response: ' . print_r($response, true));
         
         if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__
                 . ' Uri: ' . $uri . ' | request: ' . $body . ' | response: ' . print_r($response, true));