[rsyslog] threading - was: output plugin calling interface

Rainer Gerhards rgerhards at hq.adiscon.com
Wed May 6 15:40:20 CEST 2009


> as I understand it (this is part of the diagram I didn't get created
> yet )-:

Actually, I don't know how you could envision that other than by drawing a
line where a queue exists in the diagrams that exists. Honestly. I have no
clue how other I could show this graphically...

> 
> rsyslog basicly breaks down into the following pieces from a
> process/thread point of view
> 

But with words it goes better ;) Note that below is current multi-dequeue git
branch, older versions (especially v3) are somewhat different:

 
master thread (housekeeping, handling signals, etc)

N input threads
   recieve messages
   put the message in the main queue


N main queue worker threads
   process messages in the main queue
   foreach message
     parse message
     foreach filters
       if filter applies
          put message into the action queue
          [if action queue mode is DIRECT call processAction()]

N action queue worker threads
   process messages in the action queue
   foreach message 
      processAction

def processAction:
      format the message
      call doAction()

That's the very rough picture. If you take it together with the message flow
diagrams, you'll see that a threading boundary is wherever a queue is.

Does that help?

Rainer



More information about the rsyslog mailing list