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 2008/04/15 00:49:42 UTC

svn commit: r648042 - in /portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE: components/page-manager/src/java/org/apache/jetspeed/om/page/ components/portal/src/java/org/apache/jetspeed/aggregator/impl/ jetspeed-api/src/java/org/apache/jets...

Author: taylor
Date: Mon Apr 14 15:49:38 2008
New Revision: 648042

URL: http://svn.apache.org/viewvc?rev=648042&view=rev
Log:
https://issues.apache.org/jira/browse/JS2-864
help garbage collection in release of render buffers

Modified:
    portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
    portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
    portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
    portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
    portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java
    portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java
    portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java

Modified: portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java?rev=648042&r1=648041&r2=648042&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java Mon Apr 14 15:49:38 2008
@@ -856,4 +856,9 @@
         
     }
     
+    public PortletContent getPortletContent()
+    {
+        return this.portletContent;
+    }
+        
 }

Modified: portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java?rev=648042&r1=648041&r2=648042&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java Mon Apr 14 15:49:38 2008
@@ -24,10 +24,12 @@
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.aggregator.FailedToRenderFragmentException;
 import org.apache.jetspeed.aggregator.PageAggregator;
+import org.apache.jetspeed.aggregator.PortletContent;
 import org.apache.jetspeed.aggregator.PortletRenderer;
 import org.apache.jetspeed.container.state.NavigationalState;
 import org.apache.jetspeed.exception.JetspeedException;
 import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.ContentFragmentImpl;
 import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.pluto.om.window.PortletWindow;
@@ -83,6 +85,7 @@
             context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_FRAGMENT_ATTRIBUTE);
             context.getRequest().removeAttribute(PortalReservedParameters.MAXIMIZED_LAYOUT_ATTRIBUTE);
         }
+        releaseBuffers(root, context);
     }
 
     /**
@@ -146,4 +149,27 @@
         }
         renderer.renderNow(f, context);
     }
+    
+    protected void releaseBuffers(ContentFragment f, RequestContext context)
+    {
+        if (f.getContentFragments() != null && f.getContentFragments().size() > 0)
+        {
+            Iterator children = f.getContentFragments().iterator();
+            while (children.hasNext())
+            {
+                ContentFragment child = (ContentFragment) children.next();
+                if (!"hidden".equals(f.getState()))
+                {
+                    releaseBuffers(child, context);
+                }
+            }
+        }
+        PortletContent content = f.getPortletContent();
+        if (content.getExpiration() == 0)
+        {
+            System.out.println("releasing ..." + f.getName());
+            content.release();
+        }
+    }
+
 }

Modified: portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java?rev=648042&r1=648041&r2=648042&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java Mon Apr 14 15:49:38 2008
@@ -21,6 +21,7 @@
 
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.aggregator.PortletAggregator;
+import org.apache.jetspeed.aggregator.PortletContent;
 import org.apache.jetspeed.aggregator.PortletRenderer;
 import org.apache.jetspeed.exception.JetspeedException;
 import org.apache.jetspeed.om.page.ContentFragment;
@@ -78,6 +79,11 @@
         ContentFragment contentFragment = new ContentFragmentImpl(fragment, new HashMap());
         renderer.renderNow(contentFragment, context);
         context.getResponse().getWriter().write(contentFragment.getRenderedContent());
+        PortletContent content = contentFragment.getPortletContent();
+        if (content.getExpiration() == 0)
+        {
+            contentFragment.getPortletContent().release();
+        }
     }
     
 }

Modified: portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java?rev=648042&r1=648041&r2=648042&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletContentImpl.java Mon Apr 14 15:49:38 2008
@@ -67,6 +67,9 @@
     public void release()
     {
         writer.close();
+        cw.reset();
+        cw = null;
+        writer = null;
     }
 
     public String toString()

Modified: portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java?rev=648042&r1=648041&r2=648042&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java Mon Apr 14 15:49:38 2008
@@ -638,6 +638,15 @@
     {
         if (content.getExpiration() != 0)
             addToCache(content);
+//        else
+//        {
+//            if (content instanceof PortletContentImpl)
+//            {
+//                PortletContentImpl impl = (PortletContentImpl)content;
+//                impl.release();
+//            }
+//        }
+        
     }
     
     public PortletTrackingManager getPortletTrackingManager()

Modified: portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java?rev=648042&r1=648041&r2=648042&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java (original)
+++ portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/aggregator/PortletContent.java Mon Apr 14 15:49:38 2008
@@ -98,5 +98,10 @@
      * @param title
      */
     void setTitle(String title);
-        
+    
+    /**
+     * Release the buffers used by the portlet content cache. Note the actual release may not occur until garbage collection. 
+     *
+     */
+    void release();        
 }

Modified: portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java?rev=648042&r1=648041&r2=648042&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java (original)
+++ portals/jetspeed-2/portal/branches/JETSPEED-2.1.2-POSTRELEASE/jetspeed-api/src/java/org/apache/jetspeed/om/page/ContentFragment.java Mon Apr 14 15:49:38 2008
@@ -94,6 +94,13 @@
      * @param portletContent
      */
     public void setPortletContent(PortletContent portletContent);
+
+    /**
+     * Retrieve the content for this fragment
+     * 
+     * @return PortletContent
+     */
+    public PortletContent getPortletContent();
     
     /**
      * Retrieves the actual <code>org.apache.jetspeed.decoration.decorator</code>



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