[turba] LDAP Write then Read On-screen Object-not-found Error When Adding Address

Andy Dorman AndyDorman at comehome.net
Thu Feb 12 21:57:14 UTC 2015


Quoting Jan Schneider <jan at horde.org>:

> Zitat von Andy Dorman <AndyDorman at comehome.net>:
>
>> Our Horde setup uses OpenLDAP for authentication and personal address books.
>>
>> Our OpenLDAP setup is a master LDAP server replicating to local  
>> LDAP running on each webmail machine.  All the local LDAP processes  
>> are configured to redirect writes to the master which are then  
>> replicated back, usually in less than a second.
>>
>> I have run into a problem when adding an address book entry.  After  
>> submitting a new entry we get a Horde "object not found" error up  
>> on the screen.  If we navigate back to the address book we can see  
>> the new entry has been added.
>>
>> I assumed this probably meant Turba was checking for the new  
>> address before it has been replicated back to the local LDAP.
>>
>> However, I found a clever bit of work in  
>> /usr/share/horde/turba/lib/Form/AddContact.php that is obviously  
>> intended to avoid problems with replication delay most of the  
>> time...except it doesn't actually appear to work as intended.
>>
>> The code block looks like this:
>>
>> // Try 3 times to get the new entry. We retry to allow setups like
>> // LDAP replication to work.
>> for ($i = 0; $i < 3; ++$i) {
>>    try {
>>        $ob = $driver->getObject($key);
>>        $notification->push(sprintf(_("%s added."),  
>> $ob->getValue('name')), 'horde.success');
>>        $url = empty($info['url'])
>>            ? $ob->url('Contact', true)
>>            : new Horde_Url($info['url']);
>>        $url->redirect();
>>    } catch (Horde_Exception_NotFound $e) {
>>    }
>>    sleep(1);
>> }
>>
>> I am not an experienced PHP programmer (my background is mostly  
>> perl), but it looked to me like the first time through the loop the  
>> getObject call was failing (as expected while replication was  
>> catching up) and the catch call to Horde_Exception_NotFound was  
>> triggering the on-screen error report.
>>
>> As an experiment I replaced "Horde_Exception_NotFound" with  
>> "Exception" and the on-screen error report is gone and the new  
>> addresses are successfully added.
>>
>> So is there possibly a way to call Horde_Exception_NotFound in the  
>> catch argument above and NOT have it post the on-screen error?
>>
>> If someone can confirm this is actually a bug and not something I  
>> have mis-configured, I will post a bug report.
>
> No, this just means that the exception thrown from getObject() is  
> *not* a Horde_Exception_NotFound. The question is, why not, and what  
> else is it? Add a Horde::debug($e); call below your catch line  
> (using Exception instead of Horde_Exception_NotFound) and let us  
> know the outcome in /tmp/horde_debug.txt.
>
> -- 
> Jan Schneider
> The Horde Project
> http://www.horde.org/
> https://www.facebook.com/hordeproject
>
> -- 
> turba mailing list
> Frequently Asked Questions: http://wiki.horde.org/FAQ
> To unsubscribe, mail: turba-unsubscribe at lists.horde.org

Jan, thanks...The debug output is a bit verbose, but below are the  
first and last snippets.  The complete file is attached.  The add was  
successful.

2015-02-12T21:36:38+00:00 DEBUG: Variable information:
object(Turba_Exception)#292 (10) {
   ["details"]=>
   NULL
   ["logged"]=>
   bool(false)
   ["_logLevel":protected]=>
   int(0)
   ["message":protected]=>
   string(32) "Read failed: (32) No such object"
   ["string":"Exception":private]=>
   string(0) ""
   ["code":protected]=>
   int(0)
   ["file":protected]=>
   string(42) "/usr/share/horde/turba/lib/Driver/Ldap.php"
   ["line":protected]=>
   int(264)
   ["trace":"Exception":private]=>
   array(4) {
     [0]=>
     array(6) {
       ["file"]=>
       string(37) "/usr/share/horde/turba/lib/Driver.php"
       ["line"]=>
       int(833)
       ["function"]=>
       string(5) "_read"
       ["class"]=>
       string(17) "Turba_Driver_Ldap"

... details of the test address being added

     [1]=>
     array(6) {
       ["file"]=>
       string(37) "/usr/share/horde/turba/lib/Driver.php"
       ["line"]=>
       int(869)
       ["function"]=>
       string(10) "getObjects"
       ["class"]=>
       string(12) "Turba_Driver"
       ["type"]=>
       string(2) "->"
       ["args"]=>
       array(1) {
         [0]=>
         array(1) {
           [0]=>
           string(117)  
"uid=20150212213638.BkidIkelyJY5WnShqGo-mw4 at beta.mail.army.com,uid=andydorman at comehome.net,ou=addresses,o=antespam.com"
         }
       }
     }
     [2]=>
     array(6) {
       ["file"]=>
       string(46) "/usr/share/horde/turba/lib/Form/AddContact.php"
       ["line"]=>
       int(87)
       ["function"]=>
       string(9) "getObject"
       ["class"]=>
       string(12) "Turba_Driver"
       ["type"]=>
       string(2) "->"
       ["args"]=>
       array(1) {
         [0]=>
         string(117)  
"uid=20150212213638.BkidIkelyJY5WnShqGo-mw4 at beta.mail.army.com,uid=andydorman at comehome.net,ou=addresses,o=antespam.com"
       }
     }
     [3]=>
     array(6) {
       ["file"]=>
       string(30) "/usr/share/horde/turba/add.php"
       ["line"]=>
       int(68)
       ["function"]=>
       string(7) "execute"
       ["class"]=>
       string(21) "Turba_Form_AddContact"
       ["type"]=>
       string(2) "->"
       ["args"]=>
       array(0) {
       }
     }
   }
   ["previous":"Exception":private]=>
   NULL
}

Backtrace:
1. Turba_Form_AddContact->execute() /usr/share/horde/turba/add.php:68
2. Horde::debug() /usr/share/horde/turba/lib/Form/AddContact.php:94

-- 
Andy--------------------------------
This message was sent using FanMailPlus Webmail.
-------------- next part --------------
2015-02-12T21:36:38+00:00 DEBUG: Variable information:
object(Turba_Exception)#292 (10) {
  ["details"]=>
  NULL
  ["logged"]=>
  bool(false)
  ["_logLevel":protected]=>
  int(0)
  ["message":protected]=>
  string(32) "Read failed: (32) No such object"
  ["string":"Exception":private]=>
  string(0) ""
  ["code":protected]=>
  int(0)
  ["file":protected]=>
  string(42) "/usr/share/horde/turba/lib/Driver/Ldap.php"
  ["line":protected]=>
  int(264)
  ["trace":"Exception":private]=>
  array(4) {
    [0]=>
    array(6) {
      ["file"]=>
      string(37) "/usr/share/horde/turba/lib/Driver.php"
      ["line"]=>
      int(833)
      ["function"]=>
      string(5) "_read"
      ["class"]=>
      string(17) "Turba_Driver_Ldap"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(6) {
        [0]=>
        string(2) "dn"
        [1]=>
        array(1) {
          [0]=>
          string(117) "uid=20150212213638.BkidIkelyJY5WnShqGo-mw4 at beta.mail.army.com,uid=andydorman at comehome.net,ou=addresses,o=antespam.com"
        }
        [2]=>
        string(23) "andydorman at comehome.net"
        [3]=>
        array(21) {
          [0]=>
          string(2) "dn"
          [1]=>
          string(3) "uid"
          [2]=>
          string(2) "cn"
          [3]=>
          string(4) "mail"
          [4]=>
          string(9) "givenname"
          [5]=>
          string(2) "sn"
          [6]=>
          string(5) "title"
          [7]=>
          string(16) "organizationname"
          [8]=>
          string(16) "businesscategory"
          [9]=>
          string(13) "postaladdress"
          [10]=>
          string(10) "postalcode"
          [11]=>
          string(15) "telephonenumber"
          [12]=>
          string(24) "facsimiletelephonenumber"
          [13]=>
          string(17) "homepostaladdress"
          [14]=>
          string(9) "homephone"
          [15]=>
          string(6) "mobile"
          [16]=>
          string(11) "description"
          [17]=>
          string(10) "roomNumber"
          [18]=>
          string(2) "ou"
          [19]=>
          string(11) "displayName"
          [20]=>
          string(10) "labeledURI"
        }
        [4]=>
        array(0) {
        }
        [5]=>
        array(0) {
        }
      }
    }
    [1]=>
    array(6) {
      ["file"]=>
      string(37) "/usr/share/horde/turba/lib/Driver.php"
      ["line"]=>
      int(869)
      ["function"]=>
      string(10) "getObjects"
      ["class"]=>
      string(12) "Turba_Driver"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(1) {
        [0]=>
        array(1) {
          [0]=>
          string(117) "uid=20150212213638.BkidIkelyJY5WnShqGo-mw4 at beta.mail.army.com,uid=andydorman at comehome.net,ou=addresses,o=antespam.com"
        }
      }
    }
    [2]=>
    array(6) {
      ["file"]=>
      string(46) "/usr/share/horde/turba/lib/Form/AddContact.php"
      ["line"]=>
      int(87)
      ["function"]=>
      string(9) "getObject"
      ["class"]=>
      string(12) "Turba_Driver"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(1) {
        [0]=>
        string(117) "uid=20150212213638.BkidIkelyJY5WnShqGo-mw4 at beta.mail.army.com,uid=andydorman at comehome.net,ou=addresses,o=antespam.com"
      }
    }
    [3]=>
    array(6) {
      ["file"]=>
      string(30) "/usr/share/horde/turba/add.php"
      ["line"]=>
      int(68)
      ["function"]=>
      string(7) "execute"
      ["class"]=>
      string(21) "Turba_Form_AddContact"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(0) {
      }
    }
  }
  ["previous":"Exception":private]=>
  NULL
}

Backtrace:
1. Turba_Form_AddContact->execute() /usr/share/horde/turba/add.php:68
2. Horde::debug() /usr/share/horde/turba/lib/Form/AddContact.php:94



More information about the turba mailing list