Still swamped from my days out at consulting, so I just want to give a
quick heads-up on the original question: the doc says this with a
reason, and I actually got a request not so long ago from someone who
actually wants to have this. The use case is even simpler, and so it
makes some sense (but I can't disclose more on the use case as this
may show off more than I am permitted to). So it *might* happen that
this actually gets implemented some day. If so, it'll be optional and
not stay in the way of what the rest of the world needs ;)

Rainer

2015-10-23 17:20 GMT+02:00 David Lang <[email protected]>:
> On Fri, 23 Oct 2015, Tomas Heinrich wrote:
>
>> On 10/23/15 15:06, David Lang wrote:
>>>
>>> On Thu, 22 Oct 2015, Tomas Heinrich wrote:
>>>
>>>> Hello,
>>>>
>>>> I've been reading some RELP documentation[0] and it mentions a planned
>>>> capability to only acknowledge reception after the _output_ module of
>>>> the recipient acknowledges delivery.
>>>> I don't think this has been implemented yet but I was wondering
>>>> whether this is still on the roadmap and whether it is close to or far
>>>> from being completed.
>>>
>>>
>>> I don't believe that this can be done reasonably with the current
>>> architecture.
>>
>>
>> Right, that's what I think too. But the docs mention it and they are
>> probably pretty old, so I was wondering whether there was some provision
>> conceived for this use case - or whether this idea was abandoned (for the
>> time being).
>>
>>> The problem is that the queues get in the way and the
>>> input module can't easily know when the message has been fully processed
>>> when it could end up going through multiple queues and get forked to
>>> multiple copies in the process.
>>
>>
>> Yeah, the async processing is the problem in this case. And then there are
>> the partial successes and message duplication...
>>
>>> What you can do is to use a disk-only queue with syncing turned on and
>>> checkpintinterval set to 1 (and IIRC another parameter or two) and this
>>> will guarantee that the message won't be lost.
>>
>>
>> Well, this would ack the enqueuing and not the actual delivery. I think
>> anything else than a direct queue would be problematic from a reliability
>> POV.
>>
>>> Or you could set the main queue type to direct (and not use any action
>>> queues), to have it processed immediately (I'm not sure if this would
>>> quite do what you want, but it would be very close)
>>
>>
>> There could be even a stronger requirement - not only guaranteeing
>> delivery in an infinite time (over a chain of relays) but also signaling a
>> failure and aborting the sending attempts after a timeout so that the
>> original sender could perhaps fail-over to a different destination.
>>
>>> Unfortunantly, both of these solutions will absolutly kill performance
>>> (by a factor of ~1000x or so)
>>
>>
>> Yes, with the current architecture this mode of operation seems
>> unfeasible.
>>
>> Thanks for you thoughts David.
>
>
> absolute guaranteed delivery through multiple relays is especially
> problematic. What do you do if the log message goes to multiple destinations
> and some work and others don't?
>
> Do you really want to freeze the sending box if there is a problem further
> down the line that delays the delivery?
>
> If you really want absolute guaranteed delivery to a single destination, you
> are looking for a database that provides ACID guarantees, not a general
> purpose logging system. There are good reasons why people don't put logs in
> databases, with performance being one of the biggest ones.
>
> There are some 'log' solutions that claim to give you end-to-end
> acknowlegement, but if you look into them, you find that performance suffers
> and your app needs to keep track of a LOT of outstanding state because it
> can take long enough for the ack to come back that you can end up with a LOT
> of data in flight.
>
> David Lang
>
> _______________________________________________
> rsyslog mailing list
> http://lists.adiscon.net/mailman/listinfo/rsyslog
> http://www.rsyslog.com/professional-services/
> What's up with rsyslog? Follow https://twitter.com/rgerhards
> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of
> sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T
> LIKE THAT.
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to