you need a nfs version that supports shared distributed locks, on your production box. nfsv4 should do the trick.
On 9 April 2010 01:33, Vishist Mandapaka <[email protected]> wrote: > Hi, > We've two brokers running on shared data-store mounted through NFS. > Broker version is 5.3.0 and jdk is 1.6.0. > Everything works fine in non-production environment. In production > environment, after startup, we see exceptions > that I can't seem to understand or reproduce in non-prod. environment. > > Any pointer towards this is really appreciated. > > Exception: > > java.lang.RuntimeException: Failed to index > > at > > org.apache.activemq.kaha.impl.index.DiskIndexLinkedList.refreshEntry(DiskIndexLinkedList.java:332) > > at > > org.apache.activemq.kaha.impl.container.ContainerValueCollectionIterator.<init>(ContainerValueCollectionIterator.java:39) > > at > > org.apache.activemq.kaha.impl.container.ContainerListIterator.<init>(ContainerListIterator.java:30) > > at > > org.apache.activemq.kaha.impl.container.ListContainerImpl.listIterator(ListContainerImpl.java:603) > > at > > org.apache.activemq.broker.region.cursors.FilePendingMessageCursor.reset(FilePendingMessageCursor.java:123) > > at org.apache.activemq.broker.region.Queue.doPageIn(Queue.java:1363) > > at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1503) > > at org.apache.activemq.broker.region.Queue.doBrowse(Queue.java:759) > > at org.apache.activemq.broker.region.Queue.expireMessages(Queue.java:588) > > at org.apache.activemq.broker.region.Queue.access$000(Queue.java:85) > > at org.apache.activemq.broker.region.Queue$2.run(Queue.java:116) > > at > > org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33) > > at java.util.TimerThread.mainLoop(Timer.java:512) > > at java.util.TimerThread.run(Timer.java:462) > > Caused by: java.io.IOException: Stale NFS file handle > > at java.io.RandomAccessFile.readBytes(Native Method) > > at java.io.RandomAccessFile.read(RandomAccessFile.java:322) > > at java.io.RandomAccessFile.readFully(RandomAccessFile.java:381) > > at > > org.apache.activemq.kaha.impl.index.StoreIndexReader.updateIndexes(StoreIndexReader.java:57) > > at > > org.apache.activemq.kaha.impl.index.IndexManager.refreshIndex(IndexManager.java:76) > > at > > org.apache.activemq.kaha.impl.index.DiskIndexLinkedList.refreshEntry(DiskIndexLinkedList.java:330) > > ... 13 more > > Broker cconfiguration: > <amq:broker brokerName="broker" persistent="true" useShutdownHook="true" > deleteAllMessagesOnStartup="false" advisorySupport="false" > dataDirectory="/sharedPath" useJmx="true" > > <amq:managementContext> > <amq:managementContext createConnector="false" /> > </amq:managementContext> > > <amq:persistenceAdapter> > <amq:amqPersistenceAdapter directory="/sharedPath" > maxFileLength="32mb" /> > </amq:persistenceAdapter> > > <amq:transportConnectors> > <amq:transportConnector uri="tcp:// > 0.0.0.0:61616?wireFormat.maxInactivityDuration=0"/> > </amq:transportConnectors> > > <amq:destinations> > <amq:queue id="queue1" physicalName="bqueue" /> > </amq:destinations> > > <amq:plugins> > <amq:loggingBrokerPlugin logAll="true" /> > </amq:plugins> > > <amq:destinationPolicy> > <amq:policyMap> > <amq:policyEntries> > <amq:policyEntry queue=">" producerFlowControl="true" > memoryLimit="1mb"> > <amq:pendingQueuePolicy> > <amq:fileQueueCursor/> > </amq:pendingQueuePolicy> > </amq:policyEntry> > </amq:policyEntries> > </amq:policyMap> > </amq:destinationPolicy> > > <amq:systemUsage> > <amq:systemUsage sendFailIfNoSpace="true"> > <amq:memoryUsage> > <amq:memoryUsage id="memoryUsage" limit="4 gb"/> > </amq:memoryUsage> > <amq:storeUsage> > <amq:storeUsage id="storeUsage" limit="10 gb" /> > </amq:storeUsage> > <amq:tempUsage> > <amq:tempUsage id="tempUsage" limit="10 gb" /> > </amq:tempUsage> > </amq:systemUsage> > </amq:systemUsage> > > </amq:broker> > -- http://blog.garytully.com Open Source Integration http://fusesource.com
