You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Pavel Moravec (JIRA)" <ji...@apache.org> on 2013/09/09 14:32:51 UTC
[jira] [Created] (QPID-5121) Store module does not raise exception
when attempting to enqueue a message bigger than the journal size
Pavel Moravec created QPID-5121:
-----------------------------------
Summary: Store module does not raise exception when attempting to enqueue a message bigger than the journal size
Key: QPID-5121
URL: https://issues.apache.org/jira/browse/QPID-5121
Project: Qpid
Issue Type: Bug
Components: C++ Broker
Affects Versions: 0.22
Reporter: Pavel Moravec
Attachments: QPID-5121.patch
Description of problem:
Whenever store module tries to write to a journal a message bigger than the journal capacity is, it a) does not store the message (so far so good), but b) it does _not_ raise an error (!!!). So the broker thinks the message was enqueued.
That is a big gotcha, as the durable message is kept in memory only.
Version-Release number of selected component (if applicable):
0.22
How reproducible:
100%
Steps to Reproduce:
rm -rf /var/lib/qpidd/* /var/lib/qpidd/.* 2> /dev/null
service qpidd restart
# create a durable queue with tiny journal and send there one huge message
qpid-send -a "DurableQueue4; {create:always, node:{durable:true, x-declare:{ arguments:{'qpid.flow_stop_count':0, 'qpid.max_count':0, 'qpid.file_count':4, 'qpid.file_size':8, 'qpid.flow_resume_count':0, 'qpid.flow_stop_size':0, 'qpid.flow_resume_size':0, 'qpid.max_size':0 }}}}" -m 1 --content-size=100000000 --durable=yes
# check in stats the queue has the message enqueued
qpid-stat -q
Queues
queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind
=========================================================================================================================
7e553cc6-89d4-46b2-93fd-5ad7cf1f72a9:0.0 Y Y 0 0 0 0 0 0 1 2
DurableQueue4 Y 1 1 0 100m 100m 0 0 1
# restart the broker and check queue stats
service qpidd restart
qpid-stat -q
Queues
queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind
=========================================================================================================================
DurableQueue4 Y 0 0 0 0 0 0 0 1
cddddd53-5b98-4101-ad35-de71e038cd61:0.0 Y Y 0 0 0 0 0 0 1 2
# ouch, where the _durable_ message went to???
Actual results:
1) generic reproducer for regular durable queue:
- qpid-send/broker/store has not returned an error (THIS is the wrong)
- after the broker restart, the queue has no message (this should be ok but not after no error raised)
Expected results:
qpid-send should fail due to "Enqueue capacity threshold" error (and no message should be kept in the broker later on).
Additional info:
- Optional/variant scenarios: send first some tiny message to the journal and then the huge one.
- Trivial patch to be added
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org