Thursday, August 04, 2005

Was it a race condition?

ECal# provides two types of APIs to get a list of calendar events present in a calendar.

First type is based on "Query/Response" and the other is "Compare-with-last-fetched-items-and-return-the-final-list" sort of method.

In Beagle, the new Evolution Calendar backend that Joe Shaw is working on calls "GetChanges", second-type method, to get a list of what-so-ever-has-happened since last call. Once things are setup properly, GetItems() is called. GetItems() works on "Query/Response" basis and once the query is setup and the Start() method is called, the results satisfying the query are returned immediately, causing Beagle to re-index them immediately.

Where the heck is the race-condition here?

Well, the first-time "results" of the query are the same calendar-events that are already indexed. So, it might appear like a race-condition, but, in reality, it is not. Perhaps, can be called "an unwanted" condition, though, cannot be avoided.

To handle this safely, the new CalComponent class exposes a property called LastModified, with which the first-set-of-results can be compared and avoided from a "re-indexing".

3 comments:

Anonymous said...

Nice site!
[url=http://yavkdoxx.com/ubvl/svnf.html]My homepage[/url] | [url=http://tdougitx.com/zktc/isrw.html]Cool site[/url]

Anonymous said...

Great work!
My homepage | Please visit

Anonymous said...

Great work!
http://yavkdoxx.com/ubvl/svnf.html | http://nitzakxe.com/xipi/vuiu.html