10 Replies Latest reply on Jun 28, 2011 6:43 PM by clebert.suconic

    paging issue with HornetQ 2.2.2.final

    kapilnikhra

      I 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)