[Tickets #12175] Re: ActiveSync misses changes from history database

noreply at bugs.horde.org noreply at bugs.horde.org
Thu Apr 11 14:47:05 UTC 2013


DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.

Ticket URL: http://bugs.horde.org/ticket/12175
------------------------------------------------------------------------------
  Ticket             | 12175
  Updated By         | Thomas Jarosch <thomas.jarosch at intra2net.com>
  Summary            | ActiveSync misses changes from history database
  Queue              | Synchronization
  Version            | Git master
  Type               | Bug
  State              | Feedback
  Priority           | 1. Low
  Milestone          |
  Patch              |
  Owners             | Michael Rubinsky
------------------------------------------------------------------------------


Thomas Jarosch <thomas.jarosch at intra2net.com> (2013-04-11 14:47) wrote:

> The other possibility would be to somehow track the most recent  
> history id detected. Though I really don't like this approach since  
> it means the client code would need knowledge of how they history  
> system functions - and it assumes any history backend would both  
> have some unique entry identifier, and those identifiers are numeric  
> (or at least increase in some numeric-like fashion).

My idea of abusing the history_id as monotonic counter is doomed anway:
In the Kolab world, an object can disappear and re-appear. So a  
history database entry with a low id might have a current timestamp  
and therefore be missed again.

> Both approaches would require some API changes to both the  
> activesync code as well as the history code in order to provide the  
> needed data - and such changes would need to maintain BC.

It seems like a good idea to keep an array of seen object UIDs during  
the last sync timestamp window (start_ts <= x <= end_ts). We would  
also need to keep this list for every action (add, modify, delete).

We can start expiring entries in this list once the current "start_ts"  
is higher than the last noted end_ts.

That still leaves one problem: If an object gets changed twice during  
the same second and a client already saw the first change, it will  
miss the second change. This risk is rather low but it will happen  
sooner or later.

Only a monotonic counter will solve this. Let's see if we can come up  
with a simpler solution...






More information about the bugs mailing list