[
https://issues.apache.org/jira/browse/OPENJPA-1716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13423288#comment-13423288
]
Rick Curtis commented on OPENJPA-1716:
--------------------------------------
> Should Multithreaded=true be dropped from OpenJPA then?
I'd love to say yet, but we have to assume that this property is in use by some
customers. Best case we could deprecate usage of the property.
> Also, should I worry about fetch groups? They are non-standard and we rely
> upon them for performance.
No, you have nothing to worry about with fetch groups. I think the real
sticking point is that Multithreaded=true wasn't every implemented correctly
and at this point no one has ponied up cycles for a complete fix.
> Deadlock with openjpa.Multithreaded=true
> ----------------------------------------
>
> Key: OPENJPA-1716
> URL: https://issues.apache.org/jira/browse/OPENJPA-1716
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 2.0.0-M1, 2.0.0-M2, 2.0.0-M3, 2.0.0-beta, 2.0.0-beta2,
> 2.0.0-beta3, 2.0.0
> Reporter: Stefan Wokusch
> Assignee: Rick Curtis
> Attachments: OPENJPA-1716.PATCH
>
>
> There is a Deadlock by using Multithreaded=true and work with some Threads on
> the same Entitymanager.
> After many hours of debugging, i found a solution for that Deadlock: The
> Problem could be solved by adding another lock into the lock Method of the
> StateManagerImpl:
> StateManagerImpl ~line3308
> /**
> * Lock the state manager if the multithreaded option is set.
> */
> protected void lock() {
> if (_instanceLock != null){
> _broker.lock();//<- This is the new Part to fix the Deadlock
> _instanceLock.lock();
> }
> }
> Worked for me without Problems for a long time.
> Some other Configurations:
> <persistence xmlns="http://java.sun.com/xml/ns/persistence"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
> <persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
> <mapping-file>orm.xml</mapping-file>
>
> <class>...</class>
> <class>...</class>
>
> <properties>
> <property name="openjpa.OrphanedKeyAction"
> value="log(Channel=Orphans, Level=TRACE)" />
> <property name="openjpa.ConnectionFactoryProperties"
> value="PrettyPrint=true, PrettyPrintLineLength=80" />
> <property name="openjpa.Multithreaded" value="true" />
> <property name="openjpa.InverseManager" value="true" />
> <property name="openjpa.LockManager" value="none" />
> <property name="openjpa.WriteLockLevel" value="none" />
> <property name="openjpa.Compatibility" value="
> QuotedNumbersInQueries=true,
> CopyOnDetach=true,
> cascadeWithDetach=true,
>
> superclassDiscriminatorStrategyByDefault=false
> " />
> <property name="openjpa.DetachState"
> value="fetch-groups" />
> <property name="openjpa.jdbc.SynchronizeMappings"
> value="buildSchema" />
> <!-- Default DataSource -->
> <property name="openjpa.ConnectionURL"
> value="jdbc:h2:db/test" />
> <property name="openjpa.ConnectionDriverName"
> value="org.h2.Driver" />
> </properties>
> </persistence-unit>
> </persistence>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira