Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
295e99af
Commit
295e99af
authored
Dec 12, 2013
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change "GONE" bans to "COMPLETED" bans.
parent
d7942b7e
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
41 additions
and
40 deletions
+41
-40
cache_ban.c
bin/varnishd/cache/cache_ban.c
+27
-26
c00049.vtc
bin/varnishtest/tests/c00049.vtc
+4
-4
p00009.vtc
bin/varnishtest/tests/p00009.vtc
+4
-4
r01266.vtc
bin/varnishtest/tests/r01266.vtc
+3
-3
vsc_f_main.h
include/tbl/vsc_f_main.h
+3
-3
No files found.
bin/varnishd/cache/cache_ban.c
View file @
295e99af
...
@@ -41,7 +41,7 @@
...
@@ -41,7 +41,7 @@
* Bans are compiled into bytestrings as follows:
* Bans are compiled into bytestrings as follows:
* 8 bytes - double: timestamp XXX: Byteorder ?
* 8 bytes - double: timestamp XXX: Byteorder ?
* 4 bytes - be32: length
* 4 bytes - be32: length
* 1 byte - flags: 0x01: BAN_F_{REQ|OBJ|
GONE
}
* 1 byte - flags: 0x01: BAN_F_{REQ|OBJ|
COMPLETED
}
* N tests
* N tests
* A test have this form:
* A test have this form:
* 1 byte - arg (see ban_vars.h col 3 "BANS_ARG_XXX")
* 1 byte - arg (see ban_vars.h col 3 "BANS_ARG_XXX")
...
@@ -88,7 +88,7 @@
...
@@ -88,7 +88,7 @@
#define BANS_FLAG_REQ (1<<0)
#define BANS_FLAG_REQ (1<<0)
#define BANS_FLAG_OBJ (1<<1)
#define BANS_FLAG_OBJ (1<<1)
#define BANS_FLAG_
GONE
(1<<2)
#define BANS_FLAG_
COMPLETED
(1<<2)
#define BANS_FLAG_HTTP (1<<3)
#define BANS_FLAG_HTTP (1<<3)
#define BANS_FLAG_ERROR (1<<4)
#define BANS_FLAG_ERROR (1<<4)
...
@@ -268,7 +268,7 @@ ban_equal(const uint8_t *bs1, const uint8_t *bs2)
...
@@ -268,7 +268,7 @@ ban_equal(const uint8_t *bs1, const uint8_t *bs2)
}
}
static
void
static
void
ban_mark_
gone
(
struct
ban
*
b
)
ban_mark_
completed
(
struct
ban
*
b
)
{
{
unsigned
ln
;
unsigned
ln
;
...
@@ -276,13 +276,13 @@ ban_mark_gone(struct ban *b)
...
@@ -276,13 +276,13 @@ ban_mark_gone(struct ban *b)
Lck_AssertHeld
(
&
ban_mtx
);
Lck_AssertHeld
(
&
ban_mtx
);
AN
(
b
->
spec
);
AN
(
b
->
spec
);
AZ
(
b
->
flags
&
BANS_FLAG_
GONE
);
AZ
(
b
->
flags
&
BANS_FLAG_
COMPLETED
);
ln
=
ban_len
(
b
->
spec
);
ln
=
ban_len
(
b
->
spec
);
b
->
flags
|=
BANS_FLAG_
GONE
;
b
->
flags
|=
BANS_FLAG_
COMPLETED
;
b
->
spec
[
BANS_FLAGS
]
|=
BANS_FLAG_
GONE
;
b
->
spec
[
BANS_FLAGS
]
|=
BANS_FLAG_
COMPLETED
;
VWMB
();
VWMB
();
vbe32enc
(
b
->
spec
+
BANS_LENGTH
,
BANS_HEAD_LEN
);
vbe32enc
(
b
->
spec
+
BANS_LENGTH
,
BANS_HEAD_LEN
);
VSC_C_main
->
bans_
gone
++
;
VSC_C_main
->
bans_
completed
++
;
VSC_C_main
->
bans_persisted_fragmentation
+=
ln
-
ban_len
(
b
->
spec
);
VSC_C_main
->
bans_persisted_fragmentation
+=
ln
-
ban_len
(
b
->
spec
);
}
}
...
@@ -555,16 +555,16 @@ BAN_Insert(struct ban *b)
...
@@ -555,16 +555,16 @@ BAN_Insert(struct ban *b)
if
(
be
==
NULL
)
if
(
be
==
NULL
)
return
(
NULL
);
return
(
NULL
);
/* Hunt down duplicates, and mark them as
gone
*/
/* Hunt down duplicates, and mark them as
completed
*/
bi
=
b
;
bi
=
b
;
Lck_Lock
(
&
ban_mtx
);
Lck_Lock
(
&
ban_mtx
);
while
(
!
ban_shutdown
&&
bi
!=
be
)
{
while
(
!
ban_shutdown
&&
bi
!=
be
)
{
bi
=
VTAILQ_NEXT
(
bi
,
list
);
bi
=
VTAILQ_NEXT
(
bi
,
list
);
if
(
bi
->
flags
&
BANS_FLAG_
GONE
)
if
(
bi
->
flags
&
BANS_FLAG_
COMPLETED
)
continue
;
continue
;
if
(
!
ban_equal
(
b
->
spec
,
bi
->
spec
))
if
(
!
ban_equal
(
b
->
spec
,
bi
->
spec
))
continue
;
continue
;
ban_mark_
gone
(
bi
);
ban_mark_
completed
(
bi
);
VSC_C_main
->
bans_dups
++
;
VSC_C_main
->
bans_dups
++
;
}
}
be
->
refcount
--
;
be
->
refcount
--
;
...
@@ -671,7 +671,7 @@ ban_info(enum baninfo event, const uint8_t *ban, unsigned len)
...
@@ -671,7 +671,7 @@ ban_info(enum baninfo event, const uint8_t *ban, unsigned len)
if
(
STV_BanInfo
(
event
,
ban
,
len
))
{
if
(
STV_BanInfo
(
event
,
ban
,
len
))
{
/* One or more stevedores reported failure. Export the
/* One or more stevedores reported failure. Export the
* list instead. The exported list should take up less
* list instead. The exported list should take up less
* space due to drops being purged and
gones
being
* space due to drops being purged and
completed
being
* truncated. */
* truncated. */
/* XXX: Keep some measure of how much space can be
/* XXX: Keep some measure of how much space can be
* saved, and only export if it's worth it. Assert if
* saved, and only export if it's worth it. Assert if
...
@@ -684,8 +684,8 @@ ban_info(enum baninfo event, const uint8_t *ban, unsigned len)
...
@@ -684,8 +684,8 @@ ban_info(enum baninfo event, const uint8_t *ban, unsigned len)
* Put a skeleton ban in the list, unless there is an identical,
* Put a skeleton ban in the list, unless there is an identical,
* time & condition, ban already in place.
* time & condition, ban already in place.
*
*
* If a newer ban has same condition, mark the
new ban GONE.
* If a newer ban has same condition, mark the
inserted ban COMPLETED,
*
mark any older bans, with the same condition, GONE as well
.
*
also mark any older bans, with the same condition COMPLETED
.
*/
*/
static
void
static
void
...
@@ -727,8 +727,8 @@ ban_reload(const uint8_t *ban, unsigned len)
...
@@ -727,8 +727,8 @@ ban_reload(const uint8_t *ban, unsigned len)
}
}
if
(
duplicate
)
if
(
duplicate
)
VSC_C_main
->
bans_dups
++
;
VSC_C_main
->
bans_dups
++
;
if
(
duplicate
||
(
ban
[
BANS_FLAGS
]
&
BANS_FLAG_
GONE
))
if
(
duplicate
||
(
ban
[
BANS_FLAGS
]
&
BANS_FLAG_
COMPLETED
))
ban_mark_
gone
(
b2
);
ban_mark_
completed
(
b2
);
if
(
b
==
NULL
)
if
(
b
==
NULL
)
VTAILQ_INSERT_TAIL
(
&
ban_head
,
b2
,
list
);
VTAILQ_INSERT_TAIL
(
&
ban_head
,
b2
,
list
);
else
else
...
@@ -737,10 +737,10 @@ ban_reload(const uint8_t *ban, unsigned len)
...
@@ -737,10 +737,10 @@ ban_reload(const uint8_t *ban, unsigned len)
/* Hunt down older duplicates */
/* Hunt down older duplicates */
for
(
b
=
VTAILQ_NEXT
(
b2
,
list
);
b
!=
NULL
;
b
=
VTAILQ_NEXT
(
b
,
list
))
{
for
(
b
=
VTAILQ_NEXT
(
b2
,
list
);
b
!=
NULL
;
b
=
VTAILQ_NEXT
(
b
,
list
))
{
if
(
b
->
flags
&
BANS_FLAG_
GONE
)
if
(
b
->
flags
&
BANS_FLAG_
COMPLETED
)
continue
;
continue
;
if
(
ban_equal
(
b
->
spec
,
ban
))
{
if
(
ban_equal
(
b
->
spec
,
ban
))
{
ban_mark_
gone
(
b
);
ban_mark_
completed
(
b
);
VSC_C_main
->
bans_dups
++
;
VSC_C_main
->
bans_dups
++
;
}
}
}
}
...
@@ -927,7 +927,7 @@ ban_check_object(struct object *o, struct vsl_log *vsl,
...
@@ -927,7 +927,7 @@ ban_check_object(struct object *o, struct vsl_log *vsl,
tests
=
0
;
tests
=
0
;
for
(
b
=
b0
;
b
!=
oc
->
ban
;
b
=
VTAILQ_NEXT
(
b
,
list
))
{
for
(
b
=
b0
;
b
!=
oc
->
ban
;
b
=
VTAILQ_NEXT
(
b
,
list
))
{
CHECK_OBJ_NOTNULL
(
b
,
BAN_MAGIC
);
CHECK_OBJ_NOTNULL
(
b
,
BAN_MAGIC
);
if
(
b
->
flags
&
BANS_FLAG_
GONE
)
if
(
b
->
flags
&
BANS_FLAG_
COMPLETED
)
continue
;
continue
;
if
(
ban_evaluate
(
b
->
spec
,
o
->
http
,
req_http
,
&
tests
))
if
(
ban_evaluate
(
b
->
spec
,
o
->
http
,
req_http
,
&
tests
))
break
;
break
;
...
@@ -975,8 +975,8 @@ ban_cleantail(void)
...
@@ -975,8 +975,8 @@ ban_cleantail(void)
Lck_Lock
(
&
ban_mtx
);
Lck_Lock
(
&
ban_mtx
);
b
=
VTAILQ_LAST
(
&
ban_head
,
banhead_s
);
b
=
VTAILQ_LAST
(
&
ban_head
,
banhead_s
);
if
(
b
!=
VTAILQ_FIRST
(
&
ban_head
)
&&
b
->
refcount
==
0
)
{
if
(
b
!=
VTAILQ_FIRST
(
&
ban_head
)
&&
b
->
refcount
==
0
)
{
if
(
b
->
flags
&
BANS_FLAG_
GONE
)
if
(
b
->
flags
&
BANS_FLAG_
COMPLETED
)
VSC_C_main
->
bans_
gone
--
;
VSC_C_main
->
bans_
completed
--
;
if
(
b
->
flags
&
BANS_FLAG_OBJ
)
if
(
b
->
flags
&
BANS_FLAG_OBJ
)
VSC_C_main
->
bans_obj
--
;
VSC_C_main
->
bans_obj
--
;
if
(
b
->
flags
&
BANS_FLAG_REQ
)
if
(
b
->
flags
&
BANS_FLAG_REQ
)
...
@@ -1117,7 +1117,7 @@ ban_lurker_work(struct worker *wrk, struct vsl_log *vsl)
...
@@ -1117,7 +1117,7 @@ ban_lurker_work(struct worker *wrk, struct vsl_log *vsl)
Lck_Unlock
(
&
ban_mtx
);
Lck_Unlock
(
&
ban_mtx
);
i
=
0
;
i
=
0
;
while
(
b
!=
NULL
)
{
while
(
b
!=
NULL
)
{
if
(
b
->
flags
&
BANS_FLAG_
GONE
)
{
if
(
b
->
flags
&
BANS_FLAG_
COMPLETED
)
{
;
;
}
else
if
(
b
->
flags
&
BANS_FLAG_REQ
)
{
}
else
if
(
b
->
flags
&
BANS_FLAG_REQ
)
{
;
;
...
@@ -1138,9 +1138,10 @@ ban_lurker_work(struct worker *wrk, struct vsl_log *vsl)
...
@@ -1138,9 +1138,10 @@ ban_lurker_work(struct worker *wrk, struct vsl_log *vsl)
VTAILQ_FOREACH_REVERSE
(
bt
,
&
ban_head
,
banhead_s
,
list
)
{
VTAILQ_FOREACH_REVERSE
(
bt
,
&
ban_head
,
banhead_s
,
list
)
{
if
(
bt
==
VTAILQ_LAST
(
&
obans
,
banhead_s
))
{
if
(
bt
==
VTAILQ_LAST
(
&
obans
,
banhead_s
))
{
if
(
DO_DEBUG
(
DBG_LURKER
))
if
(
DO_DEBUG
(
DBG_LURKER
))
VSLb
(
vsl
,
SLT_Debug
,
"Lurk bt gone %p"
,
bt
);
VSLb
(
vsl
,
SLT_Debug
,
"Lurk bt completed %p"
,
bt
);
Lck_Lock
(
&
ban_mtx
);
Lck_Lock
(
&
ban_mtx
);
ban_mark_
gone
(
bt
);
ban_mark_
completed
(
bt
);
Lck_Unlock
(
&
ban_mtx
);
Lck_Unlock
(
&
ban_mtx
);
VTAILQ_REMOVE
(
&
obans
,
bt
,
l_list
);
VTAILQ_REMOVE
(
&
obans
,
bt
,
l_list
);
if
(
VTAILQ_EMPTY
(
&
obans
))
if
(
VTAILQ_EMPTY
(
&
obans
))
...
@@ -1283,9 +1284,9 @@ ccf_ban_list(struct cli *cli, const char * const *av, void *priv)
...
@@ -1283,9 +1284,9 @@ ccf_ban_list(struct cli *cli, const char * const *av, void *priv)
VCLI_Out
(
cli
,
"Present bans:
\n
"
);
VCLI_Out
(
cli
,
"Present bans:
\n
"
);
VTAILQ_FOREACH
(
b
,
&
ban_head
,
list
)
{
VTAILQ_FOREACH
(
b
,
&
ban_head
,
list
)
{
VCLI_Out
(
cli
,
"%10.6f %5u%s"
,
ban_time
(
b
->
spec
),
VCLI_Out
(
cli
,
"%10.6f %5u
%s"
,
ban_time
(
b
->
spec
),
bl
==
b
?
b
->
refcount
-
1
:
b
->
refcount
,
bl
==
b
?
b
->
refcount
-
1
:
b
->
refcount
,
b
->
flags
&
BANS_FLAG_
GONE
?
"G"
:
"-
"
);
b
->
flags
&
BANS_FLAG_
COMPLETED
?
"C"
:
"
"
);
if
(
DO_DEBUG
(
DBG_LURKER
))
{
if
(
DO_DEBUG
(
DBG_LURKER
))
{
VCLI_Out
(
cli
,
"%s%s%s %p "
,
VCLI_Out
(
cli
,
"%s%s%s %p "
,
b
->
flags
&
BANS_FLAG_REQ
?
"R"
:
"-"
,
b
->
flags
&
BANS_FLAG_REQ
?
"R"
:
"-"
,
...
@@ -1327,7 +1328,7 @@ BAN_Init(void)
...
@@ -1327,7 +1328,7 @@ BAN_Init(void)
AN
(
ban_magic
);
AN
(
ban_magic
);
AZ
(
BAN_Insert
(
ban_magic
));
AZ
(
BAN_Insert
(
ban_magic
));
Lck_Lock
(
&
ban_mtx
);
Lck_Lock
(
&
ban_mtx
);
ban_mark_
gone
(
ban_magic
);
ban_mark_
completed
(
ban_magic
);
Lck_Unlock
(
&
ban_mtx
);
Lck_Unlock
(
&
ban_mtx
);
}
}
...
...
bin/varnishtest/tests/c00049.vtc
View file @
295e99af
...
@@ -97,7 +97,7 @@ delay .1
...
@@ -97,7 +97,7 @@ delay .1
varnish v1 -cliok "ban.list"
varnish v1 -cliok "ban.list"
varnish v1 -expect bans == 6
varnish v1 -expect bans == 6
varnish v1 -expect bans_
gone
== 1
varnish v1 -expect bans_
completed
== 1
varnish v1 -expect bans_req == 1
varnish v1 -expect bans_req == 1
varnish v1 -expect bans_obj == 4
varnish v1 -expect bans_obj == 4
varnish v1 -expect bans_added == 6
varnish v1 -expect bans_added == 6
...
@@ -118,7 +118,7 @@ delay 2
...
@@ -118,7 +118,7 @@ delay 2
varnish v1 -cliok "ban.list"
varnish v1 -cliok "ban.list"
varnish v1 -expect bans == 5
varnish v1 -expect bans == 5
varnish v1 -expect bans_
gone
== 4
varnish v1 -expect bans_
completed
== 4
varnish v1 -expect bans_req == 1
varnish v1 -expect bans_req == 1
varnish v1 -expect bans_obj == 4
varnish v1 -expect bans_obj == 4
varnish v1 -expect bans_added == 6
varnish v1 -expect bans_added == 6
...
@@ -143,7 +143,7 @@ delay 1
...
@@ -143,7 +143,7 @@ delay 1
varnish v1 -cliok "ban.list"
varnish v1 -cliok "ban.list"
varnish v1 -expect bans == 4
varnish v1 -expect bans == 4
varnish v1 -expect bans_
gone
== 3
varnish v1 -expect bans_
completed
== 3
varnish v1 -expect bans_req == 1
varnish v1 -expect bans_req == 1
varnish v1 -expect bans_obj == 3
varnish v1 -expect bans_obj == 3
varnish v1 -expect bans_added == 6
varnish v1 -expect bans_added == 6
...
@@ -168,7 +168,7 @@ delay 1
...
@@ -168,7 +168,7 @@ delay 1
varnish v1 -cliok "ban.list"
varnish v1 -cliok "ban.list"
varnish v1 -expect bans == 1
varnish v1 -expect bans == 1
varnish v1 -expect bans_
gone
== 1
varnish v1 -expect bans_
completed
== 1
varnish v1 -expect bans_req == 0
varnish v1 -expect bans_req == 0
varnish v1 -expect bans_obj == 1
varnish v1 -expect bans_obj == 1
varnish v1 -expect bans_added == 6
varnish v1 -expect bans_added == 6
...
...
bin/varnishtest/tests/p00009.vtc
View file @
295e99af
varnishtest "Check that reloaded bans with
gone flag are really gone
on restart"
varnishtest "Check that reloaded bans with
completed flag are really completed
on restart"
shell "rm -f ${tmpdir}/_.per[12]"
shell "rm -f ${tmpdir}/_.per[12]"
...
@@ -36,8 +36,8 @@ varnish v1 -expect bans == 3
...
@@ -36,8 +36,8 @@ varnish v1 -expect bans == 3
# Expect 1 of the 2 added to be marked dup
# Expect 1 of the 2 added to be marked dup
varnish v1 -expect bans_dups == 1
varnish v1 -expect bans_dups == 1
# Expect ban_magic plus our 1 dup to be marked
gone
# Expect ban_magic plus our 1 dup to be marked
completed
varnish v1 -expect bans_
gone
== 2
varnish v1 -expect bans_
completed
== 2
# Restart
# Restart
varnish v1 -stop
varnish v1 -stop
...
@@ -54,4 +54,4 @@ client c1 {
...
@@ -54,4 +54,4 @@ client c1 {
# Expect our duplicate
# Expect our duplicate
varnish v1 -expect bans_dups == 1
varnish v1 -expect bans_dups == 1
# One more than before restart due to the new ban_magic
# One more than before restart due to the new ban_magic
varnish v1 -expect bans_
gone
== 3
varnish v1 -expect bans_
completed
== 3
bin/varnishtest/tests/r01266.vtc
View file @
295e99af
varnishtest "#1266 - Check persisted truncated
gone
bans"
varnishtest "#1266 - Check persisted truncated
completed
bans"
# Test that bans which has been
gone'
d, truncated and persisted works
# Test that bans which has been
complete
d, truncated and persisted works
shell "rm -f ${tmpdir}/_.per1"
shell "rm -f ${tmpdir}/_.per1"
...
@@ -17,7 +17,7 @@ varnish v1 \
...
@@ -17,7 +17,7 @@ varnish v1 \
}
}
varnish v1 -start
varnish v1 -start
# Add a ban that will (with lurker help) become a truncated
gone
ban last
# Add a ban that will (with lurker help) become a truncated
completed
ban last
# in the list
# in the list
varnish v1 -cliok "ban obj.http.x-foo == bar"
varnish v1 -cliok "ban obj.http.x-foo == bar"
delay 1
delay 1
...
...
include/tbl/vsc_f_main.h
View file @
295e99af
...
@@ -485,8 +485,8 @@ VSC_F(bans, uint64_t, 0, 'g', info,
...
@@ -485,8 +485,8 @@ VSC_F(bans, uint64_t, 0, 'g', info,
"Number of all bans in system, including bans superseded"
"Number of all bans in system, including bans superseded"
" by newer bans and bans already checked by the ban-lurker."
" by newer bans and bans already checked by the ban-lurker."
)
)
VSC_F
(
bans_
gone
,
uint64_t
,
0
,
'g'
,
diag
,
VSC_F
(
bans_
completed
,
uint64_t
,
0
,
'g'
,
diag
,
"Number of bans marked '
gone
'"
,
"Number of bans marked '
completed
'"
,
"Number of bans which are no longer active, either because they"
"Number of bans which are no longer active, either because they"
" got checked by the ban-lurker or superseded by newer identical bans."
" got checked by the ban-lurker or superseded by newer identical bans."
)
)
...
@@ -556,7 +556,7 @@ VSC_F(bans_persisted_bytes, uint64_t, 0, 'g', diag,
...
@@ -556,7 +556,7 @@ VSC_F(bans_persisted_bytes, uint64_t, 0, 'g', diag,
VSC_F
(
bans_persisted_fragmentation
,
uint64_t
,
0
,
'g'
,
diag
,
VSC_F
(
bans_persisted_fragmentation
,
uint64_t
,
0
,
'g'
,
diag
,
"Extra bytes in persisted ban lists due to fragmentation"
,
"Extra bytes in persisted ban lists due to fragmentation"
,
"Number of extra bytes accumulated through dropped and"
"Number of extra bytes accumulated through dropped and"
"
gone
bans in the persistent ban lists."
"
completed
bans in the persistent ban lists."
)
)
/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
...
...
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