[wildfly-dev] discussion about JSR352 Batch and JPA
Scott Marlow
smarlow at redhat.com
Wed Sep 18 08:54:35 EDT 2013
What are the requirements for supporting Batch section 11.6 [1]? From
looking at JSR352, I get that each "chunk" has its own JTA transaction.
I previously had heard that we only supported starting the transaction
from the application processing code (via UserTransaction) but I think
the Batch container/runtime should start a JTA transaction for each
"chunk" that is processed. What are we really doing for managing the
JTA transactions for batch?
REGULAR CHUNK PROCESSING & JPA
For the JPA support for regular chunk processing [1], the following will
give a new underlying persistence context per chunk (jta tx):
@PersistenceContext(unitName = "chunkNonpartitionedAZTT4443334")
EntityManager em;
PARTITIONED CHUNK PROCESSING & JPA
For the JPA support for partitioned chunk processing [2], the following
will give a new underlying persistence context per chunk (jta tx):
@PersistenceContext(unitName = "chunkpartitionedAZTT4443334")
EntityManager em;
One concern that I have about partitioning is the performance impact of
deadlocking and waiting for the JTA transaction to time out. Depending
on whether the work is configured to retry or not, hitting several dead
locks in a batch process could defeat some of the performance gains of
partitioning. Avoiding deadlocks by always reading/writing/locking the
underlying database resources in the same exact order, would help avoid
deadlocks.
Beyond the basic JPA capability of ensuring that each "chunk", has its
own persistence context, how else can we help the batch processing
experts writing JSR-352 applications on WildFly/Hibernate?
Anything else to discuss about JPA & Batch?
[1] Batch spec section section 11.6 Regular Chunk Processing
https://gist.github.com/scottmarlow/6603746
[2] Batch spec section Batch 11.7 Partitioned Chunk Processing
https://gist.github.com/scottmarlow/6607667
[3] persistence.xml https://gist.github.com/scottmarlow/6608533
More information about the wildfly-dev
mailing list