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