diff options
| author | Gordon Sim <gsim@apache.org> | 2013-11-08 17:41:19 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2013-11-08 17:41:19 +0000 |
| commit | 84f0acc42b2d9eb71226f26eef526a0e9f7493f3 (patch) | |
| tree | 56843345a29a1fd592ee9c21937c0d72594b8e05 /qpid/cpp | |
| parent | dcf23c21fd61308d303b7ae8bb1989b6e7499f37 (diff) | |
| download | qpid-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.cpp | 1 | ||||
| -rwxr-xr-x | qpid/cpp/src/tests/run_paged_queue_tests | 11 |
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 |
