Cluster node shutdown thats allow ongoing transactions to finish gracefully
---------------------------------------------------------------------------
Key: EJBTHREE-1750
URL:
https://jira.jboss.org/jira/browse/EJBTHREE-1750
Project: EJB 3.0
Issue Type: Feature Request
Components: Clustering
Reporter: Galder Zamarreno
Extend EJBTHREE-1116 so that in-flight transactions, specially those initiated remotely,
are allowed to
finish and no new transactions are allowed.
EJBTHREE-1116 just blocks the shutdown until in-flight *invocations* complete, not until
*transactions*
complete. So a tx that's initiated on the client side that spans multiple invocations
can see the node
disappear in the middle. Our clustered EJB proxies don't allow failover in the middle
of a transaction,
so that means the client sees a failure.
EJBTHREE-1116, consider the following session bean method:
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void addUser(User user) {
em.persist(user);
}
If the node is shutdown after a client has called addUser(), the transaction will indeed
complete before
the shutdown commences, but only as a side effect of waiting for the invocation to
complete - the
BlockContainerShutdownInterceptor sits in the front of the interceptor chain. Subsequent
requests to
addUser(...) (i.e. new transactions) will fail once shutdown is initiated.
EJBTHREE-1116 doesn't cover transactions initiated from the client - nor invocations
from one ejb to another
(e.g. if addUser() tries to invoke a method on another ejb after shutdown is initiated).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira