Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-1716

Deadlock with openjpa.Multithreaded=true

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 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
    • None
    • None
    • None

    Description

      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()
        Unknown macro: { 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>

      Attachments

        1. OPENJPA-1716.PATCH
          6 kB
          Richard G. Curtis
        2. deadlock-fix-OPENJPA-1716.patch.txt
          0.7 kB
          David Minor

        Activity

          People

            curtisr7 Richard G. Curtis
            stefanwo Stefan Wokusch
            Votes:
            1 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated: