You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2009/05/11 15:34:40 UTC
svn commit: r773555 -
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java
Author: thomasm
Date: Mon May 11 13:34:40 2009
New Revision: 773555
URL: http://svn.apache.org/viewvc?rev=773555&view=rev
Log:
JCR-2106 SystemSessions created for GarbageCollector are not logged out
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java?rev=773555&r1=773554&r2=773555&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java Mon May 11 13:34:40 2009
@@ -21,6 +21,7 @@
import org.apache.jackrabbit.core.PropertyId;
import org.apache.jackrabbit.core.RepositoryImpl;
import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.SessionListener;
import org.apache.jackrabbit.core.observation.SynchronousEventListener;
import org.apache.jackrabbit.core.persistence.IterablePersistenceManager;
import org.apache.jackrabbit.core.state.ItemStateException;
@@ -95,12 +96,23 @@
*
* @param list the persistence managers
*/
- public GarbageCollector(SessionImpl session, IterablePersistenceManager[] list, Session[] sessionList) {
+ public GarbageCollector(final SessionImpl session, IterablePersistenceManager[] list, final Session[] sessionList) {
RepositoryImpl rep = (RepositoryImpl) session.getRepository();
store = rep.getDataStore();
this.pmList = list;
this.persistenceManagerScan = list != null;
this.sessionList = sessionList;
+
+ // log out each session as soon as the main session logs out
+ session.addListener(new SessionListener() {
+ public void loggedOut(SessionImpl session) {
+ for (Session s: sessionList) {
+ s.logout();
+ }
+ }
+ public void loggingOut(SessionImpl session) {
+ }
+ });
}
/**