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