[master] 344d09ce2 Shard director: add documentation from 9b8f6e21809bf867eb5bd792331484d0e70eb367
Nils Goroll
nils.goroll at uplex.de
Tue Jun 26 08:42:10 UTC 2018
commit 344d09ce2f614416199389061b3de2a28ed4e4ab
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Tue Jun 26 10:16:32 2018 +0200
Shard director: add documentation from 9b8f6e21809bf867eb5bd792331484d0e70eb367
diff --git a/lib/libvmod_directors/vmod_shard.c b/lib/libvmod_directors/vmod_shard.c
index db277268a..5e03f8a27 100644
--- a/lib/libvmod_directors/vmod_shard.c
+++ b/lib/libvmod_directors/vmod_shard.c
@@ -41,6 +41,44 @@
#include "shard_dir.h"
#include "shard_cfg.h"
+/* -------------------------------------------------------------------------
+ * shard director: LAZY mode (vdi resolve function), parameter objects
+ *
+ * By associating a parameter object with a shard director, we enable LAZY
+ * lookups as with the other directors. Parameter objects are defined with VCL
+ * scope (normal vmod objects), but can be overridden per backend request using
+ * a task priv.
+ *
+ * We use the same concept to carry shard.backend() parameters to vdi resolve
+ * for LAZY mode: They get saved in a per-director task scope parameter object.
+ *
+ * Each object points to another object providing defaults for values which are
+ * not defined.
+ *
+ * Actual resolution of the various parameter objects does not happen before
+ * they are used, which enabled changing them independently (ie, shard
+ * .backend() parameters have precedence over an associated parameter object,
+ * which by itself can be overridden).
+ *
+ * Overview of parameter objects (pointers are alternatives)
+ *
+ * shard() director shard_param() object default praram
+ *
+ * ---------------------------------> vmod static
+ * VCL obj / ->
+ * .param -+---------> VCL obj / _
+ * .default -------- /|
+ * /
+ * ^ /
+ * | /
+ * /
+ * .default /
+ * -------------> TASK priv /
+ * / /
+ * .default -----------------------------
+ * TASK priv
+ */
+
/* -------------------------------------------------------------------------
* method arguments and set parameters bitmask in vmod_directors_shard_param
*/
More information about the varnish-commit
mailing list