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 wo...@apache.org on 2007/10/24 07:34:09 UTC

svn commit: r587795 - /portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java

Author: woonsan
Date: Tue Oct 23 22:34:08 2007
New Revision: 587795

URL: http://svn.apache.org/viewvc?rev=587795&view=rev
Log:
[JS2-785] Parallel Rendering on Websphere 6.1

David's testings found this problem:

java.util.ConcurrentModificationException: concurrent access to HashMap attempted by Thread[WORKER_15,5,Workers]
at java.util.HashMap.onEntry(HashMap.java:205)
at java.util.HashMap.transfer(HashMap.java:510)
at java.util.HashMap.resize(HashMap.java:500)
at java.util.HashMap.addEntry(HashMap.java:800)
at java.util.HashMap.put(HashMap.java:441)
at com.ibm.ws.webcontainer.srt.SRTServletRequest.setAttribute(SRTServletRequest.java:466)
at javax.servlet.ServletRequestWrapper.setAttribute(ServletRequestWrapper.java:329)
at org.apache.jetspeed.engine.servlet.ServletRequestImpl.setAttributeInternal(ServletRequestImpl.java:670)
at org.apache.jetspeed.engine.servlet.ServletRequestImpl.setAttribute(ServletRequestImpl.java:647)
at org.apache.jetspeed.services.information.InformationProviderServiceImpl.getDynamicProvider(InformationProviderServiceImpl.java:63)

Invoking request.setAttribute() in InformationProviderServiceImpl should be synchronized.

Modified:
    portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java

Modified: portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java?rev=587795&r1=587794&r2=587795&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java (original)
+++ portals/jetspeed-2/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/services/information/InformationProviderServiceImpl.java Tue Oct 23 22:34:08 2007
@@ -25,6 +25,8 @@
 import org.apache.pluto.services.information.InformationProviderService;
 import org.apache.pluto.services.information.StaticInformationProvider;
 
+import org.apache.jetspeed.aggregator.CurrentWorkerContext;
+
 /**
  * Factory class for getting Information Provider access
  *
@@ -60,7 +62,18 @@
         if (provider == null)
         {
             provider = new DynamicInformationProviderImpl(request, servletConfig);
-            request.setAttribute("org.apache.jetspeed.engine.core.DynamicInformationProvider", provider);
+            
+            if (CurrentWorkerContext.getParallelRenderingMode())
+            {
+                synchronized (request)
+                {
+                    request.setAttribute("org.apache.jetspeed.engine.core.DynamicInformationProvider", provider);
+                }
+            }
+            else
+            {
+                request.setAttribute("org.apache.jetspeed.engine.core.DynamicInformationProvider", provider);
+            }
         }
 
         return provider;



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