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/08/23 05:00:42 UTC

svn commit: r568811 - in /portals/jetspeed-2/branches/JETSPEED-2.1.3/components: page-manager/src/java/org/apache/jetspeed/om/folder/psml/ page-manager/src/java/org/apache/jetspeed/om/page/ page-manager/src/java/org/apache/jetspeed/om/page/psml/ page-m...

Author: woonsan
Date: Wed Aug 22 20:00:37 2007
New Revision: 568811

URL: http://svn.apache.org/viewvc?rev=568811&view=rev
Log:
I have done performance load testings, looked into error logs and fixed those errors.

1. ConcurrentModificationException on the first load testing.
 - Because there's no page cache element, multiple threads try to initialize node set, menu elements, localized text map, or security constraints map. So, I added some minimal synchronization codes to be required.
2. PortalStatisticsImpl.java also tries to start batch threads at the first time. Synchronization codes are added.
3. BaseDecoration's info loggings for basePath and baseClientPath should be debug loggings, IMO.
4. AsyncPageAggregatorImpl.java now has a info logging to show how the aggregation works like the following:
"2007-08-23 11:38:39,877 [http-8880-Processor299] INFO  org.apache.jetspeed.aggregator.impl.AsyncPageAggregatorImpl - Aggregating /multipleportlets.psml. Parallel: 4, Sequential: 0"
So, administrator can be informed of what type of aggregating mode by setting the log level to INFO.

Modified:
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/PageMetadataImpl.java
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/SecurityConstraintsImpl.java
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/page/document/psml/NodeSetImpl.java
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal-site/src/java/org/apache/jetspeed/portalsite/menu/StandardNavigationsMenuDefinition.java
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/decoration/BaseDecoration.java
    portals/jetspeed-2/branches/JETSPEED-2.1.3/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/FolderImpl.java Wed Aug 22 20:00:37 2007
@@ -502,7 +502,7 @@
      * @return all nodes immediatley under this
      * @throws DocumentException
      */
-    public NodeSet getAllNodes() throws DocumentException
+    public synchronized NodeSet getAllNodes() throws DocumentException
     {
         if((allNodes == null) && (folderHandler != null))
         {            

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/PageMetadataImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/PageMetadataImpl.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/PageMetadataImpl.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/PageMetadataImpl.java Wed Aug 22 20:00:37 2007
@@ -21,6 +21,7 @@
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Collections;
 
 import org.apache.jetspeed.om.common.LocalizedField;
 import org.apache.jetspeed.om.impl.GenericMetadataImpl;
@@ -86,7 +87,7 @@
             {
                 if (localizedText == null)
                 {
-                    localizedText = new HashMap(getFields().size());
+                    localizedText = Collections.synchronizedMap(new HashMap(getFields().size()));
                 }
                 namedLocalizedText = new HashMap(getFields().size());
                 localizedText.put(name, namedLocalizedText);

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/SecurityConstraintsImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/SecurityConstraintsImpl.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/SecurityConstraintsImpl.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/SecurityConstraintsImpl.java Wed Aug 22 20:00:37 2007
@@ -238,7 +238,7 @@
      * @param pageSecurity
      * @return all security constraints
      */
-    private List getAllSecurityConstraints(PageSecurity pageSecurity)
+    private synchronized List getAllSecurityConstraints(PageSecurity pageSecurity)
     {
         // return previously cached security constraints; note that
         // cache is assumed valid until owning document is evicted

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/page/document/psml/NodeSetImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/page/document/psml/NodeSetImpl.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/page/document/psml/NodeSetImpl.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/page-manager/src/java/org/apache/jetspeed/page/document/psml/NodeSetImpl.java Wed Aug 22 20:00:37 2007
@@ -159,7 +159,6 @@
         if (subset == null)
         {
             subset = new NodeSetImpl(resolveToPath, comparator);
-            subsets.put(type, subset);
 
             Iterator nodeItr = nodes.values().iterator();
             while (nodeItr.hasNext())
@@ -169,6 +168,11 @@
                 {
                     subset.add(node);
                 }
+            }
+            
+            synchronized (subsets)
+            {
+                subsets.put(type, subset);
             }
         }
 

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal-site/src/java/org/apache/jetspeed/portalsite/menu/StandardNavigationsMenuDefinition.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal-site/src/java/org/apache/jetspeed/portalsite/menu/StandardNavigationsMenuDefinition.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal-site/src/java/org/apache/jetspeed/portalsite/menu/StandardNavigationsMenuDefinition.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal-site/src/java/org/apache/jetspeed/portalsite/menu/StandardNavigationsMenuDefinition.java Wed Aug 22 20:00:37 2007
@@ -70,7 +70,7 @@
      *
      * @return element list
      */
-    public List getMenuElements()
+    public synchronized List getMenuElements()
     {
         // instantiate menu elements if necessary
         if (menuElements == null)

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/aggregator/impl/AsyncPageAggregatorImpl.java Wed Aug 22 20:00:37 2007
@@ -189,8 +189,15 @@
         if (!isRoot)
             return;
         
+        int parallelJobCount = parallelJobs.size();
+        int sequentialJobCount = sequentialJobs.size();
         
-        CurrentWorkerContext.setCurrentWorkerContextUsed(parallelJobs.size() > 0 && sequentialJobs.size() > 0);
+        if (log.isInfoEnabled())
+        {
+            log.info("Aggregating " + page.getPath() + ". Parallel: " + parallelJobCount + ", Sequential: " + sequentialJobCount);
+        }
+        
+        CurrentWorkerContext.setCurrentWorkerContextUsed(parallelJobCount > 0 && sequentialJobCount > 0);
 
         // kick off the parallel rendering jobs
         Iterator iter = parallelJobs.iterator();

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/decoration/BaseDecoration.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/decoration/BaseDecoration.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/decoration/BaseDecoration.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/portal/src/java/org/apache/jetspeed/decoration/BaseDecoration.java Wed Aug 22 20:00:37 2007
@@ -97,9 +97,11 @@
             this.desktopStylesheet = null;
         }
         
-        log.info( "BaseDecoration basePath: " + basePath.toString() );
-        log.info( "BaseDecoration baseClientPath: " + baseClientPath.toString() );
-        
+        if (log.isDebugEnabled())
+        {
+            log.debug( "BaseDecoration basePath: " + basePath.toString() );
+            log.debug( "BaseDecoration baseClientPath: " + baseClientPath.toString() );
+        }
     }
     
     public void init(Properties config, ResourceValidator validator, PathResolverCache cache)

Modified: portals/jetspeed-2/branches/JETSPEED-2.1.3/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/branches/JETSPEED-2.1.3/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java?rev=568811&r1=568810&r2=568811&view=diff
==============================================================================
--- portals/jetspeed-2/branches/JETSPEED-2.1.3/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java (original)
+++ portals/jetspeed-2/branches/JETSPEED-2.1.3/components/statistics/src/java/org/apache/jetspeed/statistics/impl/PortalStatisticsImpl.java Wed Aug 22 20:00:37 2007
@@ -208,10 +208,16 @@
         {
             if (portletBatch == null)
             {
-                portletBatch = new BatchedPortletStatistics(ds,
-                        this.maxRecordToFlush_Portlet,
-                        this.maxTimeMsToFlush_Portlet, "portletLogBatcher");
-                portletBatch.startThread();
+                synchronized (this)
+                {
+                    if (portletBatch == null)
+                    {
+                        portletBatch = new BatchedPortletStatistics(ds,
+                                this.maxRecordToFlush_Portlet,
+                                this.maxTimeMsToFlush_Portlet, "portletLogBatcher");
+                        portletBatch.startThread();
+                    }
+                }
             }
             portletBatch.addStatistic(record);
 
@@ -220,10 +226,16 @@
         {
             if (pageBatch == null)
             {
-                pageBatch = new BatchedPageStatistics(ds,
-                        this.maxRecordToFlush_Page, this.maxTimeMsToFlush_Page,
-                        "pageLogBatcher");
-                pageBatch.startThread();
+                synchronized (this)
+                {
+                    if (pageBatch == null)
+                    {
+                        pageBatch = new BatchedPageStatistics(ds,
+                                this.maxRecordToFlush_Page, this.maxTimeMsToFlush_Page,
+                                "pageLogBatcher");
+                        pageBatch.startThread();
+                    }
+                }
             }
             pageBatch.addStatistic(record);
 
@@ -232,10 +244,16 @@
         {
             if (userBatch == null)
             {
-                userBatch = new BatchedUserStatistics(ds,
-                        this.maxRecordToFlush_User, this.maxTimeMsToFlush_User,
-                        "userLogBatcher");
-                userBatch.startThread();
+                synchronized (this)
+                {
+                    if (userBatch == null)
+                    {
+                        userBatch = new BatchedUserStatistics(ds,
+                                this.maxRecordToFlush_User, this.maxTimeMsToFlush_User,
+                                "userLogBatcher");
+                        userBatch.startThread();
+                    }
+                }
             }
             userBatch.addStatistic(record);
 



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