You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jo...@apache.org on 2008/03/31 02:18:56 UTC
svn commit: r642846 - in /cocoon/trunk/core/cocoon-sitemap:
cocoon-sitemap-api/src/main/java/org/apache/cocoon/components/flow/
cocoon-sitemap-impl/src/changes/
cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/flow/
Author: joerg
Date: Sun Mar 30 17:18:55 2008
New Revision: 642846
URL: http://svn.apache.org/viewvc?rev=642846&view=rev
Log:
COCOON-2109: Fix clean up of continuations.
Modified:
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-api/src/main/java/org/apache/cocoon/components/flow/WebContinuation.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-api/src/main/java/org/apache/cocoon/components/flow/WebContinuation.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-api/src/main/java/org/apache/cocoon/components/flow/WebContinuation.java?rev=642846&r1=642845&r2=642846&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-api/src/main/java/org/apache/cocoon/components/flow/WebContinuation.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-api/src/main/java/org/apache/cocoon/components/flow/WebContinuation.java Sun Mar 30 17:18:55 2008
@@ -217,7 +217,6 @@
* @return an <code>Object</code> value
*/
public Object getContinuation() {
- updateLastAccessTime();
return continuation;
}
@@ -234,7 +233,6 @@
*/
public WebContinuation getContinuation(int level) {
if (level <= 0) {
- updateLastAccessTime();
return this;
} else if (parentContinuation == null) {
return this;
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml?rev=642846&r1=642845&r2=642846&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/changes/changes.xml Sun Mar 30 17:18:55 2008
@@ -25,6 +25,11 @@
-->
<document>
<body>
+ <release version="1.0.1" date="TBA" description="unreleased">
+ <action dev="joerg" type="fix" fixes-bug="COCOON-2109" due-to="Miguel Cuervo" due-to-email="miguel.cuervo@cgi.com">
+ Fix clean up of continuations.
+ </action>
+ </release>
<release version="1.0.0" date="TBA" description="released">
<action dev="gkossakowski" type="fix" issue="COCOON-2070" due-to="Alexander Klimetschek" due-to-email="alexander.klimetschek@googlemail.com">
Fixed bug in PoolableProxyHandler class that is responsible for putting components back to the pool. This bug could lead to the situation
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java?rev=642846&r1=642845&r2=642846&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java Sun Mar 30 17:18:55 2008
@@ -82,13 +82,13 @@
/**
* How long does a continuation exist in memory since the last
- * access? The time is in miliseconds, and the default is 1 hour.
+ * access? The time is in milliseconds, and the default is 1 hour.
*/
protected int defaultTimeToLive;
/**
* Maintains the forest of <code>WebContinuation</code> trees.
- * This set is used only for debugging puroses by
+ * This set is used only for debugging purposes by
* {@link #displayAllContinuations()} method.
*/
protected Set forest = Collections.synchronizedSet(new HashSet());
@@ -125,6 +125,10 @@
bytes = new byte[CONTINUATION_ID_LENGTH];
}
+ public void contextualize(Context context) throws ContextException {
+ this.context = context;
+ }
+
public void service(ServiceManager manager) throws ServiceException {
this.serviceManager = manager;
}
@@ -211,15 +215,20 @@
}
public WebContinuation lookupWebContinuation(String id, String interpreterId) {
- // REVISIT: Is the following check needed to avoid threading issues:
- // return wk only if !(wk.hasExpired) ?
WebContinuationsHolder continuationsHolder = lookupWebContinuationsHolder(false);
- if (continuationsHolder == null)
+ if (continuationsHolder == null) {
return null;
+ }
WebContinuation kont = continuationsHolder.get(id);
- if (kont == null)
+ if (kont == null) {
+ return null;
+ }
+
+ if (kont.hasExpired()) {
+ removeContinuation(continuationsHolder, kont);
return null;
+ }
if (!kont.interpreterMatches(interpreterId)) {
getLogger().error(
@@ -229,6 +238,13 @@
+ interpreterId);
return null;
}
+
+ // COCOON-2109: Sorting in the TreeSet happens on insert. So in order to re-sort the
+ // continuation has to be re-added.
+ expirations.remove(kont);
+ kont.updateLastAccessTime();
+ expirations.add(kont);
+
return kont;
}
@@ -579,7 +595,4 @@
}
}
- public void contextualize(Context context) throws ContextException {
- this.context = context;
- }
}