Problem reading from large queues
lindsey Jul 19, 2002 2:45 PMI've been running some tests using a Postgres-backed queue for queue sizes exceeding 500 megs. Everything seems to go into the queue fine. As memory fills up, cache files are being written to move messages out of ram. To force writing to the file system by the cache for testing, I set the low and high mark for caching to 64 megs. The problem occurs when I try to read the messages back out. I get the following exception that indicates it can't find one of the cache files:
org.jboss.mq.SpyJMSException: Could not load message from secondary storage:
at org.jboss.mq.pm.file.CacheStore.loadFromStorage(CacheStore.java:54)
at org.jboss.mq.server.MessageCache.loadFromStorage(MessageCache.java:245)
at org.jboss.mq.server.MessageReference.makeHard(MessageReference.java:207)
at org.jboss.mq.server.MessageReference.getMessage(MessageReference.java:93)
at org.jboss.mq.server.BasicQueue.setupMessageAcknowledgement(BasicQueue.java:341)
at org.jboss.mq.server.BasicQueue.receive(BasicQueue.java:206)
at org.jboss.mq.server.JMSQueue.receive(JMSQueue.java:117)
at org.jboss.mq.server.ClientConsumer.receive(ClientConsumer.java:207)
at org.jboss.mq.server.JMSDestinationManager.receive(JMSDestinationManager.java:668)
at org.jboss.mq.server.JMSServerInterceptorSupport.receive(JMSServerInterceptorSupport.java:225)
at org.jboss.mq.security.ServerSecurityInterceptor.receive(ServerSecurityInterceptor.java:96)
at org.jboss.mq.server.TracingInterceptor.receive(TracingInterceptor.java:422)
at org.jboss.mq.server.JMSServerInvoker.receive(JMSServerInvoker.java:227)
at org.jboss.mq.il.oil.OILServerILService$Client.run(OILServerILService.java:279)
at java.lang.Thread.run(Thread.java:536)
linked exception is:
java.io.FileNotFoundException: /home/aaron/jboss/dist/jboss-3.0.0_tomcat-4.0.3/server/default/tmp/jbossmq/Message-0 (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:103)
at org.jboss.mq.pm.file.CacheStore.loadFromStorage(CacheStore.java:47)
at org.jboss.mq.server.MessageCache.loadFromStorage(MessageCache.java:245)
at org.jboss.mq.server.MessageReference.makeHard(MessageReference.java:207)
at org.jboss.mq.server.MessageReference.getMessage(MessageReference.java:93)
at org.jboss.mq.server.BasicQueue.setupMessageAcknowledgement(BasicQueue.java:341)
at org.jboss.mq.server.BasicQueue.receive(BasicQueue.java:206)
at org.jboss.mq.server.JMSQueue.receive(JMSQueue.java:117)
at org.jboss.mq.server.ClientConsumer.receive(ClientConsumer.java:207)
at org.jboss.mq.server.JMSDestinationManager.receive(JMSDestinationManager.java:668)
at org.jboss.mq.server.JMSServerInterceptorSupport.receive(JMSServerInterceptorSupport.java:225)
at org.jboss.mq.security.ServerSecurityInterceptor.receive(ServerSecurityInterceptor.java:96)
at org.jboss.mq.server.TracingInterceptor.receive(TracingInterceptor.java:422)
at org.jboss.mq.server.JMSServerInvoker.receive(JMSServerInvoker.java:227)
at org.jboss.mq.il.oil.OILServerILService$Client.run(OILServerILService.java:279)
at java.lang.Thread.run(Thread.java:536)
I verified that Message-0 does not exist in the cache directory (the message files start at Message-1). Has anyone experienced anything similar? Are there any workarounds for this?
Here are the details of my system:
RH Linux 7.2
JDK-1.4 (1.3.1 exhibits the same behavior)
Postgres-7.1.3
JBoss-3.0.0 (3.0.1RC1 exhibits the same behavior)
Thanks,
Aaron