In some email I received from Mark D. Roth, sie wrote:
[...]
> I agree that best-effort is good enough for the default, especially if
> TCP is used for the new protocol. However, if we're going to provide
> a guarunteed/verifyable delivery option, we need to ensure that the
> data will not be lost when that option is selected. This means that
> we need to fsync() before sending an ACK.
And that implies some sort of windowing system - fsync() is a huge
problem in so far as DoS attacks and large number of log entries is
concerned.
Next, who's master of how big the difference between received and ACK'd
messages ? If I buffer ~1000 messages before calling fsync(), locally,
do I want to have some remote daemon telling me I must commit after every
message, making the buffer 1 and killing my performance ?
I think that is something which the server for the connection needs to
inform the client about and to which the client can but agree or close.
Darren