Hi All! On 2001 Jan 04, Jeffrey W. Baker wrote:
if (self->queue_size == self->queue_max) { /* fifo full */ ol_string_free(string); return ST_FAIL | ST_OK; }
What do you think happens when this code is hit? The log message is discarded and lost. It cannot be read any other way. When this block of code is executed, messages are lost. Execution tracing shows that this block of code is sometimes executed. Thus, messages will sometimes be lost. QED.
Yes.
Your repeated assertions are no solution. In practice, syslog-ng drops log messages. I have seen it with my own eyes, and I have proved it logically above. You have not given me any reason to believe otherwise. Your suggestion to raise the fifo size does not work for fast, steady-state log message generation. I can raise the fifo size to 1,000,000 messages, and I get a syslog-ng process that consumes all available memory and still drops messages.
Yes again, and becouse of this, THERE ARE _NO_ SOLUTION for this problem. If you pour water to a horn in full speed, the water will overflow. Another example. (From a candy camera) There was a conveyer belt. And a cakes go to this belt in every ten seconds. The task was to put the cakes into boxes. Everybody do it rights. But after a while the conveyer belt goes faster. Every people reach his/her limit. After this limit (when belt goes faster than this) cakes dropped at the end of the conveyer belt. This happens becouse input is faster than output. And _nobody_ can do anything to interfere this. But I have no state, when syslog-ng is the bottleneck. More often the HDD or the network card(s). -- PGP ID 0x8D143771, /C5 95 43 F8 6F 19 E8 29 53 5E 96 61 05 63 42 D0 GPG ID ABA0E8B2, 45CF B559 8281 8091 8469 CACD DB71 AEFC ABA0 E8B2 I refused to attend his funeral. But I wrote a very nice letter explaining that I approved of it. -- Mark Twain