[Tickets #8299] current implementation of kolab cache supports only one object type per folder type
bugs at horde.org
bugs at horde.org
Wed May 20 08:37:35 UTC 2009
DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.
Ticket URL: http://bugs.horde.org/ticket/8299
------------------------------------------------------------------------------
Ticket | 8299
Created By | m.gabriel at das-netzwerkteam.de
Summary | current implementation of kolab cache supports only one
| object type per folder type
Queue | Kolab
Type | Bug
State | Unconfirmed
Priority | 1. Low
Milestone |
Patch | 1
Owners |
+New Attachment | 20090519_Kolab-Data_distlist-workaround.patch
------------------------------------------------------------------------------
m.gabriel at das-netzwerkteam.de (2009-05-20 04:37) wrote:
The current Kolab cache implementation (as in
horde-webmail-1.2.3-final) supports only one object type per folder
type. This issue only occurs when using more than one Kolab client
(e.g. Horde and Toltec). This issue also only occurs when my patch
found in ticket 7921 is applied as only then Horde and Toltec can both
see/access each others private distribution lists.
If there was a Kolab client using
application/x-vnd-kolab.distribution-list as MIME type for Kolab
distribution list attachments the error would also occur with this
client. Meaning: it is a general problem that - with the current code
base - will always occur when different object types are stored in the
same folder.
Try the following:
0. Prepare
o add a test share for contacts/distlists
o add at least one contact (any client, contacts will sync without
any problem)
1. Horde -> Toltec
o create a private distlist-1 in the test share (with Horde), as
members use contacts you just
created from your test share
o sync with Toltec
o SUCCESS, the distlist-1 will be synced to Outlook, the distlist-1
can be seen in Horde
2. Toltec -> Horde
o create another private distlist-2 in the test share (now with
Outlook/Toltec), as members again
add contacts from the test share
o sync with Toltec
o partial FAILURE: the distlist-2 is synced to the IMAP server, but
Horde does not show the
distlist-2. Further observation shows that the Kolab cache in
Horde does not ,,remember'' long
enough that the IMAP folder containing contacts and distlists has
changed...
3. Make the distlist visible to Horde
o Create another distlist with Horde
o LATE SUCCESS: suddenly the distlist-2 synced from Outlook appears in Horde
DEBUGGING:
The cause for this issue is structural. The current implementation of
the Kolab cache cannot cope with two different object_types in one
groupware folder. Turba does a dual call on the same IMAP share, first
it tries to retrieve the contact data, then it tries to retrieve the
distlist data.
However, when retrieving the contacts it will synchronize the Kolab
cache with the IMAP folder (but for contacts only) and mark the cache
folder as ,,in sync'':
function _folderChanged($validity, $nextid, &$old_ids, &$new_ids)
{
[...]
$this->_cache->validity = $validity;
$this->_cache->nextid = $nextid;
[...]
}
Next, Turba will try to retrieve the distlist data. As the
corresponding IMAP folder is already marked as synced, the Kolab cache
thinks that cache and IMAP folder are identical. But they are not. The
contacts have by now been synced to the cache, but the distlist
objects have not yet been synced to the cache.
To make this work fluently, I think, the code concept has to be
changed slightly. An idea could be changing $data->_object_type
(string) into an array $data->_object_types that contains all
object_types for this folder type. The $data->synchronize method
should then first check if the IMAP folder has changed, if yes walk
through all the possible object types for this folder type and sync
all these object types to the Kolab cache (in one go).
To make the issue go away - without committing to much of a structural
change in the code - I applied a very evil workaround. I will attach
this workaround here with the hope of the problem becoming clearer.
More information about the bugs
mailing list