Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
U
unique-xids
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
unique-xids
Commits
d98dee20
Commit
d98dee20
authored
Feb 14, 2012
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Give busyobj its own VSL staging buffer too.
parent
b7620169
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
40 additions
and
23 deletions
+40
-23
cache.h
bin/varnishd/cache/cache.h
+2
-2
cache_busyobj.c
bin/varnishd/cache/cache_busyobj.c
+31
-19
cache_center.c
bin/varnishd/cache/cache_center.c
+3
-1
cache_fetch.c
bin/varnishd/cache/cache_fetch.c
+2
-0
cache_hash.c
bin/varnishd/cache/cache_hash.c
+1
-0
r01038.vtc
bin/varnishtest/tests/r01038.vtc
+1
-1
No files found.
bin/varnishd/cache/cache.h
View file @
d98dee20
...
@@ -451,8 +451,6 @@ oc_getlru(const struct objcore *oc)
...
@@ -451,8 +451,6 @@ oc_getlru(const struct objcore *oc)
*
*
* One of these aspects will be how much has been fetched, which
* One of these aspects will be how much has been fetched, which
* streaming delivery will make use of.
* streaming delivery will make use of.
*
* XXX: many fields from worker needs to move here.
*/
*/
struct
busyobj
{
struct
busyobj
{
...
@@ -493,6 +491,8 @@ struct busyobj {
...
@@ -493,6 +491,8 @@ struct busyobj {
double
connect_timeout
;
double
connect_timeout
;
double
first_byte_timeout
;
double
first_byte_timeout
;
double
between_bytes_timeout
;
double
between_bytes_timeout
;
struct
vsl_log
vsl
[
1
];
};
};
/* Object structure --------------------------------------------------*/
/* Object structure --------------------------------------------------*/
...
...
bin/varnishd/cache/cache_busyobj.c
View file @
d98dee20
...
@@ -98,14 +98,11 @@ VBO_GetBusyObj(struct worker *wrk)
...
@@ -98,14 +98,11 @@ VBO_GetBusyObj(struct worker *wrk)
{
{
struct
vbo
*
vbo
=
NULL
;
struct
vbo
*
vbo
=
NULL
;
uint16_t
nhttp
;
uint16_t
nhttp
;
unsigned
http
sz
;
unsigned
sz
;
char
*
p
;
char
*
p
;
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
CHECK_OBJ_NOTNULL
(
wrk
,
WORKER_MAGIC
);
nhttp
=
(
uint16_t
)
cache_param
->
http_max_hdr
;
httpsz
=
HTTP_estimate
(
nhttp
);
if
(
wrk
->
nvbo
!=
NULL
)
{
if
(
wrk
->
nvbo
!=
NULL
)
{
vbo
=
wrk
->
nvbo
;
vbo
=
wrk
->
nvbo
;
wrk
->
nvbo
=
NULL
;
wrk
->
nvbo
=
NULL
;
...
@@ -123,15 +120,28 @@ VBO_GetBusyObj(struct worker *wrk)
...
@@ -123,15 +120,28 @@ VBO_GetBusyObj(struct worker *wrk)
vbo
->
bo
.
vbo
=
vbo
;
vbo
->
bo
.
vbo
=
vbo
;
p
=
(
void
*
)(
vbo
+
1
);
p
=
(
void
*
)(
vbo
+
1
);
p
=
(
void
*
)
PRNDUP
(
p
);
assert
(
p
<
vbo
->
end
);
nhttp
=
(
uint16_t
)
cache_param
->
http_max_hdr
;
sz
=
HTTP_estimate
(
nhttp
);
vbo
->
bo
.
bereq
=
HTTP_create
(
p
,
nhttp
);
vbo
->
bo
.
bereq
=
HTTP_create
(
p
,
nhttp
);
p
+=
httpsz
;
p
+=
sz
;
p
=
(
void
*
)
PRNDUP
(
p
);
assert
(
p
<
vbo
->
end
);
vbo
->
bo
.
beresp
=
HTTP_create
(
p
,
nhttp
);
vbo
->
bo
.
beresp
=
HTTP_create
(
p
,
nhttp
);
p
+=
httpsz
;
p
+=
sz
;
if
(
p
>=
vbo
->
end
)
{
p
=
(
void
*
)
PRNDUP
(
p
);
fprintf
(
stderr
,
"workspace_backend is at least %jd to small
\n
"
,
assert
(
p
<
vbo
->
end
);
(
p
-
vbo
->
end
));
assert
(
p
<
vbo
->
end
);
sz
=
cache_param
->
vsl_buffer
;
}
VSL_Setup
(
vbo
->
bo
.
vsl
,
p
,
sz
);
p
+=
sz
;
p
=
(
void
*
)
PRNDUP
(
p
);
assert
(
p
<
vbo
->
end
);
WS_Init
(
vbo
->
bo
.
ws
,
"bo"
,
p
,
vbo
->
end
-
p
);
WS_Init
(
vbo
->
bo
.
ws
,
"bo"
,
p
,
vbo
->
end
-
p
);
return
(
&
vbo
->
bo
);
return
(
&
vbo
->
bo
);
...
@@ -170,13 +180,15 @@ VBO_DerefBusyObj(struct worker *wrk, struct busyobj **pbo)
...
@@ -170,13 +180,15 @@ VBO_DerefBusyObj(struct worker *wrk, struct busyobj **pbo)
r
=
--
vbo
->
refcount
;
r
=
--
vbo
->
refcount
;
Lck_Unlock
(
&
vbo
->
mtx
);
Lck_Unlock
(
&
vbo
->
mtx
);
if
(
r
==
0
)
{
if
(
r
)
/* XXX: Sanity checks & cleanup */
return
;
memset
(
&
vbo
->
bo
,
0
,
sizeof
vbo
->
bo
);
if
(
cache_param
->
bo_cache
&&
wrk
->
nvbo
==
NULL
)
WSL_Flush
(
vbo
->
bo
.
vsl
,
0
);
wrk
->
nvbo
=
vbo
;
/* XXX: Sanity checks & cleanup */
else
memset
(
&
vbo
->
bo
,
0
,
sizeof
vbo
->
bo
);
VBO_Free
(
&
vbo
);
}
if
(
cache_param
->
bo_cache
&&
wrk
->
nvbo
==
NULL
)
wrk
->
nvbo
=
vbo
;
else
VBO_Free
(
&
vbo
);
}
}
bin/varnishd/cache/cache_center.c
View file @
d98dee20
...
@@ -480,6 +480,7 @@ cnt_error(struct sess *sp, struct worker *wrk, struct req *req)
...
@@ -480,6 +480,7 @@ cnt_error(struct sess *sp, struct worker *wrk, struct req *req)
AZ
(
wrk
->
busyobj
);
AZ
(
wrk
->
busyobj
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
->
vsl
->
wid
=
sp
->
vsl_id
;
req
->
obj
=
STV_NewObject
(
wrk
,
TRANSIENT_STORAGE
,
req
->
obj
=
STV_NewObject
(
wrk
,
TRANSIENT_STORAGE
,
cache_param
->
http_resp_size
,
cache_param
->
http_resp_size
,
(
uint16_t
)
cache_param
->
http_max_hdr
);
(
uint16_t
)
cache_param
->
http_max_hdr
);
...
@@ -1222,7 +1223,6 @@ cnt_miss(struct sess *sp, struct worker *wrk, struct req *req)
...
@@ -1222,7 +1223,6 @@ cnt_miss(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL
(
wrk
->
busyobj
,
BUSYOBJ_MAGIC
);
CHECK_OBJ_NOTNULL
(
wrk
->
busyobj
,
BUSYOBJ_MAGIC
);
AZ
(
req
->
obj
);
AZ
(
req
->
obj
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
http_Setup
(
wrk
->
busyobj
->
bereq
,
wrk
->
busyobj
->
ws
);
http_Setup
(
wrk
->
busyobj
->
bereq
,
wrk
->
busyobj
->
ws
);
http_FilterReq
(
sp
,
HTTPH_R_FETCH
);
http_FilterReq
(
sp
,
HTTPH_R_FETCH
);
http_ForceGet
(
wrk
->
busyobj
->
bereq
);
http_ForceGet
(
wrk
->
busyobj
->
bereq
);
...
@@ -1297,6 +1297,7 @@ cnt_pass(struct sess *sp, struct worker *wrk, const struct req *req)
...
@@ -1297,6 +1297,7 @@ cnt_pass(struct sess *sp, struct worker *wrk, const struct req *req)
AZ
(
wrk
->
busyobj
);
AZ
(
wrk
->
busyobj
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
->
vsl
->
wid
=
sp
->
vsl_id
;
http_Setup
(
wrk
->
busyobj
->
bereq
,
wrk
->
busyobj
->
ws
);
http_Setup
(
wrk
->
busyobj
->
bereq
,
wrk
->
busyobj
->
ws
);
http_FilterReq
(
sp
,
HTTPH_R_PASS
);
http_FilterReq
(
sp
,
HTTPH_R_PASS
);
...
@@ -1351,6 +1352,7 @@ cnt_pipe(struct sess *sp, struct worker *wrk, const struct req *req)
...
@@ -1351,6 +1352,7 @@ cnt_pipe(struct sess *sp, struct worker *wrk, const struct req *req)
wrk
->
acct_tmp
.
pipe
++
;
wrk
->
acct_tmp
.
pipe
++
;
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
->
vsl
->
wid
=
sp
->
vsl_id
;
http_Setup
(
wrk
->
busyobj
->
bereq
,
wrk
->
busyobj
->
ws
);
http_Setup
(
wrk
->
busyobj
->
bereq
,
wrk
->
busyobj
->
ws
);
http_FilterReq
(
sp
,
0
);
http_FilterReq
(
sp
,
0
);
...
...
bin/varnishd/cache/cache_fetch.c
View file @
d98dee20
...
@@ -416,6 +416,8 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
...
@@ -416,6 +416,8 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
if
(
vc
->
recycled
)
if
(
vc
->
recycled
)
retry
=
1
;
retry
=
1
;
sp
->
wrk
->
busyobj
->
vsl
->
wid
=
vc
->
vsl_id
;
/*
/*
* Now that we know our backend, we can set a default Host:
* Now that we know our backend, we can set a default Host:
* header if one is necessary. This cannot be done in the VCL
* header if one is necessary. This cannot be done in the VCL
...
...
bin/varnishd/cache/cache_hash.c
View file @
d98dee20
...
@@ -453,6 +453,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
...
@@ -453,6 +453,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
AZ
(
wrk
->
busyobj
);
AZ
(
wrk
->
busyobj
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
=
VBO_GetBusyObj
(
wrk
);
wrk
->
busyobj
->
vsl
->
wid
=
sp
->
vsl_id
;
VRY_Validate
(
sp
->
req
->
vary_b
);
VRY_Validate
(
sp
->
req
->
vary_b
);
if
(
sp
->
req
->
vary_l
!=
NULL
)
if
(
sp
->
req
->
vary_l
!=
NULL
)
...
...
bin/varnishtest/tests/r01038.vtc
View file @
d98dee20
...
@@ -45,7 +45,7 @@ server s1 {
...
@@ -45,7 +45,7 @@ server s1 {
txresp -body "foo8"
txresp -body "foo8"
} -start
} -start
varnish v1 -arg "-p workspace_backend=
3072
" -vcl+backend {
varnish v1 -arg "-p workspace_backend=
7k
" -vcl+backend {
sub vcl_fetch {
sub vcl_fetch {
set beresp.do_esi = true;
set beresp.do_esi = true;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment