On Apr 20, 2010, at 3:23 PM, Andy wrote:

On 20.04.2010 22:57, David Blevins wrote:

On Apr 20, 2010, at 1:20 AM, Andy Gumbrecht wrote:

Can a committer please check and apply this patch to trunk.

https://issues.apache.org/jira/browse/OPENEJB-1249


Hey Andy!

We have that same code for shutting down the RAs in the Assembler.destroy() method (which is called from OpenEJB.destroy()). I tried a similar patch but ran into the ActiveMQ Resource Adapter hang I posted about. Maybe you might have better luck. I've attached it to the JIRA.

 https://issues.apache.org/jira/secure/attachment/12442347/Server.java.patch

If that works for you I'll go ahead and commit it.

-David


Hi David,

I have been using the posted 'stop' patch in a pre-production, but very heavily tested, environment. I have had no obvious issues with a remote shutdown of the ActiveMQ RA, but will now have a deeper look to make sure I am not hiding anything.

I have been playing around with the current ActiveMQ RA start/stop code, so maybe I have a fix even though I can't reproduce a hang. I'll post a patch for review when it's up to scratch.

However, this story may help in the hunt for the hang. The Quartz RA had proved to be the real show stopper for me - though this is not an issue I can really confirm yet, as I cannot find the cause. I really thought it was an ActiveMQ hang, and struggled for several days on dumps that 'always' pointed to ActiveMQ code. Eventually I found that if I cut out ActiveMQ then I'd get a startup, but then deploying apps using my custom deployer bean (based on Deployer) was hanging during the deploy at various locations, but this time nearly always in Derby code during persistence unit creation. I was pulling my hair out until for some reason I pulled out the Quartz RA - and everything started working.

I never once saw anything to do with Quartz in thread dumps that could/should be anything to do with a hang, but I can reproduce 'my' ActiveMQ/Derby/Deployer hang every time just by dropping Quartz into the brew. I am now fairly sure this is a RA class loading issue, but it currently beats me as to where and how to pin this down - it is one of the strangest hangs I have ever had. Nothing locked or blocked, but most definitely waiting on 'something' at some point after the Quartz RA start, and always near or on a Class.forName call in either ActiveMQ or Derby.

Very interesting. And very glad to hear you've been looking into it. It's a tough one.

Maybe there's something we need to fix on the Quartz RA side. Tricky thing is in EJB 3.1 we'll be using Quartz heavily to support the new @Schedule annotation, so if there are issues, they've just started.

Have you noticed any of this on Java 6?

I have been tinkering with the the TempClassLoader, but to no avail - although as a nice side effect I found that reusing the 'peek' ByteArrayStream (the method is synchronized anyway) much reduced memory peaks during class loading, I'll post that for review soon.

Nice!

I'll annoy you some more later.

Looking forward to it :)

Have a nice day.

You too.

-David

Reply via email to