high-availability again

Ben Carter bhc+ at pitt.edu
Fri Apr 15 09:42:09 EDT 2005

zorg wrote:

> Hi c
> ould you give me just some more explaination of what is the stage./ 
> files used during LMTP delivery have unique filenames
> so if i underdstand what you saying. if the stage./ files used during 
> LMTP delivery is the same for all the node of the cluster share the 
> same SAN then there won't be any problem
> thank
In imap/append.c (at least in our Cyrus version) there is a function 
called append_newstage, and lmtpd uses this routine for mail delivery.  
The name of the temporary file being created in this code is of the form 
<pid>-<timestampseconds> which of course is not guaranteed to be unique 
across the cluster, so  we just changed this code to create a filename 
of the form <clusternode>-<pid>-<timestampseconds>.

(If you truss/strace lmtpd during message delivery, you'll understand 
this right away)

Probably what should also happen in the std. code if some cluster 
support is officially added is that master should use some exclusive 
locking mechanism when it starts, to guarantee that a sysadmin's typo in 
imapd.conf won't allow cluster nodes to share a node ID, if the 
technique of configuring a cluster node ID in imapd.conf is used.  And 
probably also, a node ID should always be required (which our code does).

When we get a chance, we're going to talk to Derrick about getting some 
cluster support into the std. code.



Ben Carter
University of Pittsburgh/CSSD
bhc at pitt.edu

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

More information about the Info-cyrus mailing list