]> err.no Git - varnish/commitdiff
Get shmlog records into more sensible order.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 18 Sep 2006 07:08:32 +0000 (07:08 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 18 Sep 2006 07:08:32 +0000 (07:08 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1058 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache.h
varnish-cache/bin/varnishd/cache_backend.c
varnish-cache/bin/varnishd/cache_center.c
varnish-cache/bin/varnishd/cache_expire.c
varnish-cache/bin/varnishd/cache_fetch.c
varnish-cache/bin/varnishd/cache_pass.c
varnish-cache/bin/varnishd/cache_pipe.c
varnish-cache/bin/varnishd/cache_response.c
varnish-cache/bin/varnishd/cache_vcl.c
varnish-cache/bin/varnishd/rfc2616.c

index e791f0b18dce08b041947084afef09e234a2329a..65d00b50036ee0f5351524d09c24fbe21b573180 100644 (file)
@@ -298,8 +298,8 @@ void VCA_Init(void);
 /* cache_backend.c */
 void VBE_Init(void);
 struct vbe_conn *VBE_GetFd(struct sess *sp);
-void VBE_ClosedFd(struct vbe_conn *vc, int already);
-void VBE_RecycleFd(struct vbe_conn *vc);
+void VBE_ClosedFd(struct worker *w, struct vbe_conn *vc, int already);
+void VBE_RecycleFd(struct worker *w, struct vbe_conn *vc);
 
 /* cache_ban.c */
 void BAN_Init(void);
@@ -367,7 +367,7 @@ int PassSession(struct sess *sp);
 void PassBody(struct sess *sp);
 
 /* cache_pipe.c */
-int PipeSession(struct sess *sp);
+void PipeSession(struct sess *sp);
 
 /* cache_pool.c */
 void WRK_Init(void);
index 4a584c5a21ded0938e5c1a72337cd826f7bfc26f..7ec02e598e01c4bdfee88b8ae34d4f813ab515cc 100644 (file)
@@ -146,7 +146,7 @@ vbe_conn_try(struct backend *bp, struct addrinfo **pai)
 }
 
 static int
-vbe_connect(struct backend *bp)
+vbe_connect(struct sess *sp, struct backend *bp)
 {
        int s;
        char abuf1[TCP_ADDRBUFSIZE], abuf2[TCP_ADDRBUFSIZE];
@@ -163,7 +163,7 @@ vbe_connect(struct backend *bp)
        TCP_myname(s, abuf1, sizeof abuf1, pbuf1, sizeof pbuf1);
        TCP_name(ai->ai_addr, ai->ai_addrlen,
            abuf2, sizeof abuf2, pbuf2, sizeof pbuf2);
-       VSL(SLT_BackendOpen, s, "%s %s %s %s %s",
+       WSL(sp->wrk, SLT_BackendOpen, s, "%s %s %s %s %s",
            bp->vcl_name, abuf1, pbuf1, abuf2, pbuf2);
        return (s);
 }
@@ -214,7 +214,7 @@ vbe_nextfd(struct sess *sp)
                pfd.revents = 0;
                if (!poll(&pfd, 1, 0))
                        break;
-               VBE_ClosedFd(vc, 0);
+               VBE_ClosedFd(sp->wrk, vc, 0);
        }
 
        if (vc == NULL) {
@@ -230,7 +230,7 @@ vbe_nextfd(struct sess *sp)
        /* If not connected yet, do so */
        if (vc->fd < 0) {
                AZ(vc->backend);
-               vc->fd = vbe_connect(bp);
+               vc->fd = vbe_connect(sp, bp);
                LOCK(&vbemtx);
                if (vc->fd < 0) {
                        vc->backend = NULL;
@@ -274,13 +274,13 @@ VBE_GetFd(struct sess *sp)
 /* Close a connection ------------------------------------------------*/
 
 void
-VBE_ClosedFd(struct vbe_conn *vc, int already)
+VBE_ClosedFd(struct worker *w, struct vbe_conn *vc, int already)
 {
 
        CHECK_OBJ_NOTNULL(vc, VBE_CONN_MAGIC);
        assert(vc->fd >= 0);
        AN(vc->backend);
-       VSL(SLT_BackendClose, vc->fd, "%s", vc->backend->vcl_name);
+       WSL(w, SLT_BackendClose, vc->fd, "%s", vc->backend->vcl_name);
        if (!already)
                AZ(close(vc->fd));
        vc->fd = -1;
@@ -294,14 +294,14 @@ VBE_ClosedFd(struct vbe_conn *vc, int already)
 /* Recycle a connection ----------------------------------------------*/
 
 void
-VBE_RecycleFd(struct vbe_conn *vc)
+VBE_RecycleFd(struct worker *w, struct vbe_conn *vc)
 {
 
        CHECK_OBJ_NOTNULL(vc, VBE_CONN_MAGIC);
        assert(vc->fd >= 0);
        AN(vc->backend);
        VSL_stats->backend_recycle++;
-       VSL(SLT_BackendReuse, vc->fd, "%s", vc->backend->vcl_name);
+       WSL(w, SLT_BackendReuse, vc->fd, "%s", vc->backend->vcl_name);
        LOCK(&vbemtx);
        TAILQ_INSERT_HEAD(&vc->backend->connlist, vc, list);
        UNLOCK(&vbemtx);
index 4c4116599b8d5b7f016106b4a3600351f57e73df..d19e879e5da59bf04c63765aa9ea8baff867a6e9 100644 (file)
@@ -126,8 +126,6 @@ cnt_done(struct sess *sp)
 
        AZ(sp->obj);
        AZ(sp->vbc);
-       if (sp->fd >= 0 && sp->doclose != NULL)
-               vca_close_session(sp, sp->doclose);
        sp->backend = NULL;
        if (sp->vcl != NULL) {
                if (sp->wrk->vcl != NULL)
@@ -153,6 +151,9 @@ cnt_done(struct sess *sp)
        sp->xid = 0;
        sp->t_open = sp->t_end;
        SES_Charge(sp);
+       WSL_Flush(sp->wrk);
+       if (sp->fd >= 0 && sp->doclose != NULL)
+               vca_close_session(sp, sp->doclose);
        if (sp->fd < 0) {
                VSL_stats->sess_closed++;
                sp->wrk->idle = sp->t_open.tv_sec;
@@ -620,7 +621,7 @@ cnt_pipe(struct sess *sp)
 {
 
        sp->wrk->acct.pipe++;
-       (void)PipeSession(sp);
+       PipeSession(sp);
        sp->step = STP_DONE;
        return (0);
 }
index 72247ee5d3d5510e15e72a135709425fb08f57b3..ea874a4b339af5065c0c3d1fc4c66553a54f7ea0 100644 (file)
@@ -103,6 +103,7 @@ exp_hangman(void *arg)
 static void *
 exp_prefetch(void *arg)
 {
+       struct worker ww;
        struct object *o;
        time_t t;
        struct sess *sp;
@@ -112,6 +113,11 @@ exp_prefetch(void *arg)
 
        sp = SES_New(NULL, 0);
        XXXAN(sp);
+       sp->wrk = &ww;
+       ww.magic = WORKER_MAGIC;
+       ww.wlp = ww.wlog;
+       ww.wle = ww.wlog + sizeof ww.wlog;
+
        sleep(10);              /* Takes time for VCL to arrive */
        VCL_Get(&sp->vcl);
        t = time(NULL);
@@ -122,9 +128,8 @@ exp_prefetch(void *arg)
                        CHECK_OBJ(o, OBJECT_MAGIC);
                if (o == NULL || o->ttl > t + expearly) {
                        UNLOCK(&exp_mtx);
-                       VCL_Rel(&sp->vcl);
                        AZ(sleep(1));
-                       VCL_Get(&sp->vcl);
+                       VCL_Refresh(&sp->vcl);
                        t = time(NULL);
                        continue;
                }
@@ -136,7 +141,7 @@ exp_prefetch(void *arg)
                        assert(o2->ttl >= o->ttl);
 
                UNLOCK(&exp_mtx);
-               VSL(SLT_ExpPick, 0, "%u", o->xid);
+               WSL(&ww, SLT_ExpPick, 0, "%u", o->xid);
 
                sp->obj = o;
                VCL_timeout_method(sp);
index ed417f7a19d79a546f1b40b8fdc5f8e4a29d92ff..2b167924be3fc631099f50007d0be230e9412d2b 100644 (file)
@@ -265,9 +265,9 @@ FetchBody(struct sess *sp)
                cls = 1;
 
        if (cls)
-               VBE_ClosedFd(vc, 0);
+               VBE_ClosedFd(sp->wrk, vc, 0);
        else
-               VBE_RecycleFd(vc);
+               VBE_RecycleFd(sp->wrk, vc);
 
        return (0);
 }
index 589c1980a01e6af98f7b6d89fa329b78bf08ef23..c8161388648ff2c2eeb4bad950e4adf5021eb512 100644 (file)
@@ -183,9 +183,9 @@ PassBody(struct sess *sp)
                cls = 1;
 
        if (cls)
-               VBE_ClosedFd(vc, 0);
+               VBE_ClosedFd(sp->wrk, vc, 0);
        else
-               VBE_RecycleFd(vc);
+               VBE_RecycleFd(sp->wrk, vc);
 }
 
 
index e1747a1d8a2c180ff2063dfade4614cff84267ec..588e2016d8910f8ac9045d018e537550baef2f03 100644 (file)
@@ -40,7 +40,7 @@ rdf(struct pollfd *fds, int idx)
        }
 }
 
-int
+void
 PipeSession(struct sess *sp)
 {
        struct vbe_conn *vc;
@@ -55,7 +55,7 @@ PipeSession(struct sess *sp)
 
        vc = VBE_GetFd(sp);
        if (vc == NULL)
-               return (1);
+               return;
        vc->http->logtag = HTTP_Tx;
 
        http_CopyReq(w, vc->fd, vc->http, sp->http);
@@ -69,7 +69,7 @@ PipeSession(struct sess *sp)
 
        if (WRK_Flush(w)) {
                vca_close_session(sp, "pipe");
-               VBE_ClosedFd(vc, 0);
+               VBE_ClosedFd(sp->wrk, vc, 0);
                return;
        }
 
@@ -94,5 +94,5 @@ PipeSession(struct sess *sp)
        }
        vca_close_session(sp, "pipe");
        (void)close (vc->fd);
-       VBE_ClosedFd(vc, 1);
+       VBE_ClosedFd(sp->wrk, vc, 1);
 }
index c9244731bb8103b4ca6efda2eac32584777d4c7a..3ec8b1c4646b79b43cdb5b3d262816fec6cc767b 100644 (file)
@@ -143,7 +143,8 @@ res_do_304(struct sess *sp)
 
        http_ClrHeader(sp->http);
        sp->http->logtag = HTTP_Tx;
-       http_SetResp(sp->wrk, sp->fd, sp->http, "HTTP/1.1", "304", "Not Modified");
+       http_SetResp(sp->wrk, sp->fd, sp->http,
+           "HTTP/1.1", "304", NULL);
        TIM_format(sp->t_req.tv_sec, lm);
        http_PrintfHeader(sp->wrk, sp->fd, sp->http, "Date: %s", lm);
        http_SetHeader(sp->wrk, sp->fd, sp->http, "Via: 1.1 varnish");
index 32d6e45c4ce41bc7eed0dbcbbb8c625fa63c502a..f8c17d1ca307e9c0322f141f76817f116c9ee111 100644 (file)
@@ -278,9 +278,9 @@ VCL_##func##_method(struct sess *sp)                                        \
 {                                                                      \
                                                                        \
        sp->handling = 0;                                               \
-       VSL(SLT_VCL_call, sp->fd, "%s", #func);                 \
+       WSL(sp->wrk, SLT_VCL_call, sp->fd, "%s", #func);                \
        sp->vcl->func##_func(sp);                                       \
-       VSL(SLT_VCL_return, sp->fd, "%s",                       \
+       WSL(sp->wrk, SLT_VCL_return, sp->fd, "%s",                      \
             vcl_handlingname(sp->handling));                           \
        assert(sp->handling & bitmap);                                  \
        assert(!(sp->handling & ~bitmap));                              \
index 2c74b1a981ee0ba43e60341b2d0979b9824bc2e6..982488936e3421228a11465875c90198693dcf6c 100644 (file)
@@ -117,7 +117,7 @@ RFC2616_Ttl(struct sess *sp, struct http *hp, struct object *obj)
        }
 
        /* calculated TTL, Our time, Date, Expires, max-age, age */
-       VSL(SLT_TTL, sp->fd, "%u RFC %d %d %d %d %d %d", sp->xid,
+       WSL(sp->wrk, SLT_TTL, sp->fd, "%u RFC %d %d %d %d %d %d", sp->xid,
            (int)(ttd - obj->entered), (int)obj->entered, (int)h_date,
            (int)h_expires, (int)u1, (int)u2);