[
https://issues.jboss.org/browse/AS7-5539?page=com.atlassian.jira.plugin.s...
]
Stephen Coy commented on AS7-5539:
----------------------------------
I believe that you misunderstand how this works. (This doesn't mean the behaviour you
are seeing is not a bug).
There will always be two transactions. Generically speaking, you must use XA when using
JMS because you are mixing two different types of transactional resource.
* database
* JMS queue
The first transaction (assuming you're not using REQUIRES_NEW anywhere), will perform
the find (DB) operation and return the CMP entity bean. From what I understand, you are
then queuing some "update data" (what exactly is this?). In any event, this
message and payload will not be delivered to your MDB until this first transaction is
committed.
The MDB will subsequently process the message payload in a new XA transaction (it's
going to use database resources as well as JMS resources).
If you can give us an idea of what is in your message payload and what processing happens
in the MDB we will have a better understanding of the problem.
Also, are you by any chance waiting for a JMS reply in the first transaction?
JBOSS7 server hangs up completely when a EJB2.1 entity bean business
method is called in same transaction in a separate thread from the thread which started
the transaction
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: AS7-5539
URL:
https://issues.jboss.org/browse/AS7-5539
Project: Application Server 7
Issue Type: Bug
Components: EJB, Transactions
Affects Versions: 7.1.1.Final, 7.1.3.Final (EAP), 7.2.0.Alpha1
Reporter: Mayank Gupta
Assignee: jaikiran pai
JBOSS7 server hangs up completely while trying to access a EJB2.1 entity bean method in a
specific scenario.
I am using a session facade pattern in which I call my EntityBean from a Stateless
session bean. For moth the beans I have defined the transaction attribute as REQUIRED.
On debugging the code I found that if the same Entity bean is accessed from two different
threads in same transaction then this issue occurs.
So for the first time my code enters "EntityBeanSynchronizationInterceptor"
code is able to take the lock and assign the requester thread as the lock owner. When
second time it comes to access the same entity bean from different thread in SAME
TRANSACTION (as 2nd required results in joining the transaction), JBOSS7 server code
completely stalls in taking the lock. Moreover this time requester thread is not given the
owner status of the transaction.
Code snippet where code hangs:
final Object lockOwner = getLockOwner(transactionSynchronizationRegistry);
lock.pushOwner(lockOwner);
try {
lock.lock(); //line 80 in EntityBeanSynchronizationInterceptor
and subsequently in:
public void lock() {
if (compareAndSetState(0, 1))
owner = currentRequestor();
else
acquire(1); //Here line 86 in OwnableReentrantLock
}
This is a completely blocking issue for migrating my application from JBOSS6 to JBOSS7.
I get this error in numerous places in my application code.
--
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