On Tue Oct 26 13:21 1999 -0400, [EMAIL PROTECTED] wrote:
> >>>>> "Mark" == Mark D Roth <[EMAIL PROTECTED]> writes:
>
> Mark> Another possible difference between syslogd-syslogd transfers and
> Mark> process-syslogd transfers is the fsync() interval. Since the
> Mark> receiving syslogd cannot send an ACK until it's fsync()'ed its queue
> Mark> file(s), we will probably want to implement a mechanism whereby the
> Mark> server can accept a number of messages before fsync()'ing, and then
> Mark> ACK the last one to tell the client that all of the messages up to
> Mark> that point have been received. This obviously doesn't work for
> Mark> initial message submission, because an application process needs an
> Mark> ACK immediately in order to stop blocking in the library call.
>
> Whoa! I don't want to _ever_ guarantee an fsync(). I want to be able to say
> "I'm a best-efforts server, I got your message, it will be written to
> non-volatile storage unless I crash". Strict delivery really should be
> optional.
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.
--
Mark D. Roth <[EMAIL PROTECTED]>
http://www.feep.net/~roth/