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

Reply via email to