Bill Lam wrote: > If I could throw my two cents in, "do not use sdasync" even > it is available because some events will be missing under heavy > loading. To make matter worse, missing event does not always > cause mistake.
If sdasync works that way in the context of TCP, then Microsoft's implementation of TCP is severely broken. The whole purpose of TCP is to ensure that packets are presented to the application in sequence, with no gaps in the sequence. If it can't do that in a timely fashion, it's supposed to end the connection. More specifically, the OS is not supposed to signal to the other end that a packet has been received until it can guarantee that the application has received that packet. In general, operating systems are expected to have limited space for buffers, and this is just one of the many issues which can cause packet loss. Put differently, sdasync should be able to drop events without impacting the reliability of the TCP connection. TCP means that the OS is telling the remote side of the connection how many bytes have been received by the application. If the remote side does not receive acknowledgement of what it's sent in a timely fashion, it's supposed to [a] send the information again, and [b] decrease the rate at which it sends for this connection. That said, do you have specific knowledge of sdasync failing in the context of TCP? Or, were you extrapolating from your experiences with this sort of mechanism in some other context? Thanks, -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
