[ 
https://issues.apache.org/jira/browse/AMQ-2362?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dejan Bosanac updated AMQ-2362:
-------------------------------

    Fix Version/s:     (was: 5.4.2)
                   5.5.0

> ActiveMQ5.2 - Some listeners stopped getting messages. Even after restart of 
> the broker/client the messages were not getting picked. Then we stopped 
> ActiveMQ 5.2 and started Active mq 4.1 (we migrated some one week back) and 
> then client and it worked
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2362
>                 URL: https://issues.apache.org/jira/browse/AMQ-2362
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.2.0
>         Environment: linux 32 bit -2.6.18-92.el5 i686 i686 i386 GNU/Linux-, 
> jre1.6.0_10
>            Reporter: Kanonymous
>             Fix For: 5.5.0
>
>
> This seems to be a very wierd issue which came on the production env.
> Set up- we are using one broker which is in our inside zone and many 
> producers and consumers started in different applications,both in the 
> internal zone and in the DMZ, to connect to the broker.
> We were using 4.1 active mq till last week on our production enviornment and 
> were having some issues with the number of connections sometimes were getting 
> increased and hence after quite a bit of testing we tried to move to the 5.2 
> active mq. So we migrated on Monday 17Aug at around 0500 hours IST and it 
> worked fine till Friday 0840 hours IST and after that some listeners stopped 
> working. The consumers were showing connected but they were not receiving any 
> message from the broker. At the same time we saw some exception like this in 
> the broker (please note - we used journal with jdbc)
> --------------------------------------------------------
> :23 JournalPersistenceAdapter - Failed to mark the Journal: 
> org.apache.activeio.journal.InvalidRecordLocationException: The
> location is less than the last mark.
>  org.apache.activeio.journal.InvalidRecordLocationException: The location is 
> less than the last mark.
>        at 
> org.apache.activeio.journal.active.JournalImpl.setMark(JournalImpl.java:340)
>       at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter.doCheckpoint(JournalPersistenceAdapter.java:416)
>        at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter$1.iterate(JournalPersistenceAdapter.java:121)
>        at 
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
>        at 
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
> Source)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>        at java.lang.Thread.run(Unknown Source)
> ---------------------------------------------------------------------------------------------------------
> We then restarted the broker a few times (even deleted the journal and the 
> mesasges from DB as we did not wanted to process old messages in the system) 
> and then this started working. Now a problem of duplicate messages started 
> coming and checking for the net we got one fuse solution.."5.2.0.1-fuse" and 
> we patched this release at around 1730 Hours Friday 21 Aug IST. Also for 
> checking purpose we also changed our persistent strategy to AMP
> using the following 
> <persistenceAdapter>
>             <amqPersistenceAdapter syncOnWrite="false" 
> directory="./activemq-data" maxFileLength="100 mb"/>
>         </persistenceAdapter>
>         
> . This worked fine (note- with considerable better performance) till around 
> 2345 hours Friday 21 Aug IST and then again we started facing the same read 
> location issue and our listeners stopped getting message. (Please note - Not 
> all the listeners stopped. Somehow only the listeners in the DMZ zone 
> stopped. In the same application the producers (based on the pooled 
> connection factory) were working fine. Again in the broker the same error was 
> being seen
> -------------------------------------------------------------------------------------------------------------
> :23 JournalPersistenceAdapter - Failed to mark the Journal: 
> org.apache.activeio.journal.InvalidRecordLocationException: The
> location is less than the last mark.
>  org.apache.activeio.journal.InvalidRecordLocationException: The location is 
> less than the last mark.
>        at 
> org.apache.activeio.journal.active.JournalImpl.setMark(JournalImpl.java:340)
>       at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter.doCheckpoint(JournalPersistenceAdapter.java:416)
>        at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter$1.iterate(JournalPersistenceAdapter.java:121)
>        at 
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
>        at 
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
> Source)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>        at java.lang.Thread.run(Unknown Source)
> ------------------------------------------------------------------------------------------------------------------------------------------------
> Now we tried to restart the broker but we got some OOM issues - probably 
> because of the Amq persistence Adapter and hence we reverted back to our 
> normal journal and jdbc approach and started the broker. Our listener then 
> connected fine and started working. This was around 0300hours IST on Saturday 
> 22 Aug. It worked fine perfectly till about Saturday 22 Aug 2345 hours IST 
> when again we started seeing the following errors in the broker
> ----------------------------------------------------------------------------------------------------------------------------------------------
>  [ERROR] 00:12:22 JournalPersistenceAdapter - Failed to mark the Journal: 
> org.apache.activeio.journal.InvalidRecordLocationException: The location is 
> less than the last mark.
> INFO   | jvm 1    | 2009/08/23 00:12:23 | 
> org.apache.activeio.journal.InvalidRecordLocationException: The location is 
> less than the last mark.
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activeio.journal.active.JournalImpl.setMark(JournalImpl.java:340)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter.doCheckpoint(JournalPersistenceAdapter.java:416)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter$1.iterate(JournalPersistenceAdapter.java:121)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> java.lang.Thread.run(Unknown Source)
> INFO   | jvm 1    | 2009/08/23 00:12:23 | [ERROR] 00:12:23 
> JournalPersistenceAdapter - Failed to mark the Journal: 
> org.apache.activeio.journal.InvalidRecordLocationException: The location is 
> less than the last mark.
> INFO   | jvm 1    | 2009/08/23 00:12:23 | 
> org.apache.activeio.journal.InvalidRecordLocationException: The location is 
> less than the last mark.
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activeio.journal.active.JournalImpl.setMark(JournalImpl.java:340)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter.doCheckpoint(JournalPersistenceAdapter.java:416)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.store.journal.JournalPersistenceAdapter$1.iterate(JournalPersistenceAdapter.java:121)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> INFO   | jvm 1    | 2009/08/23 00:12:23 |       at 
> java.lang.Thread.run(Unknown Source)
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------
> and again our listeners stopped picking up messages. Now again we tried to 
> restart the broker and then the client but to no avail. Even we tried to put 
> the broker on the debug mode (logging) and see if we get any errors but none 
> were seen. By the ways the listener did not started picking up the message. 
> So in such desparate situations we tried the following things
> a) Restarting broker and client again and again - but to no avail
> b) change back to Amq persistent stragtegy but again to no avail - we got 
> this log in the broker log file
> -------------------------------------
> INFO   | jvm 1    | 2009/08/23 02:36:01 | [ERROR] 02:36:01 
> AbstractStoreCursor - Failed to fill batch
> INFO   | jvm 1    | 2009/08/23 02:36:01 | java.io.IOException: Failed to read 
> to journal for: offset = 692, file = 1, size = 0, type = 0. Reason: 
> java.io.IOException: Invalid location: offset = 692, file = 1, size = 0, type 
> = 0, : java.lang.NegativeArraySizeException
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.amq.AMQPersistenceAdapter.createReadException(AMQPersistenceAdapter.java:647)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.amq.AMQPersistenceAdapter.readCommand(AMQPersistenceAdapter.java:533)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.amq.AMQMessageStore.getMessage(AMQMessageStore.java:435)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.amq.RecoveryListenerAdapter.recoverMessageReference(RecoveryListenerAdapter.java:54)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.kahadaptor.KahaReferenceStore.recoverReference(KahaReferenceStore.java:82)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.kahadaptor.KahaReferenceStore.recoverNextMessages(KahaReferenceStore.java:120)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.amq.AMQMessageStore.recoverNextMessages(AMQMessageStore.java:533)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.cursors.QueueStorePrefetch.doFillBatch(QueueStorePrefetch.java:75)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:227)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:100)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:157)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1179)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.Queue.addSubscription(Queue.java:237)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:275)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:372)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:83)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:93)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:541)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:345)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:305)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> java.lang.Thread.run(Unknown Source)
> INFO   | jvm 1    | 2009/08/23 02:36:01 | Caused by: java.io.IOException: 
> Invalid location: offset = 692, file = 1, size = 0, type = 0, : 
> java.lang.NegativeArraySizeException
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.kaha.impl.async.DataFileAccessor.readRecord(DataFileAccessor.java:94)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.kaha.impl.async.AsyncDataManager.read(AsyncDataManager.java:624)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.store.amq.AMQPersistenceAdapter.readCommand(AMQPersistenceAdapter.java:530)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 ... 29 more
> INFO   | jvm 1    | 2009/08/23 02:36:01 | [ERROR] 02:36:01 
> AbstractStoreCursor - Failed to fill batch
> INFO   | jvm 1    | 2009/08/23 02:36:01 | java.lang.RuntimeException: 
> java.io.IOException: Failed to read to journal for: offset = 692, file = 1, 
> size = 0, type = 0. Reason: java.io.IOException: Invalid location: offset = 
> 692, file = 1, size = 0, type = 0, : java.lang.NegativeArraySizeException
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:230)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:100)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.cursors.StoreQueueCursor.reset(StoreQueueCursor.java:157)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1179)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.Queue.addSubscription(Queue.java:237)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:275)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:372)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:83)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:86)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:93)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.TransportConnection.processAddConsumer(TransportConnection.java:541)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:345)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:305)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 at 
> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
> INFO   | jvm 1    | 2009/08/23 02:36:01 |                 
> ----------------------------------------------------------------------------------
> Now it was around 0300 hours on Sunday 23 Aug IST and we were loosing time. 
> So just in some silly mind we tried to revert back to 4.1 Active mq leaving 
> other things untouched..And to a matter of disbeleif it started working. And 
> the listeners started picking up messages (Even old one from the DB were 
> picked  - whcih means 5.2 is backward compliant as well) and it worked fine.
> We are now seriously considering not to take any change with any other 
> version of Active MQ other than 4.1. Please advice if we are doing somehting 
> wrong here. Also i am attaching both my activemq.xml from 5.2 and 4.1

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to