[master] c22afc8 Do not consider busy objects as candidates in EXP_NukeOne.

Martin Blix Grydeland martin at varnish-cache.org
Thu Jul 19 10:37:29 CEST 2012


commit c22afc8a73d3e55831e06293c4b2f42a7e15b9e8
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date:   Wed Jul 4 13:25:08 2012 +0200

    Do not consider busy objects as candidates in EXP_NukeOne.
    
    An attempt to nuke a busy object will end in assertion.

diff --git a/bin/varnishd/cache/cache_expire.c b/bin/varnishd/cache/cache_expire.c
index 5a41875..8f072b6 100644
--- a/bin/varnishd/cache/cache_expire.c
+++ b/bin/varnishd/cache/cache_expire.c
@@ -428,9 +428,10 @@ EXP_NukeOne(struct busyobj *bo, struct lru *lru)
 		/*
 		 * It wont release any space if we cannot release the last
 		 * reference, besides, if somebody else has a reference,
-		 * it's a bad idea to nuke this object anyway.
+		 * it's a bad idea to nuke this object anyway. Also do not
+		 * touch busy objects.
 		 */
-		if (oc->refcnt == 1)
+		if (oc->refcnt == 1 && !(oc->flags & OC_F_BUSY))
 			break;
 	}
 	if (oc != NULL) {



More information about the varnish-commit mailing list