[ 
https://issues.apache.org/activemq/browse/AMQ-528?page=comments#action_36462 ] 

Holger Hoffstätte commented on AMQ-528:
---------------------------------------

This one is *really* weird so I decided to ask Dawid Kurzyniec what might cause 
this. Here's his reply:

Dawid Kurzyniec wrote:
> Holger Hoffstätte wrote:
>> Hello Dawid -
>>
>> Could you please have a quick look at
>> https://issues.apache.org/activemq/browse/AMQ-528 and maybe post a
>> comment if you have any idea what might be going wrong there? It's very 
>> weird.
>>
> 
> I think the exception may be originating from native code
> (perf.highResCounter()). I suppose that something is freed in the JVM in
> the course of the shutdown, making it respond badly to highResCounter
> and resulting in the exception. (I've seen some analogous behavior with
> Java 1.4 logging: the loggers won't initialize during shutdown, so they
> won't print anything unless they did before the shutdown initiated).
> 
> If this is the case, there's not much there can be done about it, except
> 1) trying a different JVM, or 2) switching to a different NanoTimer (for
> instance,
>-Dedu.emory.mathcs.backport.java.util.concurrent.NanoTimerProvider=edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils.MillisProvider,
> or to use a custom nanotimer if you need more than ms granularity).
> 
> Regards,
> Dawid
> 

I'll try to see if the native JDK 1.5 nanoTimer could be used dynamically; this 
might help. The other thing that the stack traces show is that the queue in 
question is the work queue of an ExecutorService, so it seems to me that 
properly shutting down that service would also solve the problem of the timer 
going away prematurely.


> 4.0 M4 NullPointerException while shutting down
> -----------------------------------------------
>
>          Key: AMQ-528
>          URL: https://issues.apache.org/activemq/browse/AMQ-528
>      Project: ActiveMQ
>         Type: Bug

>     Versions: 4.0 M4
>  Environment: RedHat Linux Enterprise Server 3, Tomcat 5.5.15, MySQL 5.0.18 
> for Linux
>     Reporter: Leon Hu
>     Priority: Critical
>      Fix For: 4.0 RC2

>
>
> Setup: 
> 3 networked brokers, B1, B2, and B3, on 3 servers, connected using multicast 
> discovery. activemq.xml: 
>  <broker useJmx="false" brokerName="B1"> 
>   
>  <persistenceAdapter> 
>         <journaledJDBC journalLogFiles="5" dataDirectory="foo" 
> dataSource="#mysql-ds"/> 
>  </persistenceAdapter> 
>   
>  <transportConnectors> 
>  <transportConnector uri="tcp://localhost:61616" 
> discoveryUri="multicast://default"/> 
>  </transportConnectors> 
>   
>  <networkConnectors> 
>  <networkConnector uri="multicast://default"/> 
>  </networkConnectors> 
>   
>  </broker> 
>   
>  <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" 
> destroy-method="close"> 
>            <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
>            <property name="url" 
> value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/> 
>                  <property name="username" value="activemqUser"/> 
>                  <property name="password" value="activemqPwd"/> 
>                  <property name="poolPreparedStatements" value="true"/> 
>  </bean> 
> Similar for B2 and B3. 
> Two queues: Q1 and Q2. 
> Two producers, one for each queue, both producers connected to B1. 
> One Q1 cosumer connected to B1, another Q1 consumer on B2. 
> One Q2 consumer connected to B2, another Q2 consumer connected to B3. 
> Steps: 
> Start the brokers and start sending messages to the queue. 
> After a while, stop the brokers (Sequence does not matter) 
> See the errors in catalina.out of the Tomcat that has a broker with both 
> producers and consumers connected 
> The problems:
> 1. 
> Exception in thread "ActiveMQ Scheduler" java.lang.NullPointerException
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils$SunPerfProvider.nanoTime(Utils.java:219)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils.nanoTime(Utils.java:99)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor.now(ScheduledThreadPoolExecutor.java:88)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.getDelay(ScheduledThreadPoolExecutor.java:137)
>  Exception in thread "ActiveMQ Scheduler" Exception in thread "ActiveMQ 
> Scheduler" Exception in thread "ActiveMQ Scheduler"      at 
> edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:154)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:667)
>          at java.lang.Thread.run(Thread.java:595)
>  java.lang.NullPointerException
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils$SunPerfProvider.nanoTime(Utils.java:219)
>  Exception in thread "ActiveMQ Scheduler" Exception in thread "ActiveMQ 
> Scheduler" Exception in thread "ActiveMQ Scheduler"      at 
> edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils.nanoTime(Utils.java:99)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor.now(ScheduledThreadPoolExecutor.java:88)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.getDelay(ScheduledThreadPoolExecutor.java:137)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.DelayQueue.take(DelayQueue.java:154)
>          at 
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470)
>  Exception in thread "ActiveMQ Scheduler" Exception in thread "ActiveMQ 
> Scheduler"       at 
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:667)
>          at java.lang.Thread.run(Thread.java:595)
> 2. The same exception is logged to the log file (in my case catalina.out) for 
> hundreds of times, resulting a log file exceeding 150 MB in 2 minutes. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to