Noel,

> I said that "the mailet has to be specially written to do it."  What I
> didn't say was how.

But you did say you'd realized how.. "I realized earlier today how to" ;-)

I've pondered it for these past few days and been unable to see how one could 
guarantee that a mail was only processed, in the general situation, once if the 
processing takes a finite period. 
You would be compelled to assume either the start, or the end of processing was the 
gate which couldn't be passed twice, and these are the two options you would have to 
choose:

1/ gate is at the start, pass gate but processing is not completed, mail isn't 
re-processed and is "lost"
2/ gate is at the end, mail is processed successfully but terminated before it passes 
the gate, it is re-processed and "duplicated"

Alternatives based on making internal lists won't help you unless the action of 
adding/removing or comparing mail with lists is atomic itself and atomic with the 
processing you are trying to control.

Of course in the specific case which started this discussion (aka. storm in a tea-cup) 
where database inserts are concerned this might be achieved through the use of 100% 
available database clusters and by the use of the mail-uid as a unique key in the 
database.

In this situation duplication will fail because of duplicate values for a unique key, 
and db availability can be arranged to avoid any losses in all but the most extreme 
circumstances. (else banks wouldn't use them ;)

d.



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to