paging issue with HornetQ 2.2.2.final
kapilnikhra Jun 14, 2011 5:25 PMI am running my application in the following enviornment.
Jboss 6.0
standalone non-clustered HornetQ 2.2.2
O/S windows 7
java 6
I am using spring JMStemplate to write message to the Queue and using spring DefaultMessageListenerContainer to listen message from the HornetQ with sessionTransacted as 'true'.
I am using a single queue and following are the byte sizes defined in the queue. ( reduced the sizes for testing)
<max-size-bytes>5120</max-size-bytes> | |
<page-size-bytes>2048</page-size-bytes> |
address-full-policy is set to 'PAGE'
if i stop my queue listener and write small number of message to the queue, such that they do not create an data in the paging directory, everything works fine when i start the listener and i am able to consume messages.
But when i do the same thing and increase the number of messages such that some messages are written to a paging file, the messages written in the paging file, seems to be stuck in the queue and are not delivered to the listener when i start the listener, though it delivers some messages which i assume are from memory. If i restart the Queue, if delivers some more messages, but not all.
My assumption is that since i am using sessionTransacted as 'true' there should not be any problem with the acknowledgement ( i have also set the transaction-batch-size as '1024' in the connection-factory on the client side). I have also seen a info log message in the hornetq.log saying it is leaving page mode.
Thread-11 (group:HornetQ-server-threads1580650567-41563810)] 13:42:09,605 INFO [org.hornetq.core.paging.cursor.impl.PageCursorProviderImpl] Address jms.queue.serviceRequestQ is leaving page mode as all messages are consumed and acknowledged from the page store.
I am not sure what the problem is or if i am missing some configuration, due to which the paged messages are not getting delivered.( i can see the messages in the Queue thru JConsole).
I am also seeing the following warning in the logs when there are messages in the paging file ( which i assumes, reading the earlier posts that i can ignore).
[Old I/O server worker (parentId: 1715060328, [id: 0x6639be68, localhost/127.0.0.1:5447])] 13:49:57,313 WARNING [org.hornetq.core.server.impl.QueueImpl] Error on checkDLQ
java.lang.IllegalStateException: Cannot find add info 2856
at org.hornetq.core.journal.impl.JournalImpl.appendUpdateRecord(JournalImpl.java:909)
at org.hornetq.core.persistence.impl.journal.JournalStorageManager.updateScheduledDeliveryTime(JournalStorageManager.java:551)
at org.hornetq.core.server.impl.QueueImpl.checkRedelivery(QueueImpl.java:1637)
at org.hornetq.core.server.impl.QueueImpl$RefsOperation.afterRollback(QueueImpl.java:2013)
at org.hornetq.core.transaction.impl.TransactionImpl.afterRollback(TransactionImpl.java:469)
at org.hornetq.core.transaction.impl.TransactionImpl$3.done(TransactionImpl.java:329)
at org.hornetq.core.persistence.impl.journal.OperationContextImpl.executeOnCompletion(OperationContextImpl.java:188)
at org.hornetq.core.persistence.impl.journal.JournalStorageManager.afterCompleteOperations(JournalStorageManager.java:429)
at org.hornetq.core.transaction.impl.TransactionImpl.rollback(TransactionImpl.java:317)
at org.hornetq.core.server.impl.ServerConsumerImpl.close(ServerConsumerImpl.java:343)
at org.hornetq.core.server.impl.ServerSessionImpl.closeConsumer(ServerSessionImpl.java:1017)
at org.hornetq.core.protocol.core.ServerSessionPacketHandler.handlePacket(ServerSessionPacketHandler.java:425)
at org.hornetq.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:474)
at org.hornetq.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:496)
at org.hornetq.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:457)
at org.hornetq.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:459)