You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2013/12/28 11:31:33 UTC

svn commit: r1553802 - /cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/map/ObjRelationship.java

Author: aadamchik
Date: Sat Dec 28 10:31:33 2013
New Revision: 1553802

URL: http://svn.apache.org/r1553802
Log:
CAY-1868 Select contention with multiple contexts

patch by Oleg Artyukevich

Modified:
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/map/ObjRelationship.java

Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/map/ObjRelationship.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/map/ObjRelationship.java?rev=1553802&r1=1553801&r2=1553802&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/map/ObjRelationship.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/map/ObjRelationship.java Sat Dec 28 10:31:33 2013
@@ -575,8 +575,16 @@ public class ObjRelationship extends Rel
      */
     synchronized void refreshFromDeferredPath() {
         if (deferredPath != null) {
-            refreshFromPath(deferredPath, true);
-            deferredPath = null;
+            
+            synchronized(this) {
+                
+                // check if another thread just 
+                // loaded path from deferredPath
+                if (deferredPath != null){
+                    refreshFromPath(deferredPath, true);
+                    deferredPath = null;
+                }
+            }
         }
     }
 
@@ -622,8 +630,6 @@ public class ObjRelationship extends Rel
      * Rebuild a list of relationships if String relationshipPath has changed.
      */
     final void refreshFromPath(String dbRelationshipPath, boolean stripInvalid) {
-        synchronized (this) {
-
             // remove existing relationships
             dbRelationships.clear();
 
@@ -652,7 +658,6 @@ public class ObjRelationship extends Rel
 
             recalculateToManyValue();
             recalculateReadOnlyValue();
-        }
     }
 
     /**