Issue Details (XML | Word | Printable)

Key: OPENJPA-115
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Critical Critical
Assignee: Kevin Sutter
Reporter: Kevin Sutter
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
OpenJPA

Bottleneck(s) with using OpenJPA in a Container-managed environment

Created: 29/Jan/07 07:20 PM   Updated: 31/Jul/07 07:00 PM
Return to search
Component/s: kernel
Affects Version/s: None
Fix Version/s: 0.9.7

Time Tracking:
Issue & Sub-Tasks
Issue Only
Not Specified

Resolution Date: 01/Feb/07 10:57 PM

Sub-Tasks  All   Open   

 Description  « Hide
Running some benchmarks against OpenJPA using the Sun Java System (SunOne) application server. Under load, we're not able to push the cpu to 100%. The culprit seems to be the lock and synchronization processing within AbstractBrokerFactory.newBroker(..). According to sections 5.9.1 and 5.9.2 in the JPA specification, it looks like OpenJPA is attempting to do too much management of the created EntityManagers. Within a Container-managed environment, the Container takes care of the lifecycle of the EntityManagers. So, there does not seem to be a need to do the findBroker(..) invocation, nor is there a need to keep track of the created EntityManagers (_brokers) so that they can be closed when the Factory is closed.

Once we have verified these changes, there may be others that are needed. But, we have to get by this bottleneck first before going to the next layer...

Kevin

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Repository Revision Date User Message
ASF #502392 Thu Feb 01 22:53:20 UTC 2007 kwsutter Changes for OPENJPA-115. Removed the explicit lock/unlock invocations when obtaining an EM (broker). Changed
_brokers to use ConcurrentReferenceHashSet (with weak references). And, due to the weak references (probable
cause), I had to check for nulls when iterating through the _brokers during the close processing.
Files Changed
MODIFY /incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java