You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2006/12/19 08:26:46 UTC

svn commit: r488564 - in /portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed: om/folder/impl/FolderImpl.java page/impl/DatabasePageManagerUtils.java

Author: taylor
Date: Mon Dec 18 23:26:45 2006
New Revision: 488564

URL: http://svn.apache.org/viewvc?view=rev&rev=488564
Log:
http://issues.apache.org/jira/browse/JS2-613
ConcurrentModificationException under high load
patch from Ethan Adams to fix concurrency issues

Modified:
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManagerUtils.java

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java?view=diff&rev=488564&r1=488563&r2=488564
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java Mon Dec 18 23:26:45 2006
@@ -338,25 +338,28 @@
         if (cached)
         {
             // populate node caches
-            Iterator nodeIter = accessAll().iterator();
-            while (nodeIter.hasNext())
+            synchronized(all)
             {
-                Node node = (Node)nodeIter.next();
-                if (node instanceof PageImpl)
+                Iterator nodeIter = accessAll().iterator();
+                while (nodeIter.hasNext())
                 {
-                    pages.add(node);
-                }
-                else if (node instanceof FolderImpl)
-                {
-                    folders.add(node);
-                }
-                else if (node instanceof LinkImpl)
-                {
-                    links.add(node);
-                }
-                else if (node instanceof PageSecurityImpl)
-                {
-                    pageSecurity = (PageSecurityImpl)node;
+                    Node node = (Node)nodeIter.next();
+                    if (node instanceof PageImpl)
+                    {
+                        pages.add(node);
+                    }
+                    else if (node instanceof FolderImpl)
+                    {
+                        folders.add(node);
+                    }
+                    else if (node instanceof LinkImpl)
+                    {
+                        links.add(node);
+                    }
+                    else if (node instanceof PageSecurityImpl)
+                    {
+                        pageSecurity = (PageSecurityImpl)node;
+                    }
                 }
             }
         }
@@ -1014,7 +1017,12 @@
         {
             if ((all != null) && !all.isEmpty())
             {
-                allNodeSet = new NodeSetImpl(all, createDocumentOrderComparator());
+                List allCopy = new java.util.ArrayList();
+                synchronized(all)
+                {
+                    allCopy.addAll(all); 
+                }
+                allNodeSet = new NodeSetImpl(allCopy, createDocumentOrderComparator());
             }
             else
             {

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManagerUtils.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManagerUtils.java?view=diff&rev=488564&r1=488563&r2=488564
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManagerUtils.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManagerUtils.java Mon Dec 18 23:26:45 2006
@@ -45,12 +45,12 @@
      */
     public static final Collection createCollection()
     {
-        return new RemovalAwareCollection();
+        return java.util.Collections.synchronizedCollection(new RemovalAwareCollection());
     }
     
     public static final List createList()
     {
-        return new RemovalAwareList();
+        return java.util.Collections.synchronizedList(new RemovalAwareList());
     }
     
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org