[syslog-ng] [review request]: MongoDB destination
Balazs Scheidler
bazsi at balabit.hu
Mon Jan 24 17:32:00 CET 2011
Hi,
On Mon, 2011-01-17 at 21:36 +0100, Gergely Nagy wrote:
> I prepared three branches, in preparation for a pull request, but
> there's still some minor work left to do, so this is more like a "review
> the structure and plan before the pull request, please" request.
>
> All three branches are integration branches, and as such, I will rebase
> them from time to time. All three branches are folded into one commit
> over their base, signed-off, and should have proper descriptions.
>
> * integration/libmongo-client
>
> This one adds a git submodule, which pulls in the libmongo-client
> library from github to modules/afmongodb/libmongo-client. Also adds
> infrastructure to make autogen.sh, configure and make enter this
> directory and Do The Right Thing.
>
> At the moment, linking with the supplied libmongo-client is the only
> option, because the library is not yet ready for system-wide install.
>
> It is easy to extend this framework to use the system library if it
> exists - that is one of the missing features which should go into this
> branch, but isn't there yet.
pulled, thanks.
>
> * integration/afmongodb/base
>
> This is the basic, bare-bones driver, without support for dynamic
> values: it depends on the previous one, and doesn't change anything
> outside of modules/afmongodb/, except lib/stats.[ch], where it adds
> SCS_MONGO for stat counter support.
>
> The current state of the driver is reasonably stable, there are three
> known problems that I am aware of:
also pulled.
>
> + Segfaults whenever the writer thread emits an msg_debug() or
> similar itself. This is actually a bug in ivykis, for which
> Bazsi had a fix for, but I can't find the fix in his git tree
> yet (only the log message, but without the patch).
this fix is there too.
>
> + Locking issues: it's fairly easy to push the driver into a
> deadlock, where it will just sit and wait, not doing a thing.
> I've only seen this happen with flow-control enabled, though.
>
> This will have to be solved before I'm confident enough to ask
> for a pull.
this was solved with a separate commit, so this is also closed.
>
> + The libmongo-client library is built as a shared library, and
> is installed as such. It should be static-only, and not
> installed, only linked to afmongodb.
>
> This will be implemented mostly in libmongo-client, and an
> update of the integration/libmongo-client branch will pull that
> in; then this branch will be updated accordingly.
This is currently done in the libmongo-client git tree, but perhaps the
same solution I've used with ivykis could work here too.
e.g. create a configure.gnu script that does:
./configure --disable-shared --enable-static --with-pic $@
which in turn will create a static-only library, that you can link into
libafmongodb.so (because of the PIC compilation).
>
> * integration/afmongodb/dyn-vars
>
> Based on integration/afmongodb/base, this adds dynamic_values() support.
> Minor modifications are done to nvtable too, but it's a very small
> patch, and very straightforward too.
>
> However, as discussed earlier, the goal in the long run is to develop a
> generic framework for this kind of thing, so this here is more like a
> temporary solution so that people can experiment with the key feature
> the mongodb provides over the others.
>
> Until the generic framework is ready, this, I believe, is an acceptable
> compromise.
>
I didn't merge this one yet.
--
Bazsi
More information about the syslog-ng
mailing list