[Cyrus-CVS] src/cyrus/lib by murch

DEMBKOWSKI, Henryk (Henryk) hdembkowski at alcatel-lucent.com
Mon Sep 29 03:38:21 EDT 2008


Bron,

Is it official patch for 2.3.12?  Or maybe it is for 2.3.13.

I thought that these changes will be included in "base" 2.3.13 But is
seems that they are not.

http://www.contrib.andrew.cmu.edu/~murch/cyrus-imapd-2.3.13rc1.tar.gz


Kind Regards,
Henryk



-----Original Message-----
From: cyrus-cvs-bounces at lists.andrew.cmu.edu
[mailto:cyrus-cvs-bounces at lists.andrew.cmu.edu] On Behalf Of
murch at andrew.cmu.edu
Sent: Friday, September 26, 2008 2:16 PM
To: cyrus-cvs at lists.andrew.cmu.edu
Subject: [Cyrus-CVS] src/cyrus/lib by murch

Update of /afs/andrew/system/cvs/src/cyrus/lib
In directory unix24.andrew.cmu.edu:/var/tmp/cvs-serv7252

Modified Files:
	cyrusdb_skiplist.c
Log Message:
skiplist locking refactor


>From Bron Gondwana <brong at fastmail.fm>:

John Capo discovered a bug whereby foreach wasn't updating the
transaction
pointer before calling the handler function, so any updates during the
foreach
would fail if (and only if) it was the first database function to use
that
transaction.

He posted a trivial patch to the mailing list which fixed the bug but
left
unreachable code.

I decided that what was actually needed was a refactor of the 4 subtly
different sets of locking on the access functions: fetch, foreach, store
and
delete into a single locking function.

The attached match creates a new function lock_or_update(), and also
always
uses malloc and makes newtxn a "creation is initialisation" function for
the
transaction.  It's a much neater way to handle transactions, and
significantly
clearer to read.


--- links to diffs follow ---
http://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/lib/cyrusdb_
skiplist.c.diff?r1=1.62&r2=1.63


More information about the Cyrus-cvs mailing list