[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] [Created] (AMQ-4417) Unbalanced usage Exception in Valve.decrement
From:       "Vincent Baudry (JIRA)" <jira () apache ! org>
Date:       2013-03-29 9:35:15
Message-ID: JIRA.12639777.1364549639345.75332.1364549715818 () arcas
[Download RAW message or body]

Vincent Baudry created AMQ-4417:
-----------------------------------

             Summary: Unbalanced usage Exception in Valve.decrement
                 Key: AMQ-4417
                 URL: https://issues.apache.org/jira/browse/AMQ-4417
             Project: ActiveMQ
          Issue Type: Bug
    Affects Versions: 5.4.2
            Reporter: Vincent Baudry


One of our production node running ActiveMQ shows a permanent error log every \
milisecond :

Exception in thread "VMTransport" java.lang.IllegalStateException: Unbalanced usage: \
-274090111 at org.apache.activemq.thread.Valve.decrement(Valve.java:113) 
at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:210) 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:678)  \
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:703)  \
at java.lang.Thread.run(Thread.java:811) 

The value behind unbalanced usage keeping moving but globally getting decremented \
over time.

We are for now unable to see the side effect on the app, which is still running, \
except the CPU usage going through the roof, probably because of this constant \
logging.

As the log doesn't have a root in our code, it's hard to understand what's gone wrong \
initially, and if it might be linked to our usage of ActiveMQ.

I've read the source code but can't understand why the valve usage int has gone \
initially negative. But it seems to me that when it has gone once negative, the only \
way to have the broker work fine again is to restart the server to reinitialize this \
value (as all subsequent iterate() / increment() calls will throw/catch an exception \
due to usage negative value and finally hit the decrement() method ).

As we don't have a scenario to reproduce the bug, I don't expect you to find a \
solution to it right now, but I wanted to file it in case anyone encounter the same \
bug and has the way to reproduce it.

And also I would be glad to have answers to the following questions, if possible :
- Do you have any clues concerning this issue ? Things I could investigate further ?
- Doest it seem normal to you that my exception log starts in a Thread.run() then \
                plugged to the PooledTaskRunner mechanism ?
- What kind of ActiveMQ tasks run using this PooledTaskRunner / VmTransport.iterate() \
                mechanism ? All AMQ tasks ? Only enqueueing/dequeueing tasks ? \
                Internal tasks ?
- Is it possible that some enqueueing/dequeueing tasks still work fine when in this \
state ? Is this faulty valve not shared by all producers connecting to the broker via \
vm:// ?

To give you a little technical context, we use this broker with a spring producer \
using Spring JmsTemplate through vm://transport

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic