From 27b244629b4e7978c3899777c19bb792f32c4bea Mon Sep 17 00:00:00 2001 From: Henrik Nordstrom Date: Tue, 3 Feb 2009 22:35:04 +0100 Subject: [PATCH] Need to kick all deferred reads when a delaypool is updated, otherwise things queue up too long. The chaos SHOULD be addressed by randomizing the order... (not yet done. XXX comment addded in comm.cc) --- src/DelayPool.cc | 7 +------ src/comm.cc | 1 + 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/DelayPool.cc b/src/DelayPool.cc index 5ee1630128..45b3096bec 100644 --- a/src/DelayPool.cc +++ b/src/DelayPool.cc @@ -114,12 +114,7 @@ CompositePoolNode::delayRead(DeferredRead const &aRead) void CompositePoolNode::kickReads() { - /** - * we only start one, because delay pools may have **many** attached connections, - * and kicking them all off would be chaotic. - * This may need to be reviewed. - */ - deferredReads.kickReads(1); + deferredReads.kickReads(-1); } #endif diff --git a/src/comm.cc b/src/comm.cc index 23147723a9..10e9ee70a4 100644 --- a/src/comm.cc +++ b/src/comm.cc @@ -2553,6 +2553,7 @@ DeferredReadManager::flushReads() { reads = deferredReads; deferredReads = CbDataListContainer(); + // XXX: For fairness this SHOULD randomize the order while (!reads.empty()) { DeferredRead aRead = popHead(reads); kickARead(aRead); -- 2.47.3