Thanks for the confirmation...  I guessed as much.

Thanks!!!
Robert

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Pavel Levshin
Sent: Friday, October 25, 2013 8:32 AM
To: [email protected]
Subject: Re: [rsyslog] Another approach to action load balancing


These numbers are approximately 2^64. It is a bit too long for signed long
long, which is used in rsyslog.

So wrong results are expected, but at least they are consistent.


--
Pavel Levshin


25.10.2013 19:22, Robert McIntyre:
> Yes, there does appear to be an issue...  Regarding:
>   
> 1- Match/sub-match starting with 0: This isn't a problem; it's documented,
etc., and I just missed it.
>   
> 2- I'm putting this in place today, with the proper escaping.
>   
> 4- This was just a learning point for me, not necessarily something to
change.
>   
> 3- Type conversions or modulus with big numbers:
>   
> This one is a bit more concerning.  I just did a test with setting a
string variable to a large numeric string, followed by setting another
variable to the mod 5 of that number, and printed both out in a file:
>   
> ...
>   
> template(
>   name="common1"
>   type="string"
>   string="%$!%_\n"
> )
>   
>   set $!msgid = "18446744072308350743";
>   set $!msgidmod = $!msgid % 5;
>   
>   action(name="Act_File6"
>    type="omfile"
>    template="common1"
>    file="/syslogdata/testing/6.txt")
>   
> ...
>   
> And this is the output I get:
> { "msgid": "18446744072308350743", "msgidmod": 2 }_
>   
> Which is incorrect to begin with.  But, even more damning is when I
increment the string by 1 (making it 18446744072308350744)  I get the same
result:
> { "msgid": "18446744072308350744", "msgidmod": 2 }_
>   
> Or, if I then switch to mod 3, I get this, which is also wrong (it should
be zero):
> { "msgid": "18446744072308350744", "msgidmod": 1 }_
>   
>   
> But, if I drop down into smaller numbers (255, 256, 257, 258), I get the
correct results.  So, something is definitely not right when you get to
larger numbers.  I'm not sure whether it's a problem with the string to
number conversion, or the modulus, or something else.
>   
> Thanks!
> Robert
>   
>> Date: Fri, 25 Oct 2013 08:05:07 +0200
>> From: [email protected]
>> To: [email protected]
>> Subject: Re: [rsyslog] Another approach to action load balancing
>>
>> On Fri, Oct 25, 2013 at 7:51 AM, Pavel Levshin <[email protected]>
wrote:
>>
>>> 25.10.2013 9:30, Robert J. McIntyre:
>>>
>>>   Probably the last email on this, I swear!  :) I've had a chance to 
>>> do a
>>>> bunch of digging around, and here's some thoughts/notes on why this 
>>>> was so weird for me to get sorted out:
>>>>
>>>>
>>>> 1.       Match and sub-match for re_extract() start with 0, not 1,
which
>>>> is
>>>> noted in the docs, but didn't register initially
>>>>
>>> Match numbering had been not obvious to me, too. For submatch, it is 
>>> natural, as "0" is the whole match, and real submatches are numbered
from 1!
>>
>> I think this was for consistency with the property replacer, but I 
>> won't even check as it is too late to change now. But I agree to your 
>> argument ;)
>>
>>
>>>
>>>   2.       Re_extract doesn't like the typical IP regex (eg.
>>>> \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{**1,3}), it didn't seem to like the 
>>>> escape "\"
>>>> characters, so I wound up having to use [0-9]{1,3} and so forth.  
>>>> It works, but not sure why the escaped characters didn't work.  
>>>> (Unless I needed to escape the escape characters because it's in a 
>>>> string, which makes my head hurt; hrrm.)
>>>>
>>> re_extract is using POSIX Extended Regular Expressions, but escaped 
>>> symbols are a part of Perl-compatible Regular Expressions. Which is 
>>> not supported. It worth mentioning in the documentation.
>>>
>>>
>> I think the reason is much simpler. \ is the escape within rsyslog 
>> strings (to do things like \n). So if you need a \ inside the regex 
>> (which is given inside the string), you need to escape that escape.
>>
>> In other words, "\d{1,3}"  will lead to "d{1,3}" being passed to the 
>> regex processor, what you really wanted was "\\d{1,3}" (obviously, 
>> it's the same in all languages that use \ as escape - just think C for
example).
>>
>>
>>>> 3.       Cnum(), or the "type-less" conversion, (probably, can't check
the
>>>> sources) uses longs, which means that really long sequence/serial 
>>>> numbers from firewalls cause it to overload and do weird things 
>>>> which make modulus also weird.
>>>>
>>> This should not be. Cnum is using 'long long'. Have you seen any 
>>> signs of a bug here?
>>>
>>>
>> +1
>>
>>>
>>>> 4.       Doing type-less comparisons leaves me wondering whether
they're
>>>> not
>>>> evaluating properly, or whether the problem lies upstream when 
>>>> things don't work properly.  The $.msgid == "2" vs. $.msgid == 2 
>>>> thing left me uncertain what was correct for a while.
>>>>
>>> Maybe this is much better in 7.5.
>>>
>>>
>> No, and to be honest I think this is the same "problem" in all 
>> typeless languages. But I didn't want to introduced the "overhead" of 
>> a fully type languge. After all, it's still a config file format 
>> that's deemed to be somewhat flexible.
>>
>> Nevertheless suggestions are welcome. but note that we cannot break 
>> what works currently.
>>
>> Rainer
>>
>>> --
>>> Pavel Levshin
>>>
>>>
>>> ______________________________**_________________
>>> rsyslog mailing list
>>> http://lists.adiscon.net/**mailman/listinfo/rsyslog<http://lists.adi
>>> scon.net/mailman/listinfo/rsyslog>
>>> http://www.rsyslog.com/**professional-services/<http://www.rsyslog.c
>>> om/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.
_______________________________________________
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