[wildfly-dev] EJB Transactions Graceful Shutdown

Richard Achmatowicz rachmato at redhat.com
Fri Dec 2 14:45:36 EST 2016


Another consideration ... but this may be outside the scope of what you 
are working on.

I assume that by "graceful shutdown for ejb transactions" you mean a 
feature to allow ejb transactions, which have been initiated before a 
shutdown, to be given a reasonable chance to complete after shutdown has 
been initiated, and so avoiding aborting a transaction just because a 
shutdown was initiated at an inappropriate time. In other words, the 
feature is specific to the case of when the server is being shutdown 
cleanly/gracefully. It's worht mentioning that in addition to shutdown 
of the server, undeploying a deployment containing ejbs (in the middle 
of a transaction) is going to have a similar negative impact on ejb 
transactions as initiating a shutdown. Also, if the deployment is 
clustered, there are possibilities for retrying on another available 
node; but as I mentioned before, there are issues with that too.

Just to say that "graceful shutdown" has different meanings in different 
deployment contexts.

Richard
On 02/12/16 01:29 PM, Richard Achmatowicz wrote:
>
> Hi Flavia
>
> Is there any overall design for this feature available to browse? For 
> example, there has long been a problem (and still is) with remotely 
> initiated transactions and the EJB client retry mechanism (both of 
> them) which associates an XA resource with one node at the beginning 
> of the transaction and then retries on another, completes on the 
> other, then tries to commit on the original XA node which has 
> shutdown. This is anything but clean.
>
> Richard
>
>
> On 02/12/16 11:56 AM, Flavia Rainone wrote:
>>
>> Hi,
>>
>> I'm creating this thread to discuss the remaining details of graceful 
>> shutdown for ejb transactions.
>>
>> This is more or less what I've done so far:
>>
>> https://github.com/fl4via/wildfly/commit/7017146522af9a979a8a8e0c92039e6a5fb18760
>>
>> While discussing this in the hip chat yesterday, Stuart mentioned 
>> that maybe we could have the transactions subsystem responsible for 
>> keeping track of how many active transactions we have, instead of 
>> putting that code in EjbRemoteTransactionsRepository.
>>
>> Stuart, does that include having the suspend callback being done at 
>> transactions subsystem as well? I'm thinking maybe not, because there 
>> are two points in the ejb subsystem we need to know if transactions 
>> suspension is over:
>>
>> - at EjbSuspendInterceptor if it is over, no request is allowed, if 
>> it is not over, we need to check if current invocation contains a 
>> reference to an active transaction
>>
>> - at some point, we need to let control point notify that the ejb 
>> module is no longer available to ejb client after transaction 
>> suspension is over, i.e., we need to do that when suspend has been 
>> requested and there are no remaining active transactions available.
>>
>> On the other hand, it is hard to draw the line between what should be 
>> in the transactions subsystem and what shouldn't. If the callback is 
>> done at transactions subsystem, we need a way of having ejb3 notified 
>> that it is done. If it is not done at transactions subsystem, ejb3 
>> has to be notified of the active transactions going to zero, which 
>> seems a lot of overhead, so from this point of view maybe the 
>> callback should be in the transactions system after all.
>>
>> Stuart and Gytis, any thoughts?
>> -- 
>> Flavia Rainone
>> Principal Software Engineer
>> JBoss EAP/WildFly Team
>> M: (+55) 11 981-225-466
>>
>> Red Hat.
>> Better technology.
>> Faster innovation.
>> Powered by community collaboration.
>>
>>
>> _______________________________________________
>> wildfly-dev mailing list
>> wildfly-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>
>
>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20161202/fae33814/attachment.html 


More information about the wildfly-dev mailing list