Re: [rsyslog] ruleset with only stop

2014-11-11 Thread Rainer Gerhards
2014-11-10 16:23 GMT+01:00 Brian Knox :

> Today I noticed a ruleset with only "stop" as it's action will fail to
> parse with rsyslog 8.4, but the same rule with a "~" will pass.
>
> ruleset(name="testme") {
> *.* ~
> }
>
> bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
> rsyslogd: version 8.5.0, config validation run (level 1), master config
> ./test.conf
> rsyslogd: warning: ~ action is deprecated, consider using the 'stop'
> statement instead [try http://www.rsyslog.com/e/2307 ]
>
>
> Changing to "stop" :
> ruleset(name="testme") {
> stop
> }
>
> bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
> rsyslogd: version 8.5.0, config validation run (level 1), master config
> ./test.conf
> rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs will
> run, but no output whatsoever is created. [try
> http://www.rsyslog.com/e/2103
> ]
> rsyslogd: run failed with error -2103 (see rsyslog.h or try
> http://www.rsyslog.com/e/2103 to learn what that number means)
>
> I have a situation where rules are being generated via templates in chef,
> and having a rule that just discards messages would actually be a useful
> thing to have, and ran into this.
>
> So my question is, should a rule that only calls a discard action be
> valid?  If so, is this a bug in the config parser?
>
>
It's a little bit complex. The thing is that "~" actually *is* an action,
whereas "stop" is a statement. When I wrote that checking code, I never
envisioned that an empty ruleset could be useful for any case (if there is
just a "stop" inside it, it's practically empty, in that it simply does
nothing). I think in most cases this really is a config error. Maybe I
could add an "permitEmpty" parameter to the ruleset, which will then not
emit that error message.

To understand the whole picture: why do you need these empty rulesets?

Rainer

Brian
> ___
> 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.


Re: [rsyslog] can someone lend me a hand on git procedure

2014-11-11 Thread Rainer Gerhards
2014-11-11 3:03 GMT+01:00 David Lang :

> On Mon, 10 Nov 2014, Thomas D. wrote:
>
>  Hi,
>>
>> On 2014-11-08 00:19, David Lang wrote:
>>
>>> Then when the feature is believed to be complete, it gets merged into a
>>> 'pending' tree. This tree exists for the sole purpose of having the
>>> testbench
>>> run against it daily. This tree is not stable, it's recreated for each
>>> day's
>>> test run by copying the master and then merging in all the pending
>>> features that
>>> are beleived to be ready to be tested.
>>>
>>
>> Mh... that's sounds like you don't always want to do QA. Then I disagree
>> with you.
>>
>> QA should always be there. You shouldn't think about QA at all, because
>> if we have CI, everything will happen automatically in the background.
>> You don't need to care but if there is a QA problem, you will be notified.
>>
>>
>>  As a note on CI testing, no large entitiy does a full test run against
>>> each
>>> commit individually, this just doesn't scale. At some point the tests
>>> just take
>>> too long to run. So they fall back to doing the tests at a larer
>>> granularity,
>>> possibly with unit tests being run on each change (if you can define
>>> unit tests
>>> in a way that lets you decide easily what tests are relevant to the code
>>> that
>>> was changed)
>>>
>>
>> Unit tests should *always* run.
>>
>> Some functional tests maybe skipped and only run when you are preparing
>> a release.
>>
>> But the discussion is very theoretical at the moment. Github's Travis is
>> very powerful.  Let's wait until we really know how much time rsyslog's
>> test suite would actual take.
>>
>
> it all depends on how long the tests take to run. If it takes a couple
> hours to run the tests, you aren't going to want to do them for every
> commit. Doing them frequently is important, but it's not so important that
> you need to throttle development to the speed that the tests can run.
>
>
>>  As for the history being dominated by merges, this is the result of
>>> maintaining
>>> so many different versions. As John noted when he did the documenation
>>> tree,
>>> merging changes into the oldest supported version and then merging that
>>> into the
>>> newer versions lets git do a LOT of work for you in how it remembers what
>>> changes have been made and integrating the new changes into it.
>>>
>>
>> Merging down instead of merging up would also help:
>>
>
> I don't think so. Git already knows about the changes in the one
> direction, so layering some additional changes on isn't that hard, but
> moving the other way requires that git figure out where the change came
> from in order to 'do the right thing', and that's a much harder thing to do.
>

... especially as (to the best of my knowledge) git does not do that. So on
the way down, you need to manually do the merging.

Rainer
___
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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Rainer Gerhards
2014-11-11 4:00 GMT+01:00 singh.janmejay :

> On Tue, Nov 11, 2014 at 7:43 AM, David Lang  wrote:
>
> > On Mon, 10 Nov 2014, Thomas D. wrote:
> >
> >  Hi,
> >>
> >> On 2014-11-06 08:10, Rainer Gerhards wrote:
> >>
> >>> Well, you can run the mysql test suite against any mysql server. It is
>  independent from source. So that's not the best example at all...
> 
> >>>
> >>> Don't you then need root (or similar) credentials to do some very
> >>> delicate
> >>> database operations like creating databases and tables? I wouldn't
> permit
> >>> this to be done to my production server.
> >>>
> >>
> >> That's why I asked for running the test suite in a 'sandbox'.
> >>
> >
> > you still need those credentials for your sandbox, right?
> >
> > If MySQL isn't installed on the system you will need to install the
> > package (requiring root + distro specific knowledge), if it is installed,
> > you need to configure users and permissions for the test user (requiring
> DB
> > root equivalent + distro specific knowlege)
> >
> >
> >
> >  Well, finally I installed valgrind and had to re-install glibc with
>  debugging symbols (another error the test suite logged but did not
>  detect).
> 
> >>>
> >>> why did you need the debugging symbols?
> >>>
> >>
> >> In Gentoo imdiag is currently only available when compiling with "debug"
> >> USE flag. This will also enable "--enable-valgrind"..
> >>
> >> The error message logged in the "udp-msgreduc-vg" log file was something
> >> like
> >>
> >>  valgrind:  Fatal error at startup: a function redirection
> >>> valgrind:  which is mandatory for this platform-tool combination
> >>> valgrind:  cannot be set up.  Details of the redirection are:
> >>> valgrind:
> >>> valgrind:  [...]
> >>> valgrind:
> >>> valgrind:  Possible fixes: (1, short term): install glibc's debuginfo
> >>> valgrind:  package on this machine.  (2, longer term): ask the
> packagers
> >>> valgrind:  for your Linux distribution to please in future ship a non-
> >>> valgrind:  stripped ld.so (or whatever the dynamic linker .so is
> called)
> >>> valgrind:  that exports the above-named function using the standard
> >>> valgrind:  calling conventions for this platform.
> >>> valgrind:
> >>> valgrind:  Cannot continue -- exiting now.  Sorry.
> >>>
> >>
> >>
> >>
> >>  But let me be clear. From this thread, it looks like these should be
> our
> >>> project priorities:
> >>>
> >>> 1. make the testbench fully automatic and self-contained
> >>> 2. create unit tests
> >>> 3. create more and better integration tests
> >>> 4. document
> >>> 5. fix bugs
> >>> 6. develop new features
> >>>
> >>> Given the fact that I am I and not a big team like at MySQL, I don't
> >>> believe this is the right order of priorities.
> >>>
> >>> In reality, it is me alone doing >95% of all work, and funding for this
> >>> work is almost solely by Adiscon (and only partially backed by paying
> >>> customers).
> >>>
> >>
> >> Asking this question shows me that you understand my point. Great! ;)
> >>
> >> Yes, I am voting for changing the priority order like you said.
> >>
> >> Don't get me wrong. I am not saying that you MUST change anything. I am
> >> only answering the question "If you could change something in the
> >> project, what would you change?" ... and I would change the priority to
> >> improve the current project quality using automatic tests.
> >>
> >
> > I disagree that 1, 2, and 3 are more important than 4 and 5 (where 6
> lives
> > is subject to a lot of debate)
> >
> > you could completely halt all documentation, bugfixing, and new features
> > for a year while creating tests to cover everything.
> >
> > Testing is useful, but the end purpose of the software is not to pass
> > tests, but rather to provide capabilities to the user.
> >
> > As an extreme example, I know of a company that lost a month of
> > development and missed having the product ready for a national trade show
> > because they got so caught up in writing tests for everything that a test
> > that didn't work right when the software was being shutdown (after which
> it
> > would be reset for the next test) HAD to be written before anything more
> > could be done, and there was an upstream bug in one component that caused
> > this exit to never work cleanly. Don't fall into a similar trap.
> >
>
> +1 tests are just means to an end, we should be disciplined to write them
> as we go, but every project has corners(and sometimes large portions) that
> are ill-tested or worse. Paralysing development completely to test-cover
> them in one go doesn't sound like the best plan.
>
> FWIW, here is something that has worked for teams I have been on in the
> past. We were aware of which areas were not test-covered, bug-prone,
> hard-to-read etc. When we were to touch anything in those areas (like
> adding new features that touched those parts of code, or fix a bug etc), we
> used to test-cover directly and indirectly affected portions of that code,
> and then refacto

Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread David Lang

On Tue, 11 Nov 2014, Rainer Gerhards wrote:


2014-11-11 4:00 GMT+01:00 singh.janmejay :


On Tue, Nov 11, 2014 at 7:43 AM, David Lang  wrote:


On Mon, 10 Nov 2014, Thomas D. wrote:

 Hi,


On 2014-11-06 08:10, Rainer Gerhards wrote:


Well, you can run the mysql test suite against any mysql server. It is

independent from source. So that's not the best example at all...



Don't you then need root (or similar) credentials to do some very
delicate
database operations like creating databases and tables? I wouldn't

permit

this to be done to my production server.



That's why I asked for running the test suite in a 'sandbox'.



you still need those credentials for your sandbox, right?

If MySQL isn't installed on the system you will need to install the
package (requiring root + distro specific knowledge), if it is installed,
you need to configure users and permissions for the test user (requiring

DB

root equivalent + distro specific knowlege)



 Well, finally I installed valgrind and had to re-install glibc with

debugging symbols (another error the test suite logged but did not
detect).



why did you need the debugging symbols?



In Gentoo imdiag is currently only available when compiling with "debug"
USE flag. This will also enable "--enable-valgrind"..

The error message logged in the "udp-msgreduc-vg" log file was something
like

 valgrind:  Fatal error at startup: a function redirection

valgrind:  which is mandatory for this platform-tool combination
valgrind:  cannot be set up.  Details of the redirection are:
valgrind:
valgrind:  [...]
valgrind:
valgrind:  Possible fixes: (1, short term): install glibc's debuginfo
valgrind:  package on this machine.  (2, longer term): ask the

packagers

valgrind:  for your Linux distribution to please in future ship a non-
valgrind:  stripped ld.so (or whatever the dynamic linker .so is

called)

valgrind:  that exports the above-named function using the standard
valgrind:  calling conventions for this platform.
valgrind:
valgrind:  Cannot continue -- exiting now.  Sorry.





 But let me be clear. From this thread, it looks like these should be

our

project priorities:

1. make the testbench fully automatic and self-contained
2. create unit tests
3. create more and better integration tests
4. document
5. fix bugs
6. develop new features

Given the fact that I am I and not a big team like at MySQL, I don't
believe this is the right order of priorities.

In reality, it is me alone doing >95% of all work, and funding for this
work is almost solely by Adiscon (and only partially backed by paying
customers).



Asking this question shows me that you understand my point. Great! ;)

Yes, I am voting for changing the priority order like you said.

Don't get me wrong. I am not saying that you MUST change anything. I am
only answering the question "If you could change something in the
project, what would you change?" ... and I would change the priority to
improve the current project quality using automatic tests.



I disagree that 1, 2, and 3 are more important than 4 and 5 (where 6

lives

is subject to a lot of debate)

you could completely halt all documentation, bugfixing, and new features
for a year while creating tests to cover everything.

Testing is useful, but the end purpose of the software is not to pass
tests, but rather to provide capabilities to the user.

As an extreme example, I know of a company that lost a month of
development and missed having the product ready for a national trade show
because they got so caught up in writing tests for everything that a test
that didn't work right when the software was being shutdown (after which

it

would be reset for the next test) HAD to be written before anything more
could be done, and there was an upstream bug in one component that caused
this exit to never work cleanly. Don't fall into a similar trap.



+1 tests are just means to an end, we should be disciplined to write them
as we go, but every project has corners(and sometimes large portions) that
are ill-tested or worse. Paralysing development completely to test-cover
them in one go doesn't sound like the best plan.

FWIW, here is something that has worked for teams I have been on in the
past. We were aware of which areas were not test-covered, bug-prone,
hard-to-read etc. When we were to touch anything in those areas (like
adding new features that touched those parts of code, or fix a bug etc), we
used to test-cover directly and indirectly affected portions of that code,
and then refactor them heavily to bring it up to the mark.



I try to follow that same paradigm since quite a while. I have to admit it
depends on workload, and some test are really *extremely* hard to create.
For example, when you want to test out thing with the journal or imuxsock,
you need to create a total mock environment and be extremely precise in
when, how and where messages are injected and processed. Plus you need to
make sure no other component on the running system in

[rsyslog] how to craft a test if the target behaves differently?

2014-11-11 Thread Rainer Gerhards
Hi experienced QA folks,

I have one libdbi test that runs under valgrind (as do many other tests).
The goal here is to automatically detect misadressings and memory leaks.

The problem now is that different versions of libdbi have different memory
"leaks"*. So on most current platforms, valgrind will report a memory. But
that's a memory leak outside of my control. The usual approach is to use a
suppression file. HOWEVER, the suppression file would need to be different
for each platform/libdbi/dbserver combination. So this is not something I
can ship as part of the testbench.

Does anyone have an idea of how this could be solved? I will try now just
to disable leak checking, so that the misaddressing "protection" is at
least in place, but that's obviously a degradation of functionality.

Help and feedback appreciated,
Rainer

* It's not a real leak in the case I am talking about, it has to do with
when or when not libdbi calls mysql's thread shutdown functions. So this
may even a problem that's solely related to the dbi driver layer. This is
also nothing that needs to be reported to the libdbi project, because it
definitely is fixed -- but as usual distros do not carry the fixed version.
___
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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Thomas D.
Hi,

On 2014-11-11 03:13, David Lang wrote:
> you still need those credentials for your sandbox, right?
> 
> If MySQL isn't installed on the system you will need to install the package 
> (requiring root + distro specific knowledge), if it is installed, you need to 
> configure users and permissions for the test user (requiring DB root 
> equivalent 
> + distro specific knowlege)

Yes, running tests against any third-party application would require
access to those applications while testing. Theses tests are called
"integration tests".

Because you should *not* depend on those third-party applications you
often cannot run your integration tests every time you run the normal
test suite.

Therefore you would split your tests. And this is already done for
rsyslog: The mysql tests for example are separated.

But this doesn't mean you cannot test the ommysql at all without mysql:
You can write a mock so you can test your code at least.

BTW: Travis will allow us to test against a running mysql each time...


>>> But let me be clear. From this thread, it looks like these should be our
>>> project priorities:
>>>
>>> 1. make the testbench fully automatic and self-contained
>>> 2. create unit tests
>>> 3. create more and better integration tests
>>> 4. document
>>> 5. fix bugs
>>> 6. develop new features
>>>
>>> [...]
>>
>> [...]
>>
>> Yes, I am voting for changing the priority order like you said.
> 
> I disagree that 1, 2, and 3 are more important than 4 and 5 (where 6 lives is 
> subject to a lot of debate)

Wait, this order is not set in stone.

For example, to write tests, you have to know what a component should do
and how it should be used. So you need a documentation before you can
write tests.


> you could completely halt all documentation, bugfixing, and new features for 
> a 
> year while creating tests to cover everything.
> 
> Testing is useful, but the end purpose of the software is not to pass tests, 
> but 
> rather to provide capabilities to the user.
> 
> As an extreme example, I know of a company that lost a month of development 
> and 
> missed having the product ready for a national trade show because they got so 
> caught up in writing tests for everything that a test that didn't work right 
> when the software was being shutdown (after which it would be reset for the 
> next 
> test) HAD to be written before anything more could be done, and there was an 
> upstream bug in one component that caused this exit to never work cleanly. 
> Don't 
> fall into a similar trap.

Our views are not so far apart.

To be clear: I don't want to establish a process above the product.

But the process should be part of the product. Change the way you
currently work:

When developing a new feature, start with the documentation.
If you know how your new feature should look like, should be used, start
writing tests so you can be sure your new feature is actual doing what
you are are expecting.
Now you can start the actual coding...

In the end you have a new feature, fully documented and tested.


If you don't follow this work flow, you will end up with the current
situation: You maybe have great features -- but nobody knows due to
missing/hard to use documentation.
The tests will help you to keep your hard work working. Imagine you
spend days for a new feature but another change will break it. Without
tests you will only notice if somebody will actual try to use your
feature and fill a bug. But we all know that this don't happen that
often. Also, if you start looking for a new product which maybe solve
your problem you are currently facing and experience a bug which is a
show stopper for you in this moment, you will skip this product.

So if Rainer should decide to switch the work flow like described, this
would only help new features. But we still have to deal with the past.

That's why I recommend to change priority for a moment. Like a
"sprint"... like a bug hunt day/week/month where everybody focus on
squashing bugs.


If there is an upcoming "national trade show" where you want to show
something new, yes... do that (but please follow the new work flow). But
I am not aware of something like that in the next 4 months and I am not
aware of a missing feature which must be implemented ASAP or rsyslog
will go away...


-Thomas

___
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.


Re: [rsyslog] how to craft a test if the target behaves differently?

2014-11-11 Thread Thomas D.
Hi,

can't you write something like

> # libdbi
> {
>Leak from dbi/dlopen
>Memcheck:Leak
>fun:calloc
>obj:/lib/libdl-*.so
>fun:dlopen
>fun:dbi_initialize
> }

which should match multiple libdbi versions?


-Thomas
___
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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread David Lang

On Tue, 11 Nov 2014, Thomas D. wrote:


Hi,

On 2014-11-11 03:13, David Lang wrote:

you still need those credentials for your sandbox, right?

If MySQL isn't installed on the system you will need to install the package
(requiring root + distro specific knowledge), if it is installed, you need to
configure users and permissions for the test user (requiring DB root equivalent
+ distro specific knowlege)


Yes, running tests against any third-party application would require
access to those applications while testing. Theses tests are called
"integration tests".

Because you should *not* depend on those third-party applications you
often cannot run your integration tests every time you run the normal
test suite.

Therefore you would split your tests. And this is already done for
rsyslog: The mysql tests for example are separated.

But this doesn't mean you cannot test the ommysql at all without mysql:
You can write a mock so you can test your code at least.

BTW: Travis will allow us to test against a running mysql each time...


Add in Oracle, Postgres, RabbitMQ, 0MQ, journald, ElasticSearch, etc.

The vast majority of the problems that we run into with rsyslog are in the 
interfaces to these third party destinations.



But let me be clear. From this thread, it looks like these should be our
project priorities:

1. make the testbench fully automatic and self-contained
2. create unit tests
3. create more and better integration tests
4. document
5. fix bugs
6. develop new features

[...]


[...]

Yes, I am voting for changing the priority order like you said.


I disagree that 1, 2, and 3 are more important than 4 and 5 (where 6 lives is
subject to a lot of debate)


Wait, this order is not set in stone.

For example, to write tests, you have to know what a component should do
and how it should be used. So you need a documentation before you can
write tests.




Our views are not so far apart.

To be clear: I don't want to establish a process above the product.

But the process should be part of the product. Change the way you
currently work:

When developing a new feature, start with the documentation.
If you know how your new feature should look like, should be used, start
writing tests so you can be sure your new feature is actual doing what
you are are expecting.
Now you can start the actual coding...

In the end you have a new feature, fully documented and tested.


If you don't follow this work flow, you will end up with the current
situation: You maybe have great features -- but nobody knows due to
missing/hard to use documentation.
The tests will help you to keep your hard work working. Imagine you
spend days for a new feature but another change will break it. Without
tests you will only notice if somebody will actual try to use your
feature and fill a bug. But we all know that this don't happen that
often. Also, if you start looking for a new product which maybe solve
your problem you are currently facing and experience a bug which is a
show stopper for you in this moment, you will skip this product.


you _are_ argueing for process over product. You are pushing for strict 
test-driven-development, and while there are a lot of academics who really 
believe in such development, there are almost no development teams in the real 
world (commercial or opensource) that work that way for very long.


The problem with documentation isn't that no documents get written (with the 
exception of some contributed modules), but rather that the documentation has 
been written by someone so close to the problem that there is a huge amount of 
implied context that isn't obvious to others, and that the organization of the 
documentation is based on how the person writing it thinks about the problems, 
not how the people who don't know about the software think about the problems. 
There are also cases that the author (both software and documentation) didn't 
think of when programming/wriring, and so those may not be documented.



So if Rainer should decide to switch the work flow like described, this
would only help new features. But we still have to deal with the past.

That's why I recommend to change priority for a moment. Like a
"sprint"... like a bug hunt day/week/month where everybody focus on
squashing bugs.


You keep missing that there isn't a lot of "everybody" in rsyslog development. 
Rainer is the author of >90% of both the code and the documentation. He is very 
willing to accept contributions, but we need to get other people involved. The 
split of the documentation into a different repository was to help ease the 
process of contributing documentation, but after a brief initial flurry, the 
outside contributions have tapered off.


Please contribute tests, contribute documentation, contribute new features with 
any process that you want.


And feel free to discuss development models, but recognize that there are a lot 
of them out there and that there is no "one true way".


Writing good tests is a lot

Re: [rsyslog] how to craft a test if the target behaves differently?

2014-11-11 Thread Rainer Gerhards
2014-11-11 14:26 GMT+01:00 Thomas D. :

> Hi,
>
> can't you write something like
>
> > # libdbi
> > {
> >Leak from dbi/dlopen
> >Memcheck:Leak
> >fun:calloc
> >obj:/lib/libdl-*.so
> >fun:dlopen
> >fun:dbi_initialize
> > }
>
> which should match multiple libdbi versions?
>
>
I gave it a try, doesn't seem to be so simple.

I let valgrind generate the suppressions to get started. This is for
Ubuntu14.04:

{
   
   Memcheck:Leak
   match-leak-kinds: definite
   fun:calloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:dbi_conn_connect
   fun:initConn
   fun:beginTransaction
   fun:actionPrepare
   fun:processMsgMain
}


This is for CentOS 7:


{
   
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:dbi_conn_connect
   fun:initConn
   fun:beginTransaction
   fun:actionPrepare
   fun:processMsgMain
   fun:doSubmitToActionQ
}
{
   
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:dbi_conn_connect
   fun:initConn
   fun:beginTransaction
   fun:actionPrepare
   fun:processMsgMain
}{
   
   Memcheck:Leak
   match-leak-kinds: definite
   fun:calloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:dbi_conn_connect
   fun:initConn
   fun:beginTransaction
   fun:actionPrepare
   fun:processMsgMain
}
{
   
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   fun:pthread_once
   obj:*
   obj:*
   obj:*
   obj:*
   fun:dbi_conn_connect
   fun:initConn
   fun:beginTransaction
}

[I missed one violation here, but that doesn't really matter for the
context].

So it's quite different. I now thought I check if I misunderstood the
format and I can skip some of the contents. So on CentOS I changed

{
   
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   fun:pthread_once
   obj:*
   obj:*
   obj:*
   obj:*
   fun:dbi_conn_connect
   fun:initConn
   fun:beginTransaction
}

to

{
   
   Memcheck:Leak
   match-leak-kinds: definite
   fun:malloc
   obj:*
   obj:*
   obj:*
   fun:pthread_once
   obj:*
   fun:dbi_conn_connect
   fun:initConn
   fun:beginTransaction
}

... and the error shows up again.

Anything that I should change?

Rainer


> -Thomas
> ___
> 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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Rainer Gerhards
2014-11-11 14:43 GMT+01:00 David Lang :

> On Tue, 11 Nov 2014, Thomas D. wrote:
>
>  Hi,
>>
>> On 2014-11-11 03:13, David Lang wrote:
>>
>>> you still need those credentials for your sandbox, right?
>>>
>>> If MySQL isn't installed on the system you will need to install the
>>> package
>>> (requiring root + distro specific knowledge), if it is installed, you
>>> need to
>>> configure users and permissions for the test user (requiring DB root
>>> equivalent
>>> + distro specific knowlege)
>>>
>>
>> Yes, running tests against any third-party application would require
>> access to those applications while testing. Theses tests are called
>> "integration tests".
>>
>> Because you should *not* depend on those third-party applications you
>> often cannot run your integration tests every time you run the normal
>> test suite.
>>
>> Therefore you would split your tests. And this is already done for
>> rsyslog: The mysql tests for example are separated.
>>
>> But this doesn't mean you cannot test the ommysql at all without mysql:
>> You can write a mock so you can test your code at least.
>>
>> BTW: Travis will allow us to test against a running mysql each time...
>>
>
> Add in Oracle, Postgres, RabbitMQ, 0MQ, journald, ElasticSearch, etc.
>
> The vast majority of the problems that we run into with rsyslog are in the
> interfaces to these third party destinations.
>

I wouldn't go that far to say it's the "vast majority", but its a big bunch
in any case. A common case, however, is that the most useful tests are
those that are very hard to create - most notably those things that deal
with races. I judge "most useful" by actual bug reports which could have
been avoided by a test.


>
>  But let me be clear. From this thread, it looks like these should be our
> project priorities:
>
> 1. make the testbench fully automatic and self-contained
> 2. create unit tests
> 3. create more and better integration tests
> 4. document
> 5. fix bugs
> 6. develop new features
>
> [...]
>

 [...]

 Yes, I am voting for changing the priority order like you said.

>>>
>>> I disagree that 1, 2, and 3 are more important than 4 and 5 (where 6
>>> lives is
>>> subject to a lot of debate)
>>>
>>
>> Wait, this order is not set in stone.
>>
>> For example, to write tests, you have to know what a component should do
>> and how it should be used. So you need a documentation before you can
>> write tests.
>>
>>  
>
>> Our views are not so far apart.
>>
>> To be clear: I don't want to establish a process above the product.
>>
>> But the process should be part of the product. Change the way you
>> currently work:
>>
>> When developing a new feature, start with the documentation.
>> If you know how your new feature should look like, should be used, start
>> writing tests so you can be sure your new feature is actual doing what
>> you are are expecting.
>> Now you can start the actual coding...
>>
>> In the end you have a new feature, fully documented and tested.
>>
>>
>> If you don't follow this work flow, you will end up with the current
>> situation: You maybe have great features -- but nobody knows due to
>> missing/hard to use documentation.
>> The tests will help you to keep your hard work working. Imagine you
>> spend days for a new feature but another change will break it. Without
>> tests you will only notice if somebody will actual try to use your
>> feature and fill a bug. But we all know that this don't happen that
>> often. Also, if you start looking for a new product which maybe solve
>> your problem you are currently facing and experience a bug which is a
>> show stopper for you in this moment, you will skip this product.
>>
>
> you _are_ argueing for process over product. You are pushing for strict
> test-driven-development, and while there are a lot of academics who really
> believe in such development, there are almost no development teams in the
> real world (commercial or opensource) that work that way for very long.
>
> The problem with documentation isn't that no documents get written (with
> the exception of some contributed modules), but rather that the
> documentation has been written by someone so close to the problem that
> there is a huge amount of implied context that isn't obvious to others, and
> that the organization of the documentation is based on how the person
> writing it thinks about the problems, not how the people who don't know
> about the software think about the problems. There are also cases that the
> author (both software and documentation) didn't think of when
> programming/wriring, and so those may not be documented.
>

+1


>
>  So if Rainer should decide to switch the work flow like described, this
>> would only help new features. But we still have to deal with the past.
>>
>> That's why I recommend to change priority for a moment. Like a
>> "sprint"... like a bug hunt day/week/month where everybody focus on
>> squashing bugs.
>>
>
> Yo

Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Rainer Gerhards
side-note: It looks that with my last commit, the testbench in master
branch should now work. I couldn't test all possible option/platform
combinations. So it would be good if someone (Thomas? Anyone else?) could
try to break it and report back.

Thanks,
Rainer

2014-11-11 15:20 GMT+01:00 Rainer Gerhards :

>
> 2014-11-11 14:43 GMT+01:00 David Lang :
>
>> On Tue, 11 Nov 2014, Thomas D. wrote:
>>
>>  Hi,
>>>
>>> On 2014-11-11 03:13, David Lang wrote:
>>>
 you still need those credentials for your sandbox, right?

 If MySQL isn't installed on the system you will need to install the
 package
 (requiring root + distro specific knowledge), if it is installed, you
 need to
 configure users and permissions for the test user (requiring DB root
 equivalent
 + distro specific knowlege)

>>>
>>> Yes, running tests against any third-party application would require
>>> access to those applications while testing. Theses tests are called
>>> "integration tests".
>>>
>>> Because you should *not* depend on those third-party applications you
>>> often cannot run your integration tests every time you run the normal
>>> test suite.
>>>
>>> Therefore you would split your tests. And this is already done for
>>> rsyslog: The mysql tests for example are separated.
>>>
>>> But this doesn't mean you cannot test the ommysql at all without mysql:
>>> You can write a mock so you can test your code at least.
>>>
>>> BTW: Travis will allow us to test against a running mysql each time...
>>>
>>
>> Add in Oracle, Postgres, RabbitMQ, 0MQ, journald, ElasticSearch, etc.
>>
>> The vast majority of the problems that we run into with rsyslog are in
>> the interfaces to these third party destinations.
>>
>
> I wouldn't go that far to say it's the "vast majority", but its a big
> bunch in any case. A common case, however, is that the most useful tests
> are those that are very hard to create - most notably those things that
> deal with races. I judge "most useful" by actual bug reports which could
> have been avoided by a test.
>
>
>>
>>  But let me be clear. From this thread, it looks like these should be our
>> project priorities:
>>
>> 1. make the testbench fully automatic and self-contained
>> 2. create unit tests
>> 3. create more and better integration tests
>> 4. document
>> 5. fix bugs
>> 6. develop new features
>>
>> [...]
>>
>
> [...]
>
> Yes, I am voting for changing the priority order like you said.
>

 I disagree that 1, 2, and 3 are more important than 4 and 5 (where 6
 lives is
 subject to a lot of debate)

>>>
>>> Wait, this order is not set in stone.
>>>
>>> For example, to write tests, you have to know what a component should do
>>> and how it should be used. So you need a documentation before you can
>>> write tests.
>>>
>>>  
>>
>>> Our views are not so far apart.
>>>
>>> To be clear: I don't want to establish a process above the product.
>>>
>>> But the process should be part of the product. Change the way you
>>> currently work:
>>>
>>> When developing a new feature, start with the documentation.
>>> If you know how your new feature should look like, should be used, start
>>> writing tests so you can be sure your new feature is actual doing what
>>> you are are expecting.
>>> Now you can start the actual coding...
>>>
>>> In the end you have a new feature, fully documented and tested.
>>>
>>>
>>> If you don't follow this work flow, you will end up with the current
>>> situation: You maybe have great features -- but nobody knows due to
>>> missing/hard to use documentation.
>>> The tests will help you to keep your hard work working. Imagine you
>>> spend days for a new feature but another change will break it. Without
>>> tests you will only notice if somebody will actual try to use your
>>> feature and fill a bug. But we all know that this don't happen that
>>> often. Also, if you start looking for a new product which maybe solve
>>> your problem you are currently facing and experience a bug which is a
>>> show stopper for you in this moment, you will skip this product.
>>>
>>
>> you _are_ argueing for process over product. You are pushing for strict
>> test-driven-development, and while there are a lot of academics who really
>> believe in such development, there are almost no development teams in the
>> real world (commercial or opensource) that work that way for very long.
>>
>> The problem with documentation isn't that no documents get written (with
>> the exception of some contributed modules), but rather that the
>> documentation has been written by someone so close to the problem that
>> there is a huge amount of implied context that isn't obvious to others, and
>> that the organization of the documentation is based on how the person
>> writing it thinks about the problems, not how the people who don't know
>> about the software think about the problems. There are also cases that the
>> author (b

Re: [rsyslog] ruleset with only stop

2014-11-11 Thread Brian Knox
Rainer,

I agree that an empty ruleset is an oddity.  In our case, the short answer
is that we are generating configurations from templates using chef, and the
ability to have a ruleset that simply discards would make part of that
process much simpler for us.

It is admittedly an edge case.

Brian



On Tue, Nov 11, 2014 at 4:06 AM, Rainer Gerhards 
wrote:

> 2014-11-10 16:23 GMT+01:00 Brian Knox :
>
> > Today I noticed a ruleset with only "stop" as it's action will fail to
> > parse with rsyslog 8.4, but the same rule with a "~" will pass.
> >
> > ruleset(name="testme") {
> > *.* ~
> > }
> >
> > bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
> > rsyslogd: version 8.5.0, config validation run (level 1), master config
> > ./test.conf
> > rsyslogd: warning: ~ action is deprecated, consider using the 'stop'
> > statement instead [try http://www.rsyslog.com/e/2307 ]
> >
> >
> > Changing to "stop" :
> > ruleset(name="testme") {
> > stop
> > }
> >
> > bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
> > rsyslogd: version 8.5.0, config validation run (level 1), master config
> > ./test.conf
> > rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs
> will
> > run, but no output whatsoever is created. [try
> > http://www.rsyslog.com/e/2103
> > ]
> > rsyslogd: run failed with error -2103 (see rsyslog.h or try
> > http://www.rsyslog.com/e/2103 to learn what that number means)
> >
> > I have a situation where rules are being generated via templates in chef,
> > and having a rule that just discards messages would actually be a useful
> > thing to have, and ran into this.
> >
> > So my question is, should a rule that only calls a discard action be
> > valid?  If so, is this a bug in the config parser?
> >
> >
> It's a little bit complex. The thing is that "~" actually *is* an action,
> whereas "stop" is a statement. When I wrote that checking code, I never
> envisioned that an empty ruleset could be useful for any case (if there is
> just a "stop" inside it, it's practically empty, in that it simply does
> nothing). I think in most cases this really is a config error. Maybe I
> could add an "permitEmpty" parameter to the ruleset, which will then not
> emit that error message.
>
> To understand the whole picture: why do you need these empty rulesets?
>
> Rainer
>
> Brian
> > ___
> > 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.
>
___
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.


Re: [rsyslog] ruleset with only stop

2014-11-11 Thread David Lang

On Tue, 11 Nov 2014, Brian Knox wrote:


Rainer,

I agree that an empty ruleset is an oddity.  In our case, the short answer
is that we are generating configurations from templates using chef, and the
ability to have a ruleset that simply discards would make part of that
process much simpler for us.

It is admittedly an edge case.


It's an edge case, but I think it's one that should be supported if possible.

automated config generation is very useful, and being able to group rules into 
rulesets and call them with the calling function not having any idea of what is 
going to happen with the logs at that point is very useful, being able to have a 
high level config split the logs up and call different rulesets on different 
logs without having to worry if the ruleset does something with the logs or just 
throws them away is _very_ useful.


So it is a corner case, but I think it's a valuable one to support.

I would suggest that at config load time, that this is an odd enough corner case 
that it's worth logging a "ruleset X can't do anything with the logs" message, 
not just for the case where the only action is to throw it away, but also for 
the cases where the conditions in a ruleset cannot possibly match any log 
message (if priority = info then *.crit also cannot match anything for example)


David Lang


Brian



On Tue, Nov 11, 2014 at 4:06 AM, Rainer Gerhards 
wrote:


2014-11-10 16:23 GMT+01:00 Brian Knox :


Today I noticed a ruleset with only "stop" as it's action will fail to
parse with rsyslog 8.4, but the same rule with a "~" will pass.

ruleset(name="testme") {
*.* ~
}

bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
rsyslogd: version 8.5.0, config validation run (level 1), master config
./test.conf
rsyslogd: warning: ~ action is deprecated, consider using the 'stop'
statement instead [try http://www.rsyslog.com/e/2307 ]


Changing to "stop" :
ruleset(name="testme") {
stop
}

bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
rsyslogd: version 8.5.0, config validation run (level 1), master config
./test.conf
rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs

will

run, but no output whatsoever is created. [try
http://www.rsyslog.com/e/2103
]
rsyslogd: run failed with error -2103 (see rsyslog.h or try
http://www.rsyslog.com/e/2103 to learn what that number means)

I have a situation where rules are being generated via templates in chef,
and having a rule that just discards messages would actually be a useful
thing to have, and ran into this.

So my question is, should a rule that only calls a discard action be
valid?  If so, is this a bug in the config parser?



It's a little bit complex. The thing is that "~" actually *is* an action,
whereas "stop" is a statement. When I wrote that checking code, I never
envisioned that an empty ruleset could be useful for any case (if there is
just a "stop" inside it, it's practically empty, in that it simply does
nothing). I think in most cases this really is a config error. Maybe I
could add an "permitEmpty" parameter to the ruleset, which will then not
emit that error message.

To understand the whole picture: why do you need these empty rulesets?

Rainer

Brian

___
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.


___
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.


Re: [rsyslog] ruleset with only stop

2014-11-11 Thread Rainer Gerhards
2014-11-11 17:22 GMT+01:00 David Lang :

> On Tue, 11 Nov 2014, Brian Knox wrote:
>
>  Rainer,
>>
>> I agree that an empty ruleset is an oddity.  In our case, the short answer
>> is that we are generating configurations from templates using chef, and
>> the
>> ability to have a ruleset that simply discards would make part of that
>> process much simpler for us.
>>
>> It is admittedly an edge case.
>>
>
> It's an edge case, but I think it's one that should be supported if
> possible.
>
> automated config generation is very useful, and being able to group rules
> into rulesets and call them with the calling function not having any idea
> of what is going to happen with the logs at that point is very useful,
> being able to have a high level config split the logs up and call different
> rulesets on different logs without having to worry if the ruleset does
> something with the logs or just throws them away is _very_ useful.
>
> So it is a corner case, but I think it's a valuable one to support.
>
>
ack


> I would suggest that at config load time, that this is an odd enough
> corner case that it's worth logging a "ruleset X can't do anything with the
> logs" message, not just for the case where the only action is to throw it
> away, but also for the cases where the conditions in a ruleset cannot
> possibly match any log message (if priority = info then *.crit also cannot
> match anything for example)
>
>
Let's start with what we have on the table. I think it is best to add a
ruleset parameter "permitEmpty=on". That way, we don't generate
error/warning messages when the user is aware of what he is doing. In any
manual case (without config gen), I'd still say that's an error indication.

On the topic of no filter matches. That's quite complex, as you would need
to evaluate all the filters and possible conditions. Not sure if it can
even reliably done. Am I overlooking something?

Rainer


> David Lang
>
>
>  Brian
>>
>>
>>
>> On Tue, Nov 11, 2014 at 4:06 AM, Rainer Gerhards <
>> rgerha...@hq.adiscon.com>
>> wrote:
>>
>>  2014-11-10 16:23 GMT+01:00 Brian Knox :
>>>
>>>  Today I noticed a ruleset with only "stop" as it's action will fail to
 parse with rsyslog 8.4, but the same rule with a "~" will pass.

 ruleset(name="testme") {
 *.* ~
 }

 bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
 rsyslogd: version 8.5.0, config validation run (level 1), master config
 ./test.conf
 rsyslogd: warning: ~ action is deprecated, consider using the 'stop'
 statement instead [try http://www.rsyslog.com/e/2307 ]


 Changing to "stop" :
 ruleset(name="testme") {
 stop
 }

 bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
 rsyslogd: version 8.5.0, config validation run (level 1), master config
 ./test.conf
 rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs

>>> will
>>>
 run, but no output whatsoever is created. [try
 http://www.rsyslog.com/e/2103
 ]
 rsyslogd: run failed with error -2103 (see rsyslog.h or try
 http://www.rsyslog.com/e/2103 to learn what that number means)

 I have a situation where rules are being generated via templates in
 chef,
 and having a rule that just discards messages would actually be a useful
 thing to have, and ran into this.

 So my question is, should a rule that only calls a discard action be
 valid?  If so, is this a bug in the config parser?


  It's a little bit complex. The thing is that "~" actually *is* an
>>> action,
>>> whereas "stop" is a statement. When I wrote that checking code, I never
>>> envisioned that an empty ruleset could be useful for any case (if there
>>> is
>>> just a "stop" inside it, it's practically empty, in that it simply does
>>> nothing). I think in most cases this really is a config error. Maybe I
>>> could add an "permitEmpty" parameter to the ruleset, which will then not
>>> emit that error message.
>>>
>>> To understand the whole picture: why do you need these empty rulesets?
>>>
>>> Rainer
>>>
>>> Brian
>>>
 ___
 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.
>>>
>>>  __

Re: [rsyslog] ruleset with only stop

2014-11-11 Thread Boylan, James
I think that the "permitEmpty=on" field is a reasonable starting place. I have 
a config management app that I use with rsyslog that this field would help 
significantly with.

-- James
--- Sent from my mobile phone ---

- Reply message -
From: "Rainer Gerhards" 
To: "rsyslog-users" 
Subject: [rsyslog] ruleset with only stop
Date: Tue, Nov 11, 2014 10:29 AM

2014-11-11 17:22 GMT+01:00 David Lang :

> On Tue, 11 Nov 2014, Brian Knox wrote:
>
>  Rainer,
>>
>> I agree that an empty ruleset is an oddity.  In our case, the short answer
>> is that we are generating configurations from templates using chef, and
>> the
>> ability to have a ruleset that simply discards would make part of that
>> process much simpler for us.
>>
>> It is admittedly an edge case.
>>
>
> It's an edge case, but I think it's one that should be supported if
> possible.
>
> automated config generation is very useful, and being able to group rules
> into rulesets and call them with the calling function not having any idea
> of what is going to happen with the logs at that point is very useful,
> being able to have a high level config split the logs up and call different
> rulesets on different logs without having to worry if the ruleset does
> something with the logs or just throws them away is _very_ useful.
>
> So it is a corner case, but I think it's a valuable one to support.
>
>
ack


> I would suggest that at config load time, that this is an odd enough
> corner case that it's worth logging a "ruleset X can't do anything with the
> logs" message, not just for the case where the only action is to throw it
> away, but also for the cases where the conditions in a ruleset cannot
> possibly match any log message (if priority = info then *.crit also cannot
> match anything for example)
>
>
Let's start with what we have on the table. I think it is best to add a
ruleset parameter "permitEmpty=on". That way, we don't generate
error/warning messages when the user is aware of what he is doing. In any
manual case (without config gen), I'd still say that's an error indication.

On the topic of no filter matches. That's quite complex, as you would need
to evaluate all the filters and possible conditions. Not sure if it can
even reliably done. Am I overlooking something?

Rainer


> David Lang
>
>
>  Brian
>>
>>
>>
>> On Tue, Nov 11, 2014 at 4:06 AM, Rainer Gerhards <
>> rgerha...@hq.adiscon.com>
>> wrote:
>>
>>  2014-11-10 16:23 GMT+01:00 Brian Knox :
>>>
>>>  Today I noticed a ruleset with only "stop" as it's action will fail to
 parse with rsyslog 8.4, but the same rule with a "~" will pass.

 ruleset(name="testme") {
 *.* ~
 }

 bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
 rsyslogd: version 8.5.0, config validation run (level 1), master config
 ./test.conf
 rsyslogd: warning: ~ action is deprecated, consider using the 'stop'
 statement instead [try http://www.rsyslog.com/e/2307 ]


 Changing to "stop" :
 ruleset(name="testme") {
 stop
 }

 bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
 rsyslogd: version 8.5.0, config validation run (level 1), master config
 ./test.conf
 rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs

>>> will
>>>
 run, but no output whatsoever is created. [try
 http://www.rsyslog.com/e/2103
 ]
 rsyslogd: run failed with error -2103 (see rsyslog.h or try
 http://www.rsyslog.com/e/2103 to learn what that number means)

 I have a situation where rules are being generated via templates in
 chef,
 and having a rule that just discards messages would actually be a useful
 thing to have, and ran into this.

 So my question is, should a rule that only calls a discard action be
 valid?  If so, is this a bug in the config parser?


  It's a little bit complex. The thing is that "~" actually *is* an
>>> action,
>>> whereas "stop" is a statement. When I wrote that checking code, I never
>>> envisioned that an empty ruleset could be useful for any case (if there
>>> is
>>> just a "stop" inside it, it's practically empty, in that it simply does
>>> nothing). I think in most cases this really is a config error. Maybe I
>>> could add an "permitEmpty" parameter to the ruleset, which will then not
>>> emit that error message.
>>>
>>> To understand the whole picture: why do you need these empty rulesets?
>>>
>>> Rainer
>>>
>>> Brian
>>>
 ___
 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

Re: [rsyslog] ruleset with only stop

2014-11-11 Thread Brian Knox
+1 for permitEmpty=on - it would definitely simplify our lives.

Brian

On Tue, Nov 11, 2014 at 11:40 AM, Boylan, James 
wrote:

> I think that the "permitEmpty=on" field is a reasonable starting place. I
> have a config management app that I use with rsyslog that this field would
> help significantly with.
>
> -- James
> --- Sent from my mobile phone ---
>
> - Reply message -
> From: "Rainer Gerhards" 
> To: "rsyslog-users" 
> Subject: [rsyslog] ruleset with only stop
> Date: Tue, Nov 11, 2014 10:29 AM
>
> 2014-11-11 17:22 GMT+01:00 David Lang :
>
> > On Tue, 11 Nov 2014, Brian Knox wrote:
> >
> >  Rainer,
> >>
> >> I agree that an empty ruleset is an oddity.  In our case, the short
> answer
> >> is that we are generating configurations from templates using chef, and
> >> the
> >> ability to have a ruleset that simply discards would make part of that
> >> process much simpler for us.
> >>
> >> It is admittedly an edge case.
> >>
> >
> > It's an edge case, but I think it's one that should be supported if
> > possible.
> >
> > automated config generation is very useful, and being able to group rules
> > into rulesets and call them with the calling function not having any idea
> > of what is going to happen with the logs at that point is very useful,
> > being able to have a high level config split the logs up and call
> different
> > rulesets on different logs without having to worry if the ruleset does
> > something with the logs or just throws them away is _very_ useful.
> >
> > So it is a corner case, but I think it's a valuable one to support.
> >
> >
> ack
>
>
> > I would suggest that at config load time, that this is an odd enough
> > corner case that it's worth logging a "ruleset X can't do anything with
> the
> > logs" message, not just for the case where the only action is to throw it
> > away, but also for the cases where the conditions in a ruleset cannot
> > possibly match any log message (if priority = info then *.crit also
> cannot
> > match anything for example)
> >
> >
> Let's start with what we have on the table. I think it is best to add a
> ruleset parameter "permitEmpty=on". That way, we don't generate
> error/warning messages when the user is aware of what he is doing. In any
> manual case (without config gen), I'd still say that's an error indication.
>
> On the topic of no filter matches. That's quite complex, as you would need
> to evaluate all the filters and possible conditions. Not sure if it can
> even reliably done. Am I overlooking something?
>
> Rainer
>
>
> > David Lang
> >
> >
> >  Brian
> >>
> >>
> >>
> >> On Tue, Nov 11, 2014 at 4:06 AM, Rainer Gerhards <
> >> rgerha...@hq.adiscon.com>
> >> wrote:
> >>
> >>  2014-11-10 16:23 GMT+01:00 Brian Knox :
> >>>
> >>>  Today I noticed a ruleset with only "stop" as it's action will fail to
>  parse with rsyslog 8.4, but the same rule with a "~" will pass.
> 
>  ruleset(name="testme") {
>  *.* ~
>  }
> 
>  bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
>  rsyslogd: version 8.5.0, config validation run (level 1), master
> config
>  ./test.conf
>  rsyslogd: warning: ~ action is deprecated, consider using the 'stop'
>  statement instead [try http://www.rsyslog.com/e/2307 ]
> 
> 
>  Changing to "stop" :
>  ruleset(name="testme") {
>  stop
>  }
> 
>  bknox@seriamau:~$ rsyslogd -N1 -f ./test.conf
>  rsyslogd: version 8.5.0, config validation run (level 1), master
> config
>  ./test.conf
>  rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs
> 
> >>> will
> >>>
>  run, but no output whatsoever is created. [try
>  http://www.rsyslog.com/e/2103
>  ]
>  rsyslogd: run failed with error -2103 (see rsyslog.h or try
>  http://www.rsyslog.com/e/2103 to learn what that number means)
> 
>  I have a situation where rules are being generated via templates in
>  chef,
>  and having a rule that just discards messages would actually be a
> useful
>  thing to have, and ran into this.
> 
>  So my question is, should a rule that only calls a discard action be
>  valid?  If so, is this a bug in the config parser?
> 
> 
>   It's a little bit complex. The thing is that "~" actually *is* an
> >>> action,
> >>> whereas "stop" is a statement. When I wrote that checking code, I never
> >>> envisioned that an empty ruleset could be useful for any case (if there
> >>> is
> >>> just a "stop" inside it, it's practically empty, in that it simply does
> >>> nothing). I think in most cases this really is a config error. Maybe I
> >>> could add an "permitEmpty" parameter to the ruleset, which will then
> not
> >>> emit that error message.
> >>>
> >>> To understand the whole picture: why do you need these empty rulesets?
> >>>
> >>> Rainer
> >>>
> >>> Brian
> >>>
>  ___
>  rsyslog mailing list
>  http://lists.adiscon.net/mailman/lis

Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Thomas D.
Hi,

On 2014-11-11 15:24, Rainer Gerhards wrote:
> side-note: It looks that with my last commit, the testbench in master
> branch should now work. I couldn't test all possible option/platform
> combinations. So it would be good if someone (Thomas? Anyone else?) could
> try to break it and report back.

"imptcp_conndrop.sh" is failing, but this time the test suite won't wait
forever, nice! ;)

> [...]
> PASS: failover-no-rptd-vg.sh
> PASS: udp-msgreduc-vg.sh
> PASS: udp-msgreduc-orgmsg-vg.sh
> PASS: tcp-msgreduc-vg.sh
> PASS: manyptcp.sh
> PASS: imptcp_large.sh
> PASS: imptcp_addtlframedelim.sh
> libgcc_s.so.1 must be installed for pthread_cancel to work
> FAIL: imptcp_conndrop.sh
> PASS: rscript_replace.sh
> PASS: rscript_replace_complex.sh
> PASS: rscript_wrap2.sh
> PASS: rscript_wrap3.sh
> [...]
> 
> Testsuite summary for rsyslog 8.5.0
> 
> # TOTAL: 124
> # PASS:  118
> # SKIP:  5
> # XFAIL: 0
> # FAIL:  1
> # XPASS: 0
> # ERROR: 0
> 
> See tests/test-suite.log
> Please report to rsyslog@lists.adiscon.com
> 

tests/test-suite.log:
https://bpaste.net/show/a488b224cfd9

rsyslog was build with:

> /var/tmp/portage/app-admin/rsyslog-8./work/rsyslog-8./configure 
> --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu 
> --mandir=/usr/share/man --infodir=/usr/share/info
>  --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib 
> --disable-dependency-tracking --disable-silent-rules --libdir=/usr/lib64 
> --docdir=/usr/share/doc/rsyslog-8. --enable-gene
> rate-man-pages --enable-imfile --enable-impstats --enable-imptcp 
> --enable-imttcp --enable-mmanon --enable-mmaudit --enable-mmfields 
> --enable-mmjsonparse --enable-mmpstrucdata --enable-mmsequ
> ence --enable-mmutf8fix --enable-mail --enable-omprog --enable-omruleset 
> --enable-omstdout --enable-omuxsock --enable-pmaixforwardedfrom 
> --enable-pmciscoios --enable-pmcisconames --enable-pm
> lastmsg --enable-pmrfc3164sd --enable-pmsnare --disable-libdbi 
> --disable-ommongodb --disable-mysql --disable-oracle --disable-pgsql 
> --disable-omhiredis --enable-debug --enable-diagtools --en
> able-imdiag --enable-memcheck --enable-rtinst --enable-valgrind 
> --disable-elasticsearch --enable-libgcrypt --enable-jemalloc 
> --disable-gssapi-krb5 --disable-mmnormalize --disable-omudpspoof
> --disable-omrabbitmq --disable-relp --disable-rfc3195 
> --disable-mmrfc5424addhmac --disable-snmp --disable-mmsnmptrapd 
> --disable-gnutls --disable-imjournal --disable-omjournal --disable-usert
> ools --disable-imzmq3 --disable-omzmq3 
> --with-systemdsystemunitdir=/usr/lib/systemd/system --enable-testbench


Not sure about

> libgcc_s.so.1 must be installed for pthread_cancel to work

=>

> # locate libgcc_s.so.1
> /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/libgcc_s.so.1
> /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1

and

# pwd
/var/tmp/portage/app-admin/rsyslog-8./work/rsyslog-8./tests

# srcdir=. ./imptcp_conndrop.sh

TEST: [imptcp_conndrop.sh]: test imptcp with random connection drops
rsyslogd started with pid  3462
00020 open connections
starting run 1
Sending 5 messages.
0005 messages sent
runtime: 2.442
00020 close connections
-D option initiated 2477 connection closures
End of tcpflood Run
imdiag[13500]: mainqueue empty
libgcc_s.so.1 must be installed for pthread_cancel to work
./diag.sh: line 16:  3462 Aborted (core dumped)
$valgrind ../tools/rsyslogd -u2 -n -irsyslog$3.pid
-M../runtime/.libs:../.libs -f$srcdir/testsuites/$2


-Thomas

___
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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Thomas D.
On 2014-11-11 22:02, Thomas D. wrote:
> Not sure about
> 
>> libgcc_s.so.1 must be installed for pthread_cancel to work
> 
> =>
> 
>> # locate libgcc_s.so.1
>> /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/libgcc_s.so.1
>> /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1
> 
> and
> 
> # pwd
> /var/tmp/portage/app-admin/rsyslog-8./work/rsyslog-8./tests
> 
> # srcdir=. ./imptcp_conndrop.sh
> 
> TEST: [imptcp_conndrop.sh]: test imptcp with random connection drops
> rsyslogd started with pid  3462
> 00020 open connections
> starting run 1
> Sending 5 messages.
> 0005 messages sent
> runtime: 2.442
> 00020 close connections
> -D option initiated 2477 connection closures
> End of tcpflood Run
> imdiag[13500]: mainqueue empty
> libgcc_s.so.1 must be installed for pthread_cancel to work
> ./diag.sh: line 16:  3462 Aborted (core dumped)
> $valgrind ../tools/rsyslogd -u2 -n -irsyslog$3.pid
> -M../runtime/.libs:../.libs -f$srcdir/testsuites/$2

Back trace:

> #0  0x7f623d0fcec7 in __GI_raise (sig=sig@entry=6) at 
> ../sysdeps/unix/sysv/linux/raise.c:55
> #1  0x7f623d0fe2ca in __GI_abort () at abort.c:89
> #2  0x0042fd8f in sigsegvHdlr (signum=6) at debug.c:852
> #3  
> #4  0x7f623d0fcec7 in __GI_raise (sig=sig@entry=6) at 
> ../sysdeps/unix/sysv/linux/raise.c:55
> #5  0x7f623d0fe2ca in __GI_abort () at abort.c:89
> #6  0x7f623d13af34 in __libc_message (do_abort=do_abort@entry=1, 
> fmt=fmt@entry=0x7f623d22b3cf "%s") at ../sysdeps/posix/libc_fatal.c:175
> #7  0x7f623d13af5e in __GI___libc_fatal (message=0x7f623e2cb3d8 
> "libgcc_s.so.1 must be installed for pthread_cancel to work\n") at 
> ../sysdeps/posix/libc_fatal.c:186
> #8  0x7f623e2c9864 in pthread_cancel_init () at 
> ../sysdeps/nptl/unwind-forcedunwind.c:64
> #9  0x7f623e2c994c in _Unwind_ForcedUnwind (exc=0x7f623bdd0d70, 
> stop=stop@entry=0x7f623e2c7c60 , stop_argument=0x7f623bdcfeb0) 
> at ../sysdeps/nptl/unwind-forcedunwind.c:129
> #10 0x7f623e2c7dd0 in __GI___pthread_unwind (buf=) at 
> unwind.c:129
> #11 0x7f623e2c2465 in __do_cancel () at pthreadP.h:277
> #12 __pthread_exit (value=) at pthread_exit.c:29
> #13 0x0045df82 in thrdStarter (arg=0x7f623c82d3e0) at ../threads.c:227
> #14 0x7f623e2c13c4 in start_thread (arg=0x7f623bdd0700) at 
> pthread_create.c:310
> #15 0x7f623d1ada2d in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Using glibc-2.20.

Related to: https://sourceware.org/bugzilla/show_bug.cgi?id=13119 ?

At least when running the example from the bug report I am getting a
similar back trace:

> #0  0x7fc39c017ec7 in __GI_raise (sig=sig@entry=6) at 
> ../sysdeps/unix/sysv/linux/raise.c:55
> #1  0x7fc39c0192ca in __GI_abort () at abort.c:89
> #2  0x7fc39c055f34 in __libc_message (do_abort=do_abort@entry=1, 
> fmt=fmt@entry=0x7fc39c1463cf "%s") at ../sysdeps/posix/libc_fatal.c:175
> #3  0x7fc39c055f5e in __GI___libc_fatal (message=0x7fc39c3903d8 
> "libgcc_s.so.1 must be installed for pthread_cancel to work\n") at 
> ../sysdeps/posix/libc_fatal.c:186
> #4  0x7fc39c38e864 in pthread_cancel_init () at 
> ../sysdeps/nptl/unwind-forcedunwind.c:64
> #5  0x7fc39c38e94c in _Unwind_ForcedUnwind (exc=0x7fc39bfe2d70, 
> stop=stop@entry=0x7fc39c38cc60 , stop_argument=0x7fc39bfe1f70) 
> at ../sysdeps/nptl/unwind-forcedunwind.c:129
> #6  0x7fc39c38cdd0 in __GI___pthread_unwind (buf=) at 
> unwind.c:129
> #7  0x7fc39c387465 in __do_cancel () at pthreadP.h:277
> #8  __pthread_exit (value=) at pthread_exit.c:29
> #9  0x00400721 in foo (ptr=0x0) at foo.c:15
> #10 0x7fc39c3863c4 in start_thread (arg=0x7fc39bfe2700) at 
> pthread_create.c:310
> #11 0x7fc39c0c8a2d in clone () at 
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:109


-Thomas
___
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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Rainer Gerhards
If thread _ cancel does not work all sorts of things can go wrong. Do you
know why the platform is defective? Any way to detect this? So that we
during configure can tell it does not work?

Rainer

Sent from phone, thus brief.
Am 11.11.2014 22:21 schrieb "Thomas D." :

> On 2014-11-11 22:02, Thomas D. wrote:
> > Not sure about
> >
> >> libgcc_s.so.1 must be installed for pthread_cancel to work
> >
> > =>
> >
> >> # locate libgcc_s.so.1
> >> /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/libgcc_s.so.1
> >> /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1
> >
> > and
> >
> > # pwd
> > /var/tmp/portage/app-admin/rsyslog-8./work/rsyslog-8./tests
> >
> > # srcdir=. ./imptcp_conndrop.sh
> >
> 
> > TEST: [imptcp_conndrop.sh]: test imptcp with random connection drops
> > rsyslogd started with pid  3462
> > 00020 open connections
> > starting run 1
> > Sending 5 messages.
> > 0005 messages sent
> > runtime: 2.442
> > 00020 close connections
> > -D option initiated 2477 connection closures
> > End of tcpflood Run
> > imdiag[13500]: mainqueue empty
> > libgcc_s.so.1 must be installed for pthread_cancel to work
> > ./diag.sh: line 16:  3462 Aborted (core dumped)
> > $valgrind ../tools/rsyslogd -u2 -n -irsyslog$3.pid
> > -M../runtime/.libs:../.libs -f$srcdir/testsuites/$2
>
> Back trace:
>
> > #0  0x7f623d0fcec7 in __GI_raise (sig=sig@entry=6) at
> ../sysdeps/unix/sysv/linux/raise.c:55
> > #1  0x7f623d0fe2ca in __GI_abort () at abort.c:89
> > #2  0x0042fd8f in sigsegvHdlr (signum=6) at debug.c:852
> > #3  
> > #4  0x7f623d0fcec7 in __GI_raise (sig=sig@entry=6) at
> ../sysdeps/unix/sysv/linux/raise.c:55
> > #5  0x7f623d0fe2ca in __GI_abort () at abort.c:89
> > #6  0x7f623d13af34 in __libc_message (do_abort=do_abort@entry=1,
> fmt=fmt@entry=0x7f623d22b3cf "%s") at ../sysdeps/posix/libc_fatal.c:175
> > #7  0x7f623d13af5e in __GI___libc_fatal (message=0x7f623e2cb3d8
> "libgcc_s.so.1 must be installed for pthread_cancel to work\n") at
> ../sysdeps/posix/libc_fatal.c:186
> > #8  0x7f623e2c9864 in pthread_cancel_init () at
> ../sysdeps/nptl/unwind-forcedunwind.c:64
> > #9  0x7f623e2c994c in _Unwind_ForcedUnwind (exc=0x7f623bdd0d70,
> stop=stop@entry=0x7f623e2c7c60 ,
> stop_argument=0x7f623bdcfeb0) at ../sysdeps/nptl/unwind-forcedunwind.c:129
> > #10 0x7f623e2c7dd0 in __GI___pthread_unwind (buf=) at
> unwind.c:129
> > #11 0x7f623e2c2465 in __do_cancel () at pthreadP.h:277
> > #12 __pthread_exit (value=) at pthread_exit.c:29
> > #13 0x0045df82 in thrdStarter (arg=0x7f623c82d3e0) at
> ../threads.c:227
> > #14 0x7f623e2c13c4 in start_thread (arg=0x7f623bdd0700) at
> pthread_create.c:310
> > #15 0x7f623d1ada2d in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
>
> Using glibc-2.20.
>
> Related to: https://sourceware.org/bugzilla/show_bug.cgi?id=13119 ?
>
> At least when running the example from the bug report I am getting a
> similar back trace:
>
> > #0  0x7fc39c017ec7 in __GI_raise (sig=sig@entry=6) at
> ../sysdeps/unix/sysv/linux/raise.c:55
> > #1  0x7fc39c0192ca in __GI_abort () at abort.c:89
> > #2  0x7fc39c055f34 in __libc_message (do_abort=do_abort@entry=1,
> fmt=fmt@entry=0x7fc39c1463cf "%s") at ../sysdeps/posix/libc_fatal.c:175
> > #3  0x7fc39c055f5e in __GI___libc_fatal (message=0x7fc39c3903d8
> "libgcc_s.so.1 must be installed for pthread_cancel to work\n") at
> ../sysdeps/posix/libc_fatal.c:186
> > #4  0x7fc39c38e864 in pthread_cancel_init () at
> ../sysdeps/nptl/unwind-forcedunwind.c:64
> > #5  0x7fc39c38e94c in _Unwind_ForcedUnwind (exc=0x7fc39bfe2d70,
> stop=stop@entry=0x7fc39c38cc60 ,
> stop_argument=0x7fc39bfe1f70) at ../sysdeps/nptl/unwind-forcedunwind.c:129
> > #6  0x7fc39c38cdd0 in __GI___pthread_unwind (buf=) at
> unwind.c:129
> > #7  0x7fc39c387465 in __do_cancel () at pthreadP.h:277
> > #8  __pthread_exit (value=) at pthread_exit.c:29
> > #9  0x00400721 in foo (ptr=0x0) at foo.c:15
> > #10 0x7fc39c3863c4 in start_thread (arg=0x7fc39bfe2700) at
> pthread_create.c:310
> > #11 0x7fc39c0c8a2d in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
>
>
> -Thomas
> ___
> 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 beyon

Re: [rsyslog] ruleset with only stop

2014-11-11 Thread David Lang

On Tue, 11 Nov 2014, Rainer Gerhards wrote:


2014-11-11 17:22 GMT+01:00 David Lang :


On Tue, 11 Nov 2014, Brian Knox wrote:

 Rainer,


I agree that an empty ruleset is an oddity.  In our case, the short answer
is that we are generating configurations from templates using chef, and
the
ability to have a ruleset that simply discards would make part of that
process much simpler for us.

It is admittedly an edge case.



It's an edge case, but I think it's one that should be supported if
possible.

automated config generation is very useful, and being able to group rules
into rulesets and call them with the calling function not having any idea
of what is going to happen with the logs at that point is very useful,
being able to have a high level config split the logs up and call different
rulesets on different logs without having to worry if the ruleset does
something with the logs or just throws them away is _very_ useful.

So it is a corner case, but I think it's a valuable one to support.



ack



I would suggest that at config load time, that this is an odd enough
corner case that it's worth logging a "ruleset X can't do anything with the
logs" message, not just for the case where the only action is to throw it
away, but also for the cases where the conditions in a ruleset cannot
possibly match any log message (if priority = info then *.crit also cannot
match anything for example)



Let's start with what we have on the table. I think it is best to add a
ruleset parameter "permitEmpty=on". That way, we don't generate
error/warning messages when the user is aware of what he is doing. In any
manual case (without config gen), I'd still say that's an error indication.


I think that this is a sufficently corner case that I'm not sure it's worth the 
extra complexity to silence the warning. I think that people who do this 
intentionally can just ignore the log message.



On the topic of no filter matches. That's quite complex, as you would need
to evaluate all the filters and possible conditions. Not sure if it can
even reliably done. Am I overlooking something?


I am not saying that it should try to catch every possible case, but I was 
thinking that the configuration optimization step would "optomize away" some 
impossible combinations, and that could result in an empty ruleset.


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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread David Lang


if you can find the diag.sh that it's using, look at what binaries it's calling 
and do an ldd on them, it's likely that that library isn't in the ldconfig path.


David Lang

On Tue, 11 Nov 2014, Thomas D. wrote:


Date: Tue, 11 Nov 2014 22:02:41 +0100
From: Thomas D. 
Reply-To: rsyslog-users 
To: rsyslog@lists.adiscon.com
Subject: Re: [rsyslog] Feedback Request: do we still need -devel versions?

Hi,

On 2014-11-11 15:24, Rainer Gerhards wrote:

side-note: It looks that with my last commit, the testbench in master
branch should now work. I couldn't test all possible option/platform
combinations. So it would be good if someone (Thomas? Anyone else?) could
try to break it and report back.


"imptcp_conndrop.sh" is failing, but this time the test suite won't wait
forever, nice! ;)


[...]
PASS: failover-no-rptd-vg.sh
PASS: udp-msgreduc-vg.sh
PASS: udp-msgreduc-orgmsg-vg.sh
PASS: tcp-msgreduc-vg.sh
PASS: manyptcp.sh
PASS: imptcp_large.sh
PASS: imptcp_addtlframedelim.sh
libgcc_s.so.1 must be installed for pthread_cancel to work
FAIL: imptcp_conndrop.sh
PASS: rscript_replace.sh
PASS: rscript_replace_complex.sh
PASS: rscript_wrap2.sh
PASS: rscript_wrap3.sh
[...]

Testsuite summary for rsyslog 8.5.0

# TOTAL: 124
# PASS:  118
# SKIP:  5
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

See tests/test-suite.log
Please report to rsyslog@lists.adiscon.com



tests/test-suite.log:
https://bpaste.net/show/a488b224cfd9

rsyslog was build with:


/var/tmp/portage/app-admin/rsyslog-8./work/rsyslog-8./configure 
--prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu 
--mandir=/usr/share/man --infodir=/usr/share/info
 --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib 
--disable-dependency-tracking --disable-silent-rules --libdir=/usr/lib64 
--docdir=/usr/share/doc/rsyslog-8. --enable-gene
rate-man-pages --enable-imfile --enable-impstats --enable-imptcp 
--enable-imttcp --enable-mmanon --enable-mmaudit --enable-mmfields 
--enable-mmjsonparse --enable-mmpstrucdata --enable-mmsequ
ence --enable-mmutf8fix --enable-mail --enable-omprog --enable-omruleset 
--enable-omstdout --enable-omuxsock --enable-pmaixforwardedfrom 
--enable-pmciscoios --enable-pmcisconames --enable-pm
lastmsg --enable-pmrfc3164sd --enable-pmsnare --disable-libdbi 
--disable-ommongodb --disable-mysql --disable-oracle --disable-pgsql 
--disable-omhiredis --enable-debug --enable-diagtools --en
able-imdiag --enable-memcheck --enable-rtinst --enable-valgrind 
--disable-elasticsearch --enable-libgcrypt --enable-jemalloc 
--disable-gssapi-krb5 --disable-mmnormalize --disable-omudpspoof
--disable-omrabbitmq --disable-relp --disable-rfc3195 
--disable-mmrfc5424addhmac --disable-snmp --disable-mmsnmptrapd 
--disable-gnutls --disable-imjournal --disable-omjournal --disable-usert
ools --disable-imzmq3 --disable-omzmq3 
--with-systemdsystemunitdir=/usr/lib/systemd/system --enable-testbench



Not sure about


libgcc_s.so.1 must be installed for pthread_cancel to work


=>


# locate libgcc_s.so.1
/usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/libgcc_s.so.1
/usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.3/32/libgcc_s.so.1


and

# pwd
/var/tmp/portage/app-admin/rsyslog-8./work/rsyslog-8./tests

# srcdir=. ./imptcp_conndrop.sh

TEST: [imptcp_conndrop.sh]: test imptcp with random connection drops
rsyslogd started with pid  3462
00020 open connections
starting run 1
Sending 5 messages.
0005 messages sent
runtime: 2.442
00020 close connections
-D option initiated 2477 connection closures
End of tcpflood Run
imdiag[13500]: mainqueue empty
libgcc_s.so.1 must be installed for pthread_cancel to work
./diag.sh: line 16:  3462 Aborted (core dumped)
$valgrind ../tools/rsyslogd -u2 -n -irsyslog$3.pid
-M../runtime/.libs:../.libs -f$srcdir/testsuites/$2


-Thomas

___
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.


Re: [rsyslog] ruleset with only stop

2014-11-11 Thread Brian Knox
If was able to use an empty ruleset, a warning resulting from that wouldn't
bother me at all.

Brian

On Tue, Nov 11, 2014 at 4:25 PM, David Lang  wrote:

> On Tue, 11 Nov 2014, Rainer Gerhards wrote:
>
>  2014-11-11 17:22 GMT+01:00 David Lang :
>>
>>  On Tue, 11 Nov 2014, Brian Knox wrote:
>>>
>>>  Rainer,
>>>

 I agree that an empty ruleset is an oddity.  In our case, the short
 answer
 is that we are generating configurations from templates using chef, and
 the
 ability to have a ruleset that simply discards would make part of that
 process much simpler for us.

 It is admittedly an edge case.


>>> It's an edge case, but I think it's one that should be supported if
>>> possible.
>>>
>>> automated config generation is very useful, and being able to group rules
>>> into rulesets and call them with the calling function not having any idea
>>> of what is going to happen with the logs at that point is very useful,
>>> being able to have a high level config split the logs up and call
>>> different
>>> rulesets on different logs without having to worry if the ruleset does
>>> something with the logs or just throws them away is _very_ useful.
>>>
>>> So it is a corner case, but I think it's a valuable one to support.
>>>
>>>
>>>  ack
>>
>>
>>  I would suggest that at config load time, that this is an odd enough
>>> corner case that it's worth logging a "ruleset X can't do anything with
>>> the
>>> logs" message, not just for the case where the only action is to throw it
>>> away, but also for the cases where the conditions in a ruleset cannot
>>> possibly match any log message (if priority = info then *.crit also
>>> cannot
>>> match anything for example)
>>>
>>>
>>>  Let's start with what we have on the table. I think it is best to add a
>> ruleset parameter "permitEmpty=on". That way, we don't generate
>> error/warning messages when the user is aware of what he is doing. In any
>> manual case (without config gen), I'd still say that's an error
>> indication.
>>
>
> I think that this is a sufficently corner case that I'm not sure it's
> worth the extra complexity to silence the warning. I think that people who
> do this intentionally can just ignore the log message.
>
>  On the topic of no filter matches. That's quite complex, as you would need
>> to evaluate all the filters and possible conditions. Not sure if it can
>> even reliably done. Am I overlooking something?
>>
>
> I am not saying that it should try to catch every possible case, but I was
> thinking that the configuration optimization step would "optomize away"
> some impossible combinations, and that could result in an empty ruleset.
>
> 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.


[rsyslog] tls + tcp input

2014-11-11 Thread Brian Knox
Is it possible to specify TLS on a per input basis for the TCP input, or is
it all or nothing?

Brian
___
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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Thomas D.
On 2014-11-11 22:27, David Lang wrote:
> if you can find the diag.sh that it's using, look at what binaries it's 
> calling 
> and do an ldd on them, it's likely that that library isn't in the ldconfig 
> path.

To make sure the build environment doesn't have the problem (because
when I manually run the test, the test seems to pass) I added some
debugging code to "imptcp_conndrop.sh", see
https://bpaste.net/show/c52e4da0a446

Now the output looks like

https://bpaste.net/show/b35599ee85c0

Looks good, not?


...and the manual run passed again: http://pastebin.com/raw.php?i=niXvTeUt

Not sure what's going on :/


-Thomas

___
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.


Re: [rsyslog] Feedback Request: do we still need -devel versions?

2014-11-11 Thread Thomas D.
On 2014-11-11 22:24, Rainer Gerhards wrote:
> If thread _ cancel does not work all sorts of things can go wrong. Do you
> know why the platform is defective? Any way to detect this? So that we
> during configure can tell it does not work?

At the moment I don't understand what's going on.

The core dump created in rsyslog's test seems to be identical with the
one you'll get when running the code from glibc's bug tracker like I
quoted in my previous mail.

But because when I manually run the failed rsyslog test again after
"make check" the test will pass... no pthread_cancel error.

So *I* cannot tell you at the moment if there's a problem with
pthread_cancel at all you need to get around.


-Thomas

___
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.


Re: [rsyslog] [Lognorm] Tokenized-multivalue field-type for liblognorm

2014-11-11 Thread singh.janmejay
Sorry, this should be discussed on rsyslog mailing list, adding rsyslog as
well.

Here are the pull requests(in order):

https://github.com/rsyslog/libestr/pull/1
https://github.com/rsyslog/liblognorm/pull/8
https://github.com/rsyslog/rsyslog/pull/149


On Wed, Nov 12, 2014 at 9:55 AM, singh.janmejay 
wrote:

> The array-subscripting patches are ready, I'll send a pull request on
> github.
>
> It is of the form $!foo[1]!bar[2]!baz.
>
> On Wed, Nov 12, 2014 at 9:52 AM, singh.janmejay 
> wrote:
>
>> How do we want foreach support to be?
>>
>> Possible places are:
>> 1. a foreach loop-construct along-side flow-control structures in rscript
>> 2. a foreach value-producing templateElement in template
>>
>> The tradeoff is, someone looking to do some useful re-structuring of
>> output, may want to call exec-template several times in approach-1, but
>> they can just emit out what they want by placing property-extractors in
>> foreach block in approch-2.
>>
>> The counter argument is, templates can't assign variables, execute
>> functions, do arithmetic-operations etc, so usefulness of foreach in a
>> template will be limited to most basic of message transformation cases.
>> Additionally, string-template as of now has no clean way of implementing
>> foreach. It'll require some involved syntax.
>>
>> To me approach-1 seems better suited for such a thing (purely because
>> if-else, the other flow control structure is implemented at this level, and
>> variable assignment, functions etc make arbitrary transformation easier).
>>
>> Once we have decided where to place foreach, let us zero in on its
>> syntax. To seed the thought, how about this:
>>
>> set $.grault = "";
>> foreach($!foo as $.bar) {
>> set $.baz = $.bar!quux;
>> foreach($.baz as $.corge) {
>> if ( $.corge contains "#" ) then {
>> set $.grault = $.grault & $.corge;
>> }
>> }
>> }
>>
>> Alternatively:
>> foreach($.bar <- $!foo) {...}
>> foreach($.bar in $!foo) {...}
>> foreach($.bar : $!foo) {...}
>>
>>
>>
>> On Fri, Oct 31, 2014 at 6:46 PM, singh.janmejay > > wrote:
>>
>>> Sure, I'll fork on github.
>>>
>>> On Fri, Oct 31, 2014 at 6:42 PM, Rainer Gerhards <
>>> rgerha...@hq.adiscon.com> wrote:
>>>
 2014-10-31 14:08 GMT+01:00 singh.janmejay :

> Cool, I'll implement $!foo!bar[0].
>
> +1


> Let us process this patch-set, because is kinda hard to keep track of
> old patches and re-send in one shot.
>
>
 would you mind cloning on github and maintain a feature branch there?
 That would make it much easier for me, as I could merge the branch when you
 are done. If not, it's no problem and I'll maintain that branch.


 i'll send the new patch once done(i'll now only get to work on it on
> monday).
>
>
 I haven't had a chance to look as I am now busy building test
 environments and looking at the testbench [yes, one guy!] ;) But I see
 Pavel has asked some questions. He recently did a lot of work on the lib,so
 it is best to coordinate that part with him.

 Rainer

 Do existing patches look ok except for the indexed-addressing feature?
>
> On Fri, Oct 31, 2014 at 4:15 PM, David Lang  wrote:
>
>> On Fri, 31 Oct 2014, singh.janmejay wrote:
>>
>>  Yes, I didn't have a need to address tokens individually, but you
>>> have a
>>> point.
>>>
>>> Any suggestions on what we want to do for addressing array elements?
>>>
>>> I wonder if its possible to do in $!... notation without breaking
>>> backward
>>> compatibility. How about a function?
>>>
>>> I'll be happy to implement support for addressing it in $!...
>>> notation if
>>> don't mind breaking a corner case in backward compatibility. Eg.
>>> $!foo!bar![0] ? Its kinda ugly though, or so I think.
>>>
>>
>> I was thinking just $!foo!bar[0] it's a bit ugly, but not too bad. It
>> does mean that you can't have '[' in a variable name, but I don't think
>> that's likely to be a real problem. I don't think there's ever a really
>> clean way to do something like $!foo[2]!bar[2]!baz no matter what your
>> syntax, it gets messy.
>>
>> for templates, we probably need some sort of foreach(array, pattern)
>> function that takes the pattern and repeats it for each item in the 
>> array.
>>
>> David Lang
>>
>>
>>  On Fri, Oct 31, 2014 at 3:44 PM, David Lang  wrote:
>>>
>>>  On Fri, 31 Oct 2014, singh.janmejay wrote:

  It writes it as a json array, here is a fragment from my manual
 tests:

>
> [ "15", "26", "15" ]
>
>
 right, but how do you access it in rsyslog?

 if you have { 'foo': { 'bar': '10' } } you access this as $!foo!bar
 and
 get the result '10'

 what would you use to access the value '26' in your example?