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-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org