[Kde-pim] Newbie questions about Akonadi/KDEPIM codebase

Volker Krause vkrause at kde.org
Sun Dec 9 11:12:27 GMT 2012


On Wednesday 14 November 2012 19:52:54 Yury G.  Kudryashov wrote:
> Andras Mantia wrote:
> > Hi,
> > 
> > Yury G.  Kudryashov wrote:
> >> Q2. How should parts of KDE-PIM (resource, server, kmail) operate while
> >> creating a folder? Which signals are sent/slots are called?
> > 
> > I hope this explains what you want, for more exact details look up the
> > code itself.
> 
> Thanks a lot for your help!
> 
> This part goes OK, including creating a folder on the server and receiving
> "OK" from the server.
> 
> I've found two strange facts about the newly created collection:
> 1. The only mimetype is inode/directory. Who is responsible for setting the
> mimetypes?

The IMAP resource.

> 2. The remote identifier is "itest-folder" instead of ".test-folder". I
> found nothing about "itest" in the logs. Any ideas?
> 
> `git grep "'i'"` and `git grep '"i"'` in kdepimlibs, akonadi and kdepim-
> runtime gave me nothing relevant (or I missed something).

The first character of the IMAP RID is the path separator (which is variable 
in IMAP, seems to be '.' on your server). Take a look at the code that 
determines the RID for a newly created folder, I bet it takes the separator 
from the RID of its parent collection. And for top-level folders you end up 
with 'i', because the RID of the IMAP root node is an URL "imap://...".

> `git grep '"i%'` says something about etmviewstatesaver but it is about GUI,
> not server/agent, isn't it?
> 
> Don't know if the following excerpt from akonadictl stderr helps.
> 
> > akonadi_imap_resource_3(30007)/kdepimlibs (kimap)
> > AddCollectionTask::doStart: New folder:  "test-folder"
> > akonadi_imap_resource_3(30007)/libakonadi
> > Akonadi::CollectionSync::Private::execute: void
> > Akonadi::CollectionSync::Private::execute() localListDone:  false
> > deliveryDone:  true
> > akonadi_imap_resource_3(30007)/libakonadi
> > Akonadi::CollectionSync::Private::execute: void
> > Akonadi::CollectionSync::Private::execute() localListDone:  true
> > deliveryDone:  true
> > Error during executing query "INSERT INTO CollectionTable (remoteId,
> > remoteRevision, name, parentId, resourceId, cachePolicyInherit) VALUES
> > (:0, :1, :2, :3, :4, :5)" :  "Duplicate entry '1073-test-folder' for key
> > 'CollectionTable_parentAndNameIndex' QMYSQL3: Unable to execute statement"
> > akonadi_imap_resource_3(30007)/kdepimlibs (kimap)
> > RetrieveCollectionMetadataTask::doStart: ".test-folder"

I think this is the IMAP collection syncing trying to create your newly 
created folder locally, causing a name clash. It's not recognizing the already 
existing local one due to the broken RID.

regards,
Volker

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20121209/426869c8/attachment.sig>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list