[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