summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-11-08 17:41:19 +0000
committerGordon Sim <gsim@apache.org>2013-11-08 17:41:19 +0000
commit84f0acc42b2d9eb71226f26eef526a0e9f7493f3 (patch)
tree56843345a29a1fd592ee9c21937c0d72594b8e05 /qpid/cpp
parentdcf23c21fd61308d303b7ae8bb1989b6e7499f37 (diff)
downloadqpid-python-84f0acc42b2d9eb71226f26eef526a0e9f7493f3.tar.gz
QPID-5312: make sure page is loaded before attempting to find message in it
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1540136 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/src/qpid/broker/PagedQueue.cpp1
-rwxr-xr-xqpid/cpp/src/tests/run_paged_queue_tests11
2 files changed, 12 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/PagedQueue.cpp b/qpid/cpp/src/qpid/broker/PagedQueue.cpp
index a0fbf530a1..4063fbe695 100644
--- a/qpid/cpp/src/qpid/broker/PagedQueue.cpp
+++ b/qpid/cpp/src/qpid/broker/PagedQueue.cpp
@@ -127,6 +127,7 @@ Message* PagedQueue::next(QueueCursor& cursor)
if (i == used.end() && !used.empty() && used.begin()->first > position) i = used.begin();
}
while (i != used.end()) {
+ if (!i->second.isLoaded()) load(i->second);
Message* m = i->second.next(version, cursor);
QPID_LOG(debug, "PagedQueue::next(" << cursor.valid << ":" << cursor.position << "): " << m);
if (m) return m;
diff --git a/qpid/cpp/src/tests/run_paged_queue_tests b/qpid/cpp/src/tests/run_paged_queue_tests
index 83e6ba863c..1ccefea716 100755
--- a/qpid/cpp/src/tests/run_paged_queue_tests
+++ b/qpid/cpp/src/tests/run_paged_queue_tests
@@ -33,7 +33,18 @@ stop_broker() {
$QPIDD_EXEC -q --port $QPID_PORT
}
+test_single_page() {
+ msgcount=1000
+ qpid-send --messages $msgcount --content-size 1024 --broker "localhost:$QPID_PORT" --address "onepage; {create: always, node:{x-declare:{arguments:{'qpid.paging':True,'qpid.max_pages_loaded':1}}}}"
+ received=$(qpid-receive --address onepage --broker "localhost:$QPID_PORT" --messages $msgcount | wc -l)
+ if [[ $received -ne $msgcount ]]; then
+ echo "single page test failed: received $received messages, expected $msgcount"
+ exit 1
+ fi
+}
+
start_broker
+test_single_page
qpid-cpp-benchmark --broker "localhost:$QPID_PORT" --create-option "node:{x-declare:{arguments:{'qpid.paging':True,'qpid.max_size':0,'qpid.max_count':0,'qpid.flow_stop_size':0,'qpid.flow_resume_size':0,'qpid.flow_stop_count':0,'qpid.flow_resume_count':0}}}"
qpid-cpp-benchmark --broker "localhost:$QPID_PORT" --create-option "node:{x-declare:{arguments:{'qpid.paging':True,'qpid.max_size':0,'qpid.max_count':0,'qpid.flow_stop_size':0,'qpid.flow_resume_size':0,'qpid.flow_stop_count':0,'qpid.flow_resume_count':0}}}" --fill-drain
stop_broker