From fd6f882470943a8e9611c45db6ed09b029bb0255 Mon Sep 17 00:00:00 2001 From: phk Date: Mon, 18 Sep 2006 07:08:32 +0000 Subject: [PATCH] Get shmlog records into more sensible order. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1058 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/bin/varnishd/cache.h | 6 +++--- varnish-cache/bin/varnishd/cache_backend.c | 16 ++++++++-------- varnish-cache/bin/varnishd/cache_center.c | 7 ++++--- varnish-cache/bin/varnishd/cache_expire.c | 11 ++++++++--- varnish-cache/bin/varnishd/cache_fetch.c | 4 ++-- varnish-cache/bin/varnishd/cache_pass.c | 4 ++-- varnish-cache/bin/varnishd/cache_pipe.c | 8 ++++---- varnish-cache/bin/varnishd/cache_response.c | 3 ++- varnish-cache/bin/varnishd/cache_vcl.c | 4 ++-- varnish-cache/bin/varnishd/rfc2616.c | 2 +- 10 files changed, 36 insertions(+), 29 deletions(-) diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index e791f0b1..65d00b50 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -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); diff --git a/varnish-cache/bin/varnishd/cache_backend.c b/varnish-cache/bin/varnishd/cache_backend.c index 4a584c5a..7ec02e59 100644 --- a/varnish-cache/bin/varnishd/cache_backend.c +++ b/varnish-cache/bin/varnishd/cache_backend.c @@ -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); diff --git a/varnish-cache/bin/varnishd/cache_center.c b/varnish-cache/bin/varnishd/cache_center.c index 4c411659..d19e879e 100644 --- a/varnish-cache/bin/varnishd/cache_center.c +++ b/varnish-cache/bin/varnishd/cache_center.c @@ -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); } diff --git a/varnish-cache/bin/varnishd/cache_expire.c b/varnish-cache/bin/varnishd/cache_expire.c index 72247ee5..ea874a4b 100644 --- a/varnish-cache/bin/varnishd/cache_expire.c +++ b/varnish-cache/bin/varnishd/cache_expire.c @@ -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); diff --git a/varnish-cache/bin/varnishd/cache_fetch.c b/varnish-cache/bin/varnishd/cache_fetch.c index ed417f7a..2b167924 100644 --- a/varnish-cache/bin/varnishd/cache_fetch.c +++ b/varnish-cache/bin/varnishd/cache_fetch.c @@ -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); } diff --git a/varnish-cache/bin/varnishd/cache_pass.c b/varnish-cache/bin/varnishd/cache_pass.c index 589c1980..c8161388 100644 --- a/varnish-cache/bin/varnishd/cache_pass.c +++ b/varnish-cache/bin/varnishd/cache_pass.c @@ -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); } diff --git a/varnish-cache/bin/varnishd/cache_pipe.c b/varnish-cache/bin/varnishd/cache_pipe.c index e1747a1d..588e2016 100644 --- a/varnish-cache/bin/varnishd/cache_pipe.c +++ b/varnish-cache/bin/varnishd/cache_pipe.c @@ -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); } diff --git a/varnish-cache/bin/varnishd/cache_response.c b/varnish-cache/bin/varnishd/cache_response.c index c9244731..3ec8b1c4 100644 --- a/varnish-cache/bin/varnishd/cache_response.c +++ b/varnish-cache/bin/varnishd/cache_response.c @@ -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"); diff --git a/varnish-cache/bin/varnishd/cache_vcl.c b/varnish-cache/bin/varnishd/cache_vcl.c index 32d6e45c..f8c17d1c 100644 --- a/varnish-cache/bin/varnishd/cache_vcl.c +++ b/varnish-cache/bin/varnishd/cache_vcl.c @@ -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)); \ diff --git a/varnish-cache/bin/varnishd/rfc2616.c b/varnish-cache/bin/varnishd/rfc2616.c index 2c74b1a9..98248893 100644 --- a/varnish-cache/bin/varnishd/rfc2616.c +++ b/varnish-cache/bin/varnishd/rfc2616.c @@ -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); -- 2.39.5