Skip to content

Commit

Permalink
Only set new lurker destination ban if we already had one.
Browse files Browse the repository at this point in the history
Without this we could start running ban_lurker_test_ban with an empty
list of bans to test, causing a lot of unnecessary ban and oh mutex
contention on every ban lurker invocation until the REQ ban triggering
it is gone.

Also don't call ban_lurker_test_ban when our destination ban is the
same as the one being tested. This would be wasted work.

Adjust the c00049.vtc test case for the bans now not being
unnecessarily tested.
  • Loading branch information
mbgrydeland committed Mar 3, 2016
1 parent 9b31cf3 commit 93d8050
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
8 changes: 6 additions & 2 deletions bin/varnishd/cache/cache_ban_lurker.c
Expand Up @@ -145,6 +145,9 @@ ban_lurker_test_ban(struct worker *wrk, struct vsl_log *vsl, struct ban *bt,
unsigned tests;
int i;

/* It's an error to give an empty list to test against */
AZ(VTAILQ_EMPTY(obans));

/*
* First see if there is anything to do, and if so, insert marker
*/
Expand Down Expand Up @@ -222,12 +225,13 @@ ban_lurker_work(struct worker *wrk, struct vsl_log *vsl)
bd = NULL;
VTAILQ_INIT(&obans);
for (; b != NULL; b = VTAILQ_NEXT(b, list)) {
if (bd != NULL)
if (bd != NULL && bd != b)
ban_lurker_test_ban(wrk, vsl, b, &obans, bd);
if (b->flags & BANS_FLAG_COMPLETED)
continue;
if (b->flags & BANS_FLAG_REQ) {
bd = VTAILQ_NEXT(b, list);
if (bd != NULL)
bd = VTAILQ_NEXT(b, list);
continue;
}
n = ban_time(b->spec) - d;
Expand Down
12 changes: 6 additions & 6 deletions bin/varnishtest/tests/c00049.vtc
Expand Up @@ -132,8 +132,8 @@ varnish v1 -expect bans_deleted == 2
varnish v1 -expect bans_tested == 0
varnish v1 -expect bans_tests_tested == 0
varnish v1 -expect bans_obj_killed == 0
varnish v1 -expect bans_lurker_tested == 10
varnish v1 -expect bans_lurker_tests_tested == 11
varnish v1 -expect bans_lurker_tested == 8
varnish v1 -expect bans_lurker_tests_tested == 9
varnish v1 -expect bans_lurker_obj_killed == 4
varnish v1 -expect bans_dups == 0

Expand All @@ -157,8 +157,8 @@ varnish v1 -expect bans_deleted == 2
varnish v1 -expect bans_tested == 1
varnish v1 -expect bans_tests_tested == 1
varnish v1 -expect bans_obj_killed == 0
varnish v1 -expect bans_lurker_tested == 10
varnish v1 -expect bans_lurker_tests_tested == 11
varnish v1 -expect bans_lurker_tested == 8
varnish v1 -expect bans_lurker_tests_tested == 9
varnish v1 -expect bans_lurker_obj_killed == 4
varnish v1 -expect bans_dups == 0

Expand All @@ -182,8 +182,8 @@ varnish v1 -expect bans_deleted == 5
varnish v1 -expect bans_tested == 2
varnish v1 -expect bans_tests_tested == 2
varnish v1 -expect bans_obj_killed == 1
varnish v1 -expect bans_lurker_tested == 10
varnish v1 -expect bans_lurker_tests_tested == 11
varnish v1 -expect bans_lurker_tested == 8
varnish v1 -expect bans_lurker_tests_tested == 9
varnish v1 -expect bans_lurker_obj_killed == 4
varnish v1 -expect bans_dups == 0

Expand Down

0 comments on commit 93d8050

Please sign in to comment.