]> err.no Git - varnish/commitdiff
Make the number of restarts a parameter.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 30 Sep 2007 21:11:21 +0000 (21:11 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sun, 30 Sep 2007 21:11:21 +0000 (21:11 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2068 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache_center.c
varnish-cache/bin/varnishd/heritage.h
varnish-cache/bin/varnishd/mgt_param.c

index ac773a07627f2efd532aebfdd7f39375dba84238..fd5f4e90b454aed307d760137ca4ea3029da95d7 100644 (file)
@@ -69,6 +69,7 @@ DOT start -> recv [style=bold,color=green,weight=4]
 
 #include "shmlog.h"
 #include "vcl.h"
+#include "heritage.h"
 #include "cache.h"
 
 static unsigned xids;
@@ -707,6 +708,10 @@ cnt_recv(struct sess *sp)
 
        AZ(sp->obj);
 
+       if (sp->restarts > params->max_restarts) {
+               sp->step = STP_ERROR;
+               return (0);
+       }
        if (sp->restarts == 0) {
                AZ(sp->vcl);
                /* Update stats of various sorts */
index 866d401752a559b197172e0295238b73604d1d67..7c0c3436b7c4a5c925a6933a145946708267e9cc 100644 (file)
@@ -125,6 +125,9 @@ struct params {
        /* LRU list ordering interval */
        unsigned                lru_timeout;
 
+       /* Maximum restarts allowed */
+       unsigned                max_restarts;
+
 };
 
 extern volatile struct params *params;
index fa8d9ff737ea4e63c74bde4c13b38a652cab776c..9247e38dd56e2bffb8dd782327a9af9308e2df2e 100644 (file)
@@ -555,6 +555,14 @@ tweak_cc_command(struct cli *cli, struct parspec *par, const char *arg)
        }
 }
 
+static void
+tweak_max_restarts(struct cli *cli, struct parspec *par, const char *arg)
+{
+
+       (void)par;
+       tweak_generic_uint(cli, &master.max_restarts, arg, 0, UINT_MAX);
+}
+
 /*--------------------------------------------------------------------*/
 
 /*
@@ -760,6 +768,14 @@ static struct parspec parspec[] = {
                "exec cc -nostdinc -fpic -shared -Wl,-x -o %s -x c - < %s"
 #endif
                , NULL },
+       { "max_restarts", tweak_max_restarts,
+               "Upper limit on how many times a request can restart."
+#ifdef NOT_YET
+               "  ESI:include counts as a restart in this context."
+#endif
+               "\nBe aware that restarts are likely to cause a hit against "
+               "the backend, so don't increase thoughtlessly.\n",
+               "4", "restarts" },
        { NULL, NULL, NULL }
 };