[Checkins] SVN: zc.resumelb/trunk/src/zc/resumelb/ Simplify management of worker and pool backlog to, hopefully, avoid
jim
cvs-admin at zope.org
Wed Oct 17 20:59:47 UTC 2012
Log message for revision 128040:
Simplify management of worker and pool backlog to, hopefully, avoid
backlogs from getting out of whack.
Changed:
U zc.resumelb/trunk/src/zc/resumelb/lb.py
U zc.resumelb/trunk/src/zc/resumelb/pool.test
U zc.resumelb/trunk/src/zc/resumelb/single_version.test
-=-
Modified: zc.resumelb/trunk/src/zc/resumelb/lb.py
===================================================================
--- zc.resumelb/trunk/src/zc/resumelb/lb.py 2012-10-17 20:28:49 UTC (rev 128039)
+++ zc.resumelb/trunk/src/zc/resumelb/lb.py 2012-10-17 20:59:44 UTC (rev 128040)
@@ -87,20 +87,20 @@
while 1:
worker = self.pool.get(rclass)
try:
- result = worker.handle(rclass, env, start_response)
- self.pool.put(worker)
- return result
+ return worker.handle(rclass, env, start_response)
except zc.resumelb.util.Disconnected:
if (int(env.get('CONTENT_LENGTH', 0)) == 0 and
env.get('REQUEST_METHOD') in retry_methods
):
- logger.info("retrying %s", env)
+ logger.info("%s disconnected, retrying %s", worker, env)
else:
return webob.Response(
status = '502 Bad Gateway',
content_type= 'text/html',
body = self.disconnect_message
)(env, start_response)
+ finally:
+ self.pool.put(worker)
class Pool:
@@ -240,11 +240,6 @@
self.event.clear()
def remove(self, worker):
-
- self.backlog -= worker.backlog
- assert self.backlog >= 0, self.backlog
- _decay_backlog(self, self.decay)
-
if self.single_version:
self.byversion[worker.version].remove(worker)
if worker.version == self.version:
@@ -323,10 +318,11 @@
self.backlog -= 1
assert self.backlog >= 0, self.backlog
_decay_backlog(self, self.decay)
- if worker.backlog > 0:
- worker.backlog -= 1
- _decay_backlog(worker, self.worker_decay)
+ worker.backlog -= 1
+ assert worker.backlog >= 0
+ _decay_backlog(worker, self.worker_decay)
+
def _init_backlog(worker):
worker.backlog = getattr(worker, 'backlog', 0)
worker.dbacklog = getattr(worker, 'dbacklog', worker.backlog)
Modified: zc.resumelb/trunk/src/zc/resumelb/pool.test
===================================================================
--- zc.resumelb/trunk/src/zc/resumelb/pool.test 2012-10-17 20:28:49 UTC (rev 128039)
+++ zc.resumelb/trunk/src/zc/resumelb/pool.test 2012-10-17 20:59:44 UTC (rev 128040)
@@ -229,15 +229,12 @@
>>> pool.put(w1)
>>> pool.put(w3)
>>> pool.put(w3)
- >>> pool.put(w3)
- >>> pool.put(w3)
- >>> pool.put(w3)
>>> pool # doctest: +ELLIPSIS
Request classes:
bar: w2(2.0,1.5...)
foo: w5(0.5,1.5...), w2(2.0,1.5...), w3(3.8,1.2...), w1(5.9,2.7...)
Backlogs:
- overall backlog: 4 Decayed: 7.9... Avg: 1.5...
+ overall backlog: 7 Decayed: 8.4... Avg: 1.6...
0: [w3, w4]
2: [w2, w5]
3: [w1]
@@ -251,13 +248,21 @@
When a worker disconnect, it's removed from the pool:
>>> pool.remove(w1)
+ >>> pool.put(w1)
+ >>> pool.put(w1)
+ >>> pool.put(w1)
+ >>> pool.put(w1)
+ >>> pool.put(w1)
>>> pool.remove(w3)
+ >>> pool.put(w3)
+ >>> pool.put(w3)
+ >>> pool.put(w3)
>>> pool # doctest: +ELLIPSIS
Request classes:
bar: w2(2.0,1.57...)
foo: w5(0.5,1.57...), w2(2.0,1.57...)
Backlogs:
- overall backlog: 1 Decayed: 7.1... Avg: 2.3...
+ overall backlog: 4 Decayed: 8.2... Avg: 2.7...
0: [w4]
2: [w2, w5]
Modified: zc.resumelb/trunk/src/zc/resumelb/single_version.test
===================================================================
--- zc.resumelb/trunk/src/zc/resumelb/single_version.test 2012-10-17 20:28:49 UTC (rev 128039)
+++ zc.resumelb/trunk/src/zc/resumelb/single_version.test 2012-10-17 20:59:44 UTC (rev 128040)
@@ -102,6 +102,7 @@
>>> pool.remove(w4)
>>> pool.remove(w5)
+ >>> pool.put(w5)
>>> print pool # doctest: +ELLIPSIS
Version: 1
Inactive: 2: set([w3])
@@ -110,7 +111,7 @@
b: w1(1.0,0.48...)
c:
Backlogs:
- overall backlog: 2 Decayed: 2.58547913529 Avg: 1.29273956765
+ overall backlog: 2 Decayed: 2.5... Avg: 1.2...
0: [w1]
1: [w2]
@@ -122,6 +123,7 @@
If we remove the last version 2:
>>> pool.remove(w3)
+ >>> pool.put(w3)
>>> print pool # doctest: +ELLIPSIS
Version: 1
Request classes:
@@ -129,7 +131,7 @@
b: w1(1.0,0.66...)
c:
Backlogs:
- overall backlog: 2 Decayed: 2.56315626836 Avg: 1.28157813418
+ overall backlog: 2 Decayed: 2.5... Avg: 1.2...
1: [w1, w2]
We don't print inactive, since there aren't any.
More information about the checkins
mailing list