From 29bddd461c30bc850633350ac81e3c9fd7b56cb8 Mon Sep 17 00:00:00 2001
From: Daniel Schneller <d...@danielschneller.de>
Date: Mon, 21 Mar 2016 20:46:57 +0100
Subject: [PATCH] DOC: Clarify tunes.vars.xxx-max-size settings

Adds a little more clarity to the description of the maximum sizes of
the different variable scopes and adds a note about what happens when
the space allocated for variables is too small.

Also fixes some typos and grammar/spelling issues re/ variables and
their naming conventions, copied throughout the document.
---
 doc/configuration.txt | 227 +++++++++++++++++++++++++-------------------------
 1 file changed, 114 insertions(+), 113 deletions(-)

diff --git a/doc/configuration.txt b/doc/configuration.txt
index c9cca4f..5147626 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -1400,16 +1400,22 @@ tune.vars.global-max-size <size>
 tune.vars.reqres-max-size <size>
 tune.vars.sess-max-size <size>
 tune.vars.txn-max-size <size>
-  These four tunes helps to manage the allowed amount of memory used by the
-  variables system. "global" limits the memory for all the systems. "sess" 
limit
-  the memory by session, "txn" limits the memory by transaction and "reqres"
-  limits the memory for each request or response processing. during the
-  accounting, "sess" embbed "txn" and "txn" embed "reqres".
-
-  By example, we considers that "tune.vars.sess-max-size" is fixed to 100,
-  "tune.vars.txn-max-size" is fixed to 100, "tune.vars.reqres-max-size" is
-  also fixed to 100. If we create a variable "txn.var" that contains 100 bytes,
-  we cannot create any more variable in the other contexts.
+  These four tunes help to manage the maximum amount of memory used by the
+  variables system. "global" limits the overall amount of memory available
+  for all scopes. "sess" limits the memory for the session scope, "txn" for
+  the transaction scope, and "reqres" limits the memory for each request or
+  response processing.
+  Memory accounting is hierarchical, meaning more coarse grained limits
+  include the finer grained ones: "sess" includes "txn", and "txn" includes
+  "reqres".
+
+  For example, when "tune.vars.sess-max-size" is limited to 100,
+  "tune.vars.txn-max-size" and "tune.vars.reqres-max-size" cannot exceed
+  100 either. If we create a variable "txn.var" that contains 100 bytes,
+  all available space is consumed.
+  Notice that exceeding the limits at runtime will not result in an error
+  message, but values might be cut off or corrupted. So make sure to accurately
+  plan for the amount of space needed to store all your variables.
 
 tune.zlib.memlevel <number>
   Sets the memLevel parameter in zlib initialization for each session. It
@@ -3765,17 +3771,17 @@ http-request { allow | deny | tarpit | auth [realm 
<realm>] | redirect <rule> |
       Is used to set the contents of a variable. The variable is declared
       inline.
 
-        <var-name> The name of the variable starts by an indication about its
-                   scope. The allowed scopes are:
-                     "sess" : the variable is shared with all the session,
-                     "txn"  : the variable is shared with all the transaction
+        <var-name> The name of the variable starts with an indication about
+                   its scope. The scopes allowed are:
+                     "sess" : the variable is shared with the whole session
+                     "txn"  : the variable is shared with the transaction
                               (request and response)
-                     "req"  : the variable is shared only during the request
+                     "req"  : the variable is shared only during request
+                              processing
+                     "res"  : the variable is shared only during response
                               processing
-                     "res"  : the variable is shared only during the response
-                              processing.
                    This prefix is followed by a name. The separator is a '.'.
-                   The name may only contain characters 'a-z', 'A-Z', '0-9',
+                   The name may only contain characters 'a-z', 'A-Z', '0-9'
                    and '_'.
 
          <expr>    Is a standard HAProxy expression formed by a sample-fetch
@@ -4077,17 +4083,17 @@ http-response { allow | deny | add-header <name> <fmt> 
| set-nice <nice> |
       Is used to set the contents of a variable. The variable is declared
       inline.
 
-        <var-name> The name of the variable starts by an indication about its
-                   scope. The allowed scopes are:
-                     "sess" : the variable is shared with all the session,
-                     "txn"  : the variable is shared with all the transaction
+        <var-name> The name of the variable starts with an indication about
+                   its scope. The scopes allowed are:
+                     "sess" : the variable is shared with the whole session
+                     "txn"  : the variable is shared with the transaction
                               (request and response)
-                     "req"  : the variable is shared only during the request
+                     "req"  : the variable is shared only during request
+                              processing
+                     "res"  : the variable is shared only during response
                               processing
-                     "res"  : the variable is shared only during the response
-                              processing.
                    This prefix is followed by a name. The separator is a '.'.
-                   The name may only contain characters 'a-z', 'A-Z', '0-9',
+                   The name may only contain characters 'a-z', 'A-Z', '0-9'
                    and '_'.
 
          <expr>    Is a standard HAProxy expression formed by a sample-fetch
@@ -8750,17 +8756,18 @@ tcp-request content <action> [{if | unless} <condition>]
   The "set-var" is used to set the content of a variable. The variable is
   declared inline.
 
-    <var-name> The name of the variable starts by an indication about its 
scope.
-               The allowed scopes are:
-                 "sess" : the variable is shared with all the session,
-                 "txn"  : the variable is shared with all the transaction
+    <var-name> The name of the variable starts with an indication about
+               its scope. The scopes allowed are:
+                 "sess" : the variable is shared with the whole session
+                 "txn"  : the variable is shared with the transaction
                           (request and response)
-                 "req"  : the variable is shared only during the request
+                 "req"  : the variable is shared only during request
+                          processing
+                 "res"  : the variable is shared only during response
                           processing
-                 "res"  : the variable is shared only during the response
-                          processing.
                This prefix is followed by a name. The separator is a '.'.
-               The name may only contain characters 'a-z', 'A-Z', '0-9' and 
'_'.
+               The name may only contain characters 'a-z', 'A-Z', '0-9'
+               and '_'.
 
     <expr>     Is a standard HAProxy expression formed by a sample-fetch
                followed by some converters.
@@ -8961,17 +8968,18 @@ tcp-response content <action> [{if | unless} 
<condition>]
   The "set-var" is used to set the content of a variable. The variable is
   declared inline.
 
-    <var-name> The name of the variable starts by an indication about its 
scope.
-               The allowed scopes are:
-                 "sess" : the variable is shared with all the session,
-                 "txn"  : the variable is shared with all the transaction
+    <var-name> The name of the variable starts with an indication about
+               its scope. The scopes allowed are:
+                 "sess" : the variable is shared with the whole session
+                 "txn"  : the variable is shared with the transaction
                           (request and response)
-                 "req"  : the variable is shared only during the request
+                 "req"  : the variable is shared only during request
+                          processing
+                 "res"  : the variable is shared only during response
                           processing
-                 "res"  : the variable is shared only during the response
-                          processing.
                This prefix is followed by a name. The separator is a '.'.
-               The name may only contain characters 'a-z', 'A-Z', '0-9' and 
'_'.
+               The name may only contain characters 'a-z', 'A-Z', '0-9'
+               and '_'.
 
     <expr>     Is a standard HAProxy expression formed by a sample-fetch
                followed by some converters.
@@ -11617,27 +11625,25 @@ The currently available list of transformation 
keywords include :
 add(<value>)
   Adds <value> to the input value of type signed integer, and returns the
   result as a signed integer. <value> can be a numeric value or a variable
-  name. The name of the variable starts by an indication about its scope. The
-  allowed scopes are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
-             response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
-  This prefix is followed by a name. The separator is a '.'. The name may only
+  name. The name of the variable starts with an indication about its scope. The
+  scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and response)
+    "req"  : the variable is shared only during request processing
+    "res"  : the variable is shared only during response processing
+  This prefix is followed by a name. The separator is a '.'.  The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
 and(<value>)
   Performs a bitwise "AND" between <value> and the input value of type signed
   integer, and returns the result as an signed integer. <value> can be a
-  numeric value or a variable name. The name of the variable starts by an
-  indication about its scope. The allowed scopes are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
-             response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
-  This prefix is followed by a name. The separator is a '.'. The name may only
+  numeric value or a variable name. The name of the variable starts with an
+  indication about its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and response)
+    "req"  : the variable is shared only during request processing
+    "res"  : the variable is shared only during response processing
+  This prefix is followed by a name. The separator is a '.'.  The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
 base64
@@ -11696,14 +11702,13 @@ div(<value>)
   Divides the input value of type signed integer by <value>, and returns the
   result as an signed integer. If <value> is null, the largest unsigned
   integer is returned (typically 2^63-1). <value> can be a numeric value or a
-  variable name. The name of the variable starts by an indication about it
-  scope. The scope allowed are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
-             response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
-  This prefix is followed by a name. The separator is a '.'. The name may only
+  variable name. The name of the variable starts with an indication about its
+  scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and response)
+    "req"  : the variable is shared only during request processing
+    "res"  : the variable is shared only during response processing
+  This prefix is followed by a name. The separator is a '.'.  The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
 djb2([<avalanche>])
@@ -11906,13 +11911,12 @@ mod(<value>)
   Divides the input value of type signed integer by <value>, and returns the
   remainder as an signed integer. If <value> is null, then zero is returned.
   <value> can be a numeric value or a variable name. The name of the variable
-  starts by an indication about its scope. The allowed scopes are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
-             response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
-  This prefix is followed by a name. The separator is a '.'. The name may only
+  starts with an indication about its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and response)
+    "req"  : the variable is shared only during request processing
+    "res"  : the variable is shared only during response processing
+  This prefix is followed by a name. The separator is a '.'.  The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
 mul(<value>)
@@ -11920,13 +11924,12 @@ mul(<value>)
   the product as an signed integer. In case of overflow, the largest possible
   value for the sign is returned so that the operation doesn't wrap around.
   <value> can be a numeric value or a variable name. The name of the variable
-  starts by an indication about its scope. The allowed scopes are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
-             response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
-  This prefix is followed by a name. The separator is a '.'. The name may only
+  starts with an indication about its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and response)
+    "req"  : the variable is shared only during request processing
+    "res"  : the variable is shared only during response processing
+  This prefix is followed by a name. The separator is a '.'.  The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
 neg
@@ -11948,14 +11951,13 @@ odd
 or(<value>)
   Performs a bitwise "OR" between <value> and the input value of type signed
   integer, and returns the result as an signed integer. <value> can be a
-  numeric value or a variable name. The name of the variable starts by an
-  indication about its scope. The allowed scopes are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
-             response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
-  This prefix is followed by a name. The separator is a '.'. The name may only
+  numeric value or a variable name. The name of the variable starts with an
+  indication about its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and response)
+    "req"  : the variable is shared only during request processing
+    "res"  : the variable is shared only during response processing
+  This prefix is followed by a name. The separator is a '.'.  The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
 regsub(<regex>,<subst>[,<flags>])
@@ -12008,14 +12010,14 @@ sdbm([<avalanche>])
   "hash-type" directive.
 
 set-var(<var name>)
-  Sets a variable with the input content and return the content on the output 
as
-  is. The variable keep the value and the associated input type. The name of 
the
-  variable starts by an indication about it scope. The scope allowed are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
+  Sets a variable with the input content and returns the content on the output 
as
+  is. The variable keeps the value and the associated input type. The name of 
the
+  variable starts with an indication about its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and
              response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
+    "req"  : the variable is shared only during request processing,
+    "res"  : the variable is shared only during response processing.
   This prefix is followed by a name. The separator is a '.'. The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
@@ -12023,13 +12025,13 @@ sub(<value>)
   Subtracts <value> from the input value of type signed integer, and returns
   the result as an signed integer. Note: in order to subtract the input from
   a constant, simply perform a "neg,add(value)". <value> can be a numeric value
-  or a variable name. The name of the variable starts by an indication about 
its
-  scope. The allowed scopes are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
+  or a variable name. The name of the variable starts with an indication about
+  its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and
              response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
+    "req"  : the variable is shared only during request processing,
+    "res"  : the variable is shared only during response processing.
   This prefix is followed by a name. The separator is a '.'. The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
@@ -12221,12 +12223,12 @@ xor(<value>)
   Performs a bitwise "XOR" (exclusive OR) between <value> and the input value
   of type signed integer, and returns the result as an signed integer.
   <value> can be a numeric value or a variable name. The name of the variable
-  starts by an indication about its scope. The allowed scopes are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
+  starts with an indication about its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and
              response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
+    "req"  : the variable is shared only during request processing,
+    "res"  : the variable is shared only during response processing.
   This prefix is followed by a name. The separator is a '.'. The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
@@ -12478,17 +12480,16 @@ table_cnt([<table>]) : integer
 
 var(<var-name>) : undefined
   Returns a variable with the stored type. If the variable is not set, the
-  sample fetch fails. The name of the variable starts by an indication about 
its
-  scope. The scope allowed are:
-    "sess" : the variable is shared with all the session,
-    "txn"  : the variable is shared with all the transaction (request and
+  sample fetch fails. The name of the variable starts with an indication
+  about its scope. The scopes allowed are:
+    "sess" : the variable is shared with the whole session
+    "txn"  : the variable is shared with the transaction (request and
              response),
-    "req"  : the variable is shared only during the request processing,
-    "res"  : the variable is shared only during the response processing.
+    "req"  : the variable is shared only during request processing,
+    "res"  : the variable is shared only during response processing.
   This prefix is followed by a name. The separator is a '.'. The name may only
   contain characters 'a-z', 'A-Z', '0-9' and '_'.
 
-
 7.3.3. Fetching samples at Layer 4
 ----------------------------------
 
-- 
2.7.1


-- 
Daniel Schneller
d...@danielschneller.com
Twitter: @dschneller
http://www.danielschneller.com - Java, iOS, Mac, Windows, Linux and other 
insanities.


Reply via email to