kayx23 commented on code in PR #13215:
URL: https://github.com/apache/apisix/pull/13215#discussion_r3094964656


##########
docs/en/latest/plugins/limit-conn.md:
##########
@@ -30,43 +30,46 @@ description: The limit-conn plugin restricts the rate of 
requests by managing co
   <link rel="canonical" href="https://docs.api7.ai/hub/limit-conn"; />
 </head>
 
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
 ## Description
 
 The `limit-conn` Plugin limits the rate of requests by the number of 
concurrent connections. Requests exceeding the threshold will be delayed or 
rejected based on the configuration, ensuring controlled resource usage and 
preventing overload.
 
 ## Attributes
 
-| Name       | Type    | Required | Default     | Valid values      | 
Description     |
-|------------|---------|----------|-------------|-------------------|-----------------|
-| conn       | integer | False     |     | > 0   | The maximum number of 
concurrent requests allowed. Requests exceeding the configured limit and below 
`conn + burst` will be delayed. Required if `rules` is not configured.      |
-| burst      | integer | False     |     | >= 0        | The number of 
excessive concurrent requests allowed to be delayed per second. Requests 
exceeding the limit will be rejected immediately. Required if `rules` is not 
configured.       |
-| default_conn_delay       | number  | True     |     | > 0    | Processing 
latency allowed in seconds for concurrent requests exceeding `conn + burst`, 
which can be dynamically adjusted based on `only_use_default_delay` setting.    
       |
-| only_use_default_delay   | boolean | False    | false       |      | If 
false, delay requests proportionally based on how much they exceed the `conn` 
limit. The delay grows larger as congestion increases. For instance, with 
`conn` being `5`, `burst` being `3`, and `default_conn_delay` being `1`, 6 
concurrent requests would result in a 1-second delay, 7 requests a 2-second 
delay, 8 requests a 3-second delay, and so on, until the total limit of `conn + 
burst` is reached, beyond which requests are rejected. If true, use 
`default_conn_delay` to delay all excessive requests within the `burst` range. 
Requests beyond `conn + burst` are rejected immediately. For instance, with 
`conn` being `5`, `burst` being `3`, and `default_conn_delay` being `1`, 6, 7, 
or 8 concurrent requests are all delayed by exactly 1 second each. |
-| rules                    | array[object] | False    |       |                
   | A list of connection limiting rules. Each rule is an object containing 
`conn`, `burst`, and `key`. If configured, this takes precedence over `conn`, 
`burst`, and `key`. |
-| rules.conn               | integer or string | True |       | > 0 or 
variable expression | The maximum number of concurrent requests allowed. Can be 
a static integer or a variable expression like `$http_custom_conn`. |
-| rules.burst              | integer or string | True |       | >= 0 or 
variable expression | The number of excessive concurrent requests allowed to be 
delayed. Can be a static integer or a variable expression. |
-| rules.key                | string  | True     |       |                   | 
The key to count requests by. If the configured key does not exist, the rule 
will not be executed. The `key` is interpreted as a combination of variables, 
for example: `$http_custom_a $http_custom_b`. |
-| key_type        | string  | False      | var   | ["var","var_combination"] | 
The type of key. If the `key_type` is `var`, the `key` is interpreted a 
variable. If the `key_type` is `var_combination`, the `key` is interpreted as a 
combination of variables.    |
-| key       | string  | False      | remote_addr |   | The key to count 
requests by. If the `key_type` is `var`, the `key` is interpreted a variable. 
The variable does not need to be prefixed by a dollar sign (`$`). If the 
`key_type` is `var_combination`, the `key` is interpreted as a combination of 
variables. All variables should be prefixed by dollar signs (`$`). For example, 
to configure the `key` to use a combination of two request headers `custom-a` 
and `custom-b`, the `key` should be configured as `$http_custom_a 
$http_custom_b`. Required if `rules` is not configured. |
-| key_ttl   | integer | False      | 3600          |   | The TTL of the Redis 
key in seconds. Used when `policy` is `redis` or `redis-cluster`. |
-| rejected_code   | integer | False      | 503   | [200,...,599]   | The HTTP 
status code returned when a request is rejected for exceeding the threshold.    
 |
-| rejected_msg    | string  | False        |       | non-empty   | The 
response body returned when a request is rejected for exceeding the threshold.  
   |
-| allow_degradation       | boolean | False      | false   |   | If true, 
allow APISIX to continue handling requests without the Plugin when the Plugin 
or its dependencies become unavailable.        |
-| policy    | string  | False      | local       | 
["local","redis","redis-cluster"]    | The policy for rate limiting counter. If 
it is `local`, the counter is stored in memory locally. If it is `redis`, the 
counter is stored on a Redis instance. If it is `redis-cluster`, the counter is 
stored in a Redis cluster.    |
-| redis_host      | string  | False   |       |   | The address of the Redis 
node. Required when `policy` is `redis`.    |
-| redis_port      | integer | False      | 6379    | [1,...]   | The port of 
the Redis node when `policy` is `redis`.       |
-| redis_username    | string  | False      |       |   | The username for 
Redis if Redis ACL is used. If you use the legacy authentication method 
`requirepass`, configure only the `redis_password`. Used when `policy` is 
`redis`.        |
-| redis_password    | string  | False      |       |   | The password of the 
Redis node when `policy` is `redis` or `redis-cluster`.        |
-| redis_ssl       | boolean | False      | false   |   | If true, use SSL to 
connect to Redis cluster when `policy` is `redis`.       |
-| redis_ssl_verify        | boolean | False      | false   |   | If true, 
verify the server SSL certificate when `policy` is `redis`.    |
-| redis_database    | integer | False      | 0     | >= 0      | The database 
number in Redis when `policy` is `redis`.    |
-| redis_timeout   | integer | False      | 1000    | [1,...]   | The Redis 
timeout value in milliseconds when `policy` is `redis` or `redis-cluster`.      
|
-| redis_keepalive_timeout | integer | False | 10000 | ≥ 1000 | Keepalive 
timeout in milliseconds for redis when `policy` is `redis` or `redis-cluster`. |
-| redis_keepalive_pool | integer | False | 100 | ≥ 1 | Keepalive pool size for 
redis when `policy` is `redis` or `redis-cluster`.|
-| redis_cluster_nodes     | array[string]   | False |       |   | The list of 
the Redis cluster nodes with at least two addresses. Required when policy is 
redis-cluster.     |
-| redis_cluster_name      | string  | False |       |   | The name of the 
Redis cluster. Required when `policy` is `redis-cluster`.      |
-| redis_cluster_ssl      | boolean  |  False |     false   |   | If true, use 
SSL to connect to Redis cluster when `policy` is      |
-| redis_cluster_ssl_verify      | boolean  | False |    false      |   | If 
true, verify the server SSL certificate when `policy` is `redis-cluster`.     |
+| Name | Type | Required | Default | Valid values | Description |
+|------|------|----------|---------|--------------|-------------|
+| conn | integer,string | False | | integer > 0, or a variable expression | 
The maximum number of concurrent requests allowed. Requests exceeding the 
configured limit and below `conn + burst` will be delayed. Required if `rules` 
is not configured. |
+| burst | integer,string | False | | integer >= 0, or a variable expression | 
The number of excessive concurrent requests allowed to be delayed. Requests 
exceeding `conn + burst` will be rejected immediately. Required if `rules` is 
not configured. |
+| default_conn_delay | number | True | | > 0 | Processing latency allowed in 
seconds for concurrent requests exceeding `conn` and up to `conn + burst`, 
which can be dynamically adjusted based on `only_use_default_delay` setting. |
+| only_use_default_delay | boolean | False | false | | If false, delay 
requests proportionally based on how much they exceed the `conn` limit. The 
delay grows larger as congestion increases. For instance, with `conn` being 
`5`, `burst` being `3`, and `default_conn_delay` being `1`, 6 concurrent 
requests would result in a 1-second delay, 7 requests a 2-second delay, 8 
requests a 3-second delay, and so on, until the total limit of `conn + burst` 
is reached, beyond which requests are rejected. If true, use 
`default_conn_delay` to delay all excessive requests within the `burst` range. 
Requests beyond `conn + burst` are rejected immediately. For instance, with 
`conn` being `5`, `burst` being `3`, and `default_conn_delay` being `1`, 6, 7, 
or 8 concurrent requests are all delayed by exactly 1 second each. |
+| key_type | string | False | var | [`var`, `var_combination`] | The type of 
key. If the `key_type` is `var`, the `key` is interpreted as a variable. If the 
`key_type` is `var_combination`, the `key` is interpreted as a combination of 
variables. |
+| key | string | False | remote_addr | | The key to count requests by. If the 
`key_type` is `var`, the `key` is interpreted as a variable. The variable does 
not need to be prefixed by a dollar sign (`$`). If the `key_type` is 
`var_combination`, the `key` is interpreted as a combination of variables. All 
variables should be prefixed by dollar signs (`$`). For example, to configure 
the `key` to use a combination of two request headers `custom-a` and 
`custom-b`, the `key` should be configured as `$http_custom_a $http_custom_b`. 
Required if `rules` is not configured. |
+| rejected_code | integer | False | 503 | [200, ..., 599] | The HTTP status 
code returned when a request is rejected for exceeding the threshold. |
+| rejected_msg | string | False | | non-empty | The response body returned 
when a request is rejected for exceeding the threshold. |
+| allow_degradation | boolean | False | false | | If true, allow APISIX to 
continue handling requests without the Plugin when the Plugin or its 
dependencies become unavailable. |
+| policy | string | False | local | [`local`, `redis`, `redis-cluster`] | The 
policy for rate limiting counter. If it is `local`, the counter is stored in 
memory locally. If it is `redis`, the counter is stored on a Redis instance. If 
it is `redis-cluster`, the counter is stored in a Redis cluster. |
+| redis_host | string | False | | | The address of the Redis node. Required 
when `policy` is `redis`. |
+| redis_port | integer | False | 6379 | >= 1 | The port of the Redis node when 
`policy` is `redis`. |
+| redis_username | string | False | | | The username for Redis if Redis ACL is 
used. If you use the legacy authentication method `requirepass`, configure only 
the `redis_password`. Used when `policy` is `redis`. |
+| redis_password | string | False | | | The password of the Redis node when 
`policy` is `redis` or `redis-cluster`. |
+| redis_ssl | boolean | False | false | | If true, use SSL to connect to Redis 
when `policy` is `redis`. |
+| redis_ssl_verify | boolean | False | false | | If true, verify the server 
SSL certificate when `policy` is `redis`. |
+| redis_database | integer | False | 0 | >= 0 | The database number in Redis 
when `policy` is `redis`. |
+| redis_timeout | integer | False | 1000 | >= 1 | The Redis timeout value in 
milliseconds when `policy` is `redis` or `redis-cluster`. |
+| redis_keepalive_timeout | integer | False | 10000 | >= 1000 | Keepalive 
timeout in milliseconds for Redis when `policy` is `redis` or `redis-cluster`. |
+| redis_keepalive_pool | integer | False | 100 | >= 1 | Keepalive pool size 
for Redis when `policy` is `redis` or `redis-cluster`. |
+| key_ttl | integer | False | 3600 | | The TTL of the Redis key in seconds. 
Used when `policy` is `redis` or `redis-cluster`. |
+| redis_cluster_nodes | array[string] | False | | | The list of Redis cluster 
nodes with at least one address. Required when `policy` is `redis-cluster`. |
+| redis_cluster_name | string | False | | | The name of the Redis cluster. 
Required when `policy` is `redis-cluster`. |
+| redis_cluster_ssl | boolean | False | false | | If true, use SSL to connect 
to Redis cluster when `policy` is `redis-cluster`. |
+| redis_cluster_ssl_verify | boolean | False | false | | If true, verify the 
server SSL certificate when `policy` is `redis-cluster`. |
+| rules | array[object] | False | | | An array of rate-limiting rules that are 
applied sequentially. Available in APISIX from 3.16.0. You should configure one 
of the following parameter sets, but not both: `conn`, `burst`, 
`default_conn_delay`, `key` or `rules`, `default_conn_delay`. |
+| rules.conn | integer or string | True | | > 0 or variable expression | The 
maximum number of concurrent requests allowed. Requests exceeding the 
configured limit and below `conn + burst` will be delayed. This parameter also 
supports the string data type and allows the use of built-in variables prefixed 
with a dollar sign (`$`). |

Review Comment:
   > variable expression
   
   Should use lua-resty-expr consistently and link it to 
https://github.com/api7/lua-resty-expr



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to