Fixed here: https://github.com/rsyslog/rsyslog/pull/358

Some related thoughts:
- this control can be used to exactly count messages
- most load-balancing or sampling scenarios don't need exact counters,
they need to be approximately right
- random-numbers can be used for load-balancing (goes without saying
it doesn't give us counters, if needed for some other reason)

Global variables work using a global-lock, which is not good for throughput.

So how about:
- we build support for thread-local (or rather worker-instance-local) counters
- we build a function rand(<max>) which returns a random number 0 <=
result < 'max'

I am not suggesting one-of-the-two, instead Im suggesting 'both'.

On Sat, May 23, 2015 at 8:24 AM, David Lang <[email protected]> wrote:
> you should be able to use global variables instead. no need for a plugin.
>
> David Lang
>
> On Sat, 23 May 2015, chenlin rao wrote:
>
>> Date: Sat, 23 May 2015 10:41:27 +0800
>> From: chenlin rao <[email protected]>
>> Reply-To: rsyslog-users <[email protected]>
>> To: rsyslog-users <[email protected]>
>> Subject: Re: [rsyslog] cee json + mmsequence
>>
>>
>> mmsequence is deprecated? So which plugin instead?
>>
>> 2015-05-22 21:15 GMT+08:00 singh.janmejay <[email protected]>:
>>
>>> Cool, thats the answer I was looking for.
>>>
>>>
>>> On Fri, May 22, 2015 at 5:55 PM, Rainer Gerhards
>>> <[email protected]> wrote:
>>>>
>>>> 2015-05-21 17:40 GMT+02:00 singh.janmejay <[email protected]>:
>>>>>
>>>>> Are $/ variable manipulations supposed to be atomic?
>>>>
>>>>
>>>> It depends on what you mean with "atomic". The value returned should
>>>> be consistent, that for sure. But if you use
>>>>
>>>> $/var = $/var + 1
>>>
>>>
>>> Yes, I expect it to jump, but not get corrupted.
>>>
>>>>
>>>> and $/var is 16 when this starts, the result can very well be 18 if
>>>> another thread executed the exact same sequence. I think for this use
>>>> there was an atomic increment function planned. I guess I never
>>>> implemented it, though.
>>>>
>>>>>
>>>>> Eg. $/var % 16 should never produce any number greater than 15, but it
>>>
>>> does.
>>>
>>> This will not be a problem if we use atomic read.
>>> Since you have made it clear that the idea was to make it atomic(which
>>> means this is a bug), I'll fix this.
>>>
>>>>
>>>> as David said, that's a bug.
>>>>
>>>>>
>>>>> Are they non-atomic by design? If so, is mmsequence the right thing to
>>>>> use (assuming it has atomic counters, I haven't checked if it really
>>>>> does)?
>>>>
>>>>
>>>> mmsequence is deprecated.
>>>>
>>>>>
>>>>> There are few options on the table, I guess.
>>>>
>>>>
>>>> before I take a shot at these, let's see if we had the same
>>>> understanding of "atomic".
>>>
>>>
>>> We do.
>>>
>>>>
>>>> Rainer
>>>>>
>>>>> 1. If $/ variables are supposed to be atomic, we just fix the impl.
>>>>> 2. We use mmsequence, and keep it alive (assuming it has atomic
>>>
>>> counters)
>>>>>
>>>>> 3. We fix mmsequence to implement atomic counters.
>>>>> 4. If $/ is not supposed to be atomic (by design), we implement $@
>>>>> which is thread-local, so people can get atomic counters within thread
>>>>> (evenness in data(for load-balancing or sampling kind of usecase) is
>>>>> maintained by the fact that a single thread will pump a lot of
>>>>> messages, so across all threads it'll approximately be as even as it
>>>>> is in a single-thread.
>>>>> 5. We implement a random-number construct (which i believe either
>>>>> mmsequence or mmcount had) which allows acceptable load-balancing or
>>>>> sampling etc.
>>>>>
>>>>> Thoughts?
>>>>>
>>>>> On Wed, Dec 3, 2014 at 11:12 PM, David Lang <[email protected]> wrote:
>>>>>>
>>>>>> On Wed, 3 Dec 2014, Brian Knox wrote:
>>>>>>
>>>>>>> So two questions then:
>>>>>>>
>>>>>>> 1.  In the case of using mmjsonparse on messages where we do not know
>>>>>>> ahead
>>>>>>> of time what all the. json attributes will be, is there a var for a
>>>
>>> place
>>>>>>>
>>>>>>> in the tree where we can get all attributes that were in the cee
>>>
>>> message?
>>>>>>
>>>>>>
>>>>>>
>>>>>> There are three 'classes' of variables
>>>>>>
>>>>>> $! are 'normal' variables, the place that mmjsonparse, etc put the
>>>
>>> results
>>>>>>
>>>>>> of parsing the cee message by default.
>>>>>>
>>>>>> $. are 'local' variables, they are a place you can put stuff that you
>>>
>>> don't
>>>>>>
>>>>>> want to end up in a message when you output $!
>>>>>>
>>>>>> $\ are 'global' variables, unlike the others, they persist from
>>>
>>> message to
>>>>>>
>>>>>> message.
>>>>>>
>>>>>> All of these variables are a tree, where you can have $!foo!bar and
>>>>>> $!foo!baz. If you just reference $!foo it will output both bar and baz
>>>
>>> as
>>>>>>
>>>>>> JSON
>>>>>>
>>>>>> so to see everything, parse the message and then output $!
>>>>>>
>>>>>>> 2. If mmsequence is being deprecated, is there a pointer to how to
>>>>>>> increment global variables to provide a sequence?
>>>>>>
>>>>>>
>>>>>>
>>>>>> set $\var = $\var + 1;
>>>>>>
>>>>>>> 3. This morning I remembered the "mmcount" module - is this also
>>>>>>> being
>>>>>>> deprecated in favor of global variables?
>>>>>>
>>>>>>
>>>>>>
>>>>>> probably.
>>>>>>
>>>>>> David Lang
>>>>>>
>>>>>>
>>>>>>> Brian
>>>>>>>
>>>>>>> On Wed, Dec 3, 2014 at 3:52 AM, Rainer Gerhards <
>>>
>>> [email protected]>
>>>>>>>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> 2014-12-02 21:59 GMT+01:00 Brian Knox <[email protected]>:
>>>>>>>>
>>>>>>>>> We have a case where we are receiving messages in @cee: format, and
>>>>>>>>> would
>>>>>>>>> like to add a sequence variable generated via mmsequence to the
>>>
>>> message.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Before I spend too much time digging into this I wanted to ask if,
>>>
>>> using
>>>>>>>>>
>>>>>>>>> some template hackery and json subtrees, this is something that
>>>
>>> sounds
>>>>>>>>>
>>>>>>>>> possible - and if maybe someone else was already doing it.
>>>>>>>>>
>>>>>>>>>
>>>>>>>> David has answered the real question, just let me add that
>>>
>>> mmsequence was
>>>>>>>>
>>>>>>>> a
>>>>>>>> work-around for v7 where global variables were not available. It is
>>>
>>> now
>>>>>>>>
>>>>>>>> deprecated and will probably removed in a couple of month.
>>>>>>>>
>>>>>>>> I'll check the doc if it tells this clearly enough.
>>>>>>>>
>>>>>>>> Rainer
>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>> 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.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Janmejay
>>>>> http://codehunk.wordpress.com
>>>>> _______________________________________________
>>>>> 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.
>>>
>>>
>>>
>>> --
>>> Regards,
>>> Janmejay
>>> http://codehunk.wordpress.com
>>> _______________________________________________
>>> 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.



-- 
Regards,
Janmejay
http://codehunk.wordpress.com
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to