Page MenuHomePhorge

The kolab resource constantly re-syncs complete folders.
Closed, ResolvedPublic

Description

The kolab resource apparently constantly resyncs certain folders.

This can happen because:

  • There are messages that failed to upload
  • We failed to convert some groupware objects because they are faulty.
  • ?

The inconsistency detection in the item sync will then trigger a full resync.

The best solution would probably be to not rely on the item count at all and, and remove the inconsistency check that resyncs everything.

https://support.kolabsys.com/provider?Action=AgentTicketZoom&TicketID=22277&ArticleID=81011&ZoomExpand=0#81011

Details

Ticket Type
Task

Event Timeline

mollekopf raised the priority of this task from 40 to High.Jul 28 2016, 1:07 PM
mollekopf created this task.

In imap/retrieveitemstask.cpp:

We can remove all optimization cases that have realMessageCount in them, but not the Error recovery ones, because this will result in messages with flags only and no content as it currently stands. To avoid this we would have to use modify instead of MERGE, respectively avoid creating new messages with merge when storing flags only.

dev/noRealMessageCount disables all codepaths that rely on the message count. If that performs adequately, then we could just be using that.

How you think we should test if it performs adequately?

the performance is mentionable slower than without the patch.

My thought is to fix this:
get the count of messages without an remoteId ( these are not uploaded)
and exclude this count from identify the missing mails on the server aka:

expectedMessageOnServer = realMesssageCount-withoutRidCount

and if this is the same than everything is fine.

open questions:

  • is the rid also null if we first try to push them to the server?
  • is there a idDirty flag to identify, that the elements are in the queue to upload?
  • The RID is null until the item has been first written to the server (but the resource will always first upload pending items before triggering a sync).
  • There is no flag to indicate that an item has not been uploaded and I don't think there is a way to search for items that haven't been uploaded.

This has been implemented.