Hi Johannes,

On Wed, Aug 09, 2023 at 01:02:29PM +0200, Johannes Naab wrote:
> Hi,
> 
> I'm trying to use a stick table with general purpose tags (gpt) to do longer
> term (beyond the window itself) maximum connection rate tracking:
> - stick table with conn_rate and one gpt
> - update/set gpt0 if the current conn_rate is greater than what is stored in 
> the gpt.
> 
> But I have trouble setting the gpt even from a trivial sample expression,
> erroring during config parsing with `internal error, unexpected rule->from=0,
> please report this bug!`.

At first glance I can't find a reason why your config would not work,
so you've definitely discovered a bug.

I have no idea what causes it at the moment. A few things you could try,
in any order, to help locate the bug:

  - check if it accepts it using "http-request sc-set-gpt" instead of
    "tcp-request connection" so that we know if it's related to the ruleset
    or something else ;

  - please also try sc0-set-gpt(0) instead of sc-set-gpt(0,0), maybe there
    is something wrong in the latter's parser.

  - does your other test with "int(1)" as the expression also fail or did
    it work ? If it did work, maybe forcing a cat to integer on the variable
    using "var(proc.baz),add(0)" could work.

In any case some feedback on these points could be useful. The last two
ones would be safe workarounds if they work.


> Config, output, and haproxy -vv below.
> 
> Should this work, or do I misunderstand what sc-set-gpt can achieve?

For me it should work, and if there's a corner case that makes it
impossible with your config, I'm not seeing it and we should report it
in a much more user-friendly way!

Thanks!
Willy

Reply via email to