[syslog-ng]Urgent: Mangled messages in pipe() destinations in versions >1.5.8

Andreas Schulze syslog-ng@lists.balabit.hu
Thu, 20 Mar 2003 18:54:45 +0100


Balazs Scheidler wrote:
>>>>I'm thinking about the possibility of destination references, would that
>>>>solve your problem?
>>>
>>>Sorry. I don't understand. I'm not sure, that this solves our problem.
>>>Can you explain 'destination references' a little bit, please.
>>
>>looking at your above example, destination references will not be a
>>solution. I meant something like this:
>>
>>destination d_pipe { pipe("/tmp/pipe" template("xxx")); };
>>
>>destination d_another { destination("d_pipe"); };
>>
>>so the messages sent to d_another would also go to d_pipe.
>>
>>I will try to think about your problem a bit. ...
>>
>>It is not easy to implement, I'd need to share the destination fd & write
>>buffers between multiple, independent destination drivers...
>>
>>It was not meant to be working the way you used in earlier versions either,
>>the fact it worked was only a coincidence.
> 
> Syslog-ng 1.5.26 (libol 0.3.9 to be exact) reverts to message based
> buffering for pipes, so it should work for you again.

Great! Thanks a lot.
Both (message based buffering and message queueing in case of EAGAIN)
works pretty good. We moved it today to our production env.
Seems that the problem is solved in a common and good way. Thanks.

Is it avaiable in the 1.6.x branch, too?
As far as I know 1.6.0 use libol-0.3.9, too.
-- 
Best regards --Andreas Schulze
                [phone: +49.5246.80.1275, fax: +49.5246.80.2275]

| I believe, it was Dennis Ritchie who said something like:
|   "C is rarely the best language for a given task,
|    but it's often the second-best".
| The implication being that: "[...]"
|     http://www.ioccc.org/1990/dds.c