[syslog-ng] [PATCH] jsonparser: New parser module for JSON parsing.

Gergely Nagy algernon at balabit.hu
Sat Oct 29 17:54:14 CEST 2011


Balazs Scheidler <bazsi at balabit.hu> writes:

> On Sat, 2011-10-29 at 13:38 +0200, Balazs Scheidler wrote:
>> This is cool stuff, but again doesn't compile with a stock json-c.
>> 
>> Hmm.. this time I've checked, newer json-c versions do install the
>> referenced headers. Then I guess it's it needs an updated version number
>> in configure.in.
>
> I've integrated this, but I may have been a bit too fast handed. There's
> no locking in json-parser(), which will cause things to go bad if
> threaded(yes) is enabled in the configuration.

Note to self: turn on threaded(yes) already.

> And while looking further, $(format-json) is not either, as I've noticed
> that value-pairs() is not thread safe either, because it uses a similar
> GString instance that can be used from multiple threads.
>
> Can you look into making them thread safe?
>
> One way to do that is to allocate a new GString instance at every
> invocation, which is not nice as that increases malloc() load. 

I could do that, and probably will do so temporarily (patches will be
sent to the list, and I'll try a git pull request aswell, too, to check
how my setup can handle that).

> The alternative idea I was playing with was to create a new API for
> managing per-thread scratch buffers that could be reused even between
> multiple independent portions of syslog-ng.
[...]
> With this API, the required number of GString buffers would be allocated
> on-demand, but still they would not increase the malloc() load too much,
> as the scratch buffers subsystem can keep GString instances around. The
> code using GString buffers become simpler too, as the allocation to
> store it somewhere vanishes.
>
> What do you think?

Sounds good. I'll play with it during the long weekend, and see how far
I get.

-- 
|8]



More information about the syslog-ng mailing list