[ 
https://issues.apache.org/jira/browse/OPENJPA-161?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Patrick Linskey updated OPENJPA-161:
------------------------------------

    Attachment: openjpa-161-patch.txt

This patch removes the synchronization on _transactional, replacing it with a 
ConcurrentHashMap and using the ConcurrentHashMap.putIfAbsent() call to safely 
handle concurrent access. My analysis is that we do not need to synchronize on 
the lists inside _transactional, since the key that we look up the collection 
with is a JTA transaction, and JTA does not allow a transaction to be used 
concurrently in multiple threads.

Barring any objections, I plan to commit this change in the next day or so.

> Overuse of synchronization in AbstractBrokerFactory
> ---------------------------------------------------
>
>                 Key: OPENJPA-161
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-161
>             Project: OpenJPA
>          Issue Type: Improvement
>          Components: kernel
>            Reporter: Patrick Linskey
>         Attachments: openjpa-161-patch.txt
>
>
> AbstractBrokerFactory maintains a Map<Transaction,List<Broker>> that is 
> guarded by synchronized blocks. These synchronized blocks should be removed 
> if possible.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to