I modified your case so that it's a JUnit test and so that it starts
an embedded broker.. I did not see the threading problem against the
trunk, but I did see :
javax.jms.JMSException: Java heap space
at
org
.apache
.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:
49)
at
org
.apache
.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:
1201)
at
org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1648)
at
org
.apache
.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:
227)
at
org
.apache
.activemq
.ActiveMQMessageProducerSupport
.send(ActiveMQMessageProducerSupport.java:300)
at org.apache.activemq.App.testSend(App.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun
.reflect
.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun
.reflect
.DelegatingMethodAccessorImpl
.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org
.eclipse
.jdt
.internal
.junit
.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at
org
.eclipse
.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org
.eclipse
.jdt
.internal
.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org
.eclipse
.jdt
.internal
.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org
.eclipse
.jdt
.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
386)
at
org
.eclipse
.jdt
.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
196)
Caused by: java.lang.OutOfMemoryError: Java heap space
at
org
.apache
.activemq
.util
.DataByteArrayOutputStream.<init>(DataByteArrayOutputStream.java:45)
at
org
.apache.activemq.kaha.impl.index.hash.HashIndex.load(HashIndex.java:
246)
at
org
.apache
.activemq
.kaha.impl.container.MapContainerImpl.load(MapContainerImpl.java:107)
at
org
.apache
.activemq
.store
.kahadaptor
.KahaPersistenceAdapter
.getSubsMapContainer(KahaPersistenceAdapter.java:222)
at
org
.apache
.activemq
.store
.kahadaptor
.KahaReferenceStoreAdapter
.createTopicReferenceStore(KahaReferenceStoreAdapter.java:171)
at
org
.apache
.activemq
.store
.amq
.AMQPersistenceAdapter
.createTopicMessageStore(AMQPersistenceAdapter.java:456)
at
org
.apache
.activemq
.broker
.region
.DestinationFactoryImpl
.createDestination(DestinationFactoryImpl.java:94)
at
org
.apache
.activemq
.broker.region.AbstractRegion.createDestination(AbstractRegion.java:
425)
at
org
.apache
.activemq
.broker
.jmx.ManagedTopicRegion.createDestination(ManagedTopicRegion.java:56)
at
org
.apache
.activemq
.broker.region.AbstractRegion.addDestination(AbstractRegion.java:120)
at
org
.apache
.activemq
.broker.region.RegionBroker.addDestination(RegionBroker.java:266)
at
org
.apache
.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:141)
at
org
.apache
.activemq
.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:147)
at
org
.apache
.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:141)
at
org
.apache
.activemq
.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:
148)
at
org
.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:
425)
at
org
.apache
.activemq.broker.TransactionBroker.send(TransactionBroker.java:224)
at
org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:125)
at
org
.apache
.activemq
.broker
.CompositeDestinationBroker.send(CompositeDestinationBroker.java:95)
at
org
.apache
.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:
132)
at
org
.apache
.activemq
.broker.TransportConnection.processMessage(TransportConnection.java:
437)
at
org
.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:
624)
at
org
.apache
.activemq
.broker.TransportConnection.service(TransportConnection.java:292)
at org.apache.activemq.broker.TransportConnection
$1.onCommand(TransportConnection.java:180)
at
org
.apache
.activemq
.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:104)
at
org
.apache
.activemq.transport.TransportFilter.onCommand(TransportFilter.java:
68)
at
org
.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:
205)
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(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:613)
If you run my modified test case do you still see the threading
issue?
Here's my new test case:
package org.apache.activemq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import junit.framework.TestCase;
public class App extends TestCase {
Connection conn;
@Override
protected void setUp() throws Exception {
ConnectionFactory cf = new ActiveMQConnectionFactory("vm://
localhost");
conn = cf.createConnection();
}
@Override
protected void tearDown() throws Exception {
conn.close();
}
public void testSend() throws JMSException {
Session session = conn.createSession(false,
Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(null);
for (int i = 0; i < 5000; i++) {
Destination destination = session.createTopic("TOPIC" + i);
TextMessage message = session.createTextMessage("");
producer.send(destination, message);
System.out.println("Sent: " + i+": "+Thread.activeCount());
}
producer.close();
}
}
On Fri, May 16, 2008 at 2:29 PM, Danilo Tuler <[EMAIL PROTECTED]>
wrote:
Hiram Chirino wrote:
Still it would be nice if you could create a test case that shows
the
problem and submit it so we can get to the root of the problem.
The attached code shows the problem.
With UseDedicatedTaskRunner=false it works ok.
http://www.nabble.com/file/p17281318/App.java App.java
--
View this message in context:
http://www.nabble.com/java.lang.OutOfMemoryError%3A-unable-to-create-new-native-thread-on-AMQ-5.0-tp17005441s2354p17281318.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
--
Regards,
Hiram
Blog: http://hiramchirino.com
Open Source SOA
http://open.iona.com