Simultaneous database access
wes at umich.edu
Wed Aug 16 15:47:57 EDT 2006
On 16 Aug 2006, at 14:52, David Korpiewski wrote:
> My director had us go back to using our Macs to try to build a
> failover cluster. We were able to set up two mail servers sharing
> the same backend XSAN. We put our database for cyrus on the XSAN
> and had both mail servers use _the same_ database and the same mail
> store locations.
> So far in limited testing it works flawlessly. This is very
> strange to us. Is cyrus set up to allow multiple simultaneous
> accesses to its database without corruption or are we just lucky to
> not have corrupted the database yet?
> This is cyrus 2.2.12 running on two OSX 10.4.7 servers.
The main process which updates mailboxes.db etc on a backend server
is imapd. Since multiple imapd's are allowed, as long as your XSAN
provides appropriate locking, you are not "just lucky". See the
compile documentation for a discussion of how to select the locking
Specifies the locking method to use. Currently implemented
locking methods are:
flock flock() locking
fcntl fcntl() locking
By default, configure uses "fcntl" if the "fcntl()"
exists, "flock" otherwise.
AFAIK, fcntl( ..., F_SETLK*, ...) always locks the whole file, a la
flock(). Also, I think I see a bug in master/service.c, where
instead of using the locking method specified during compile-time,
fcntl() is always used.
More information about the Info-cyrus