Author: nfilotto
Date: 2011-05-12 08:23:12 -0400 (Thu, 12 May 2011)
New Revision: 4376
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java
Log:
EXOJCR-1342: Thread not stopped when the application is stopped
The components are now starteable and their threads are stopped in the stop method
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java 2011-05-12
06:58:50 UTC (rev 4375)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java 2011-05-12
12:23:12 UTC (rev 4376)
@@ -21,6 +21,7 @@
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.impl.proccess.WorkerService;
+import org.picocontainer.Startable;
/**
* LockRemoverHolder holds is a single per-repository LockRemover container.
@@ -28,7 +29,7 @@
* @author <a href="mailto:karpenko.sergiy@gmail.com">Karpenko
Sergiy</a>
* @version $Id: exo-jboss-codetemplates.xml 34360 2009-07-22 23:58:59Z aheritier $
*/
-public class LockRemoverHolder
+public class LockRemoverHolder implements Startable
{
/**
* Default amount of thread that may be used by WorkerService to serve LockRemovers.
@@ -91,4 +92,18 @@
return new LockRemover(workerService, lockManager, timeout);
}
+ /**
+ * @see org.picocontainer.Startable#start()
+ */
+ public void start()
+ {
+ }
+
+ /**
+ * @see org.picocontainer.Startable#stop()
+ */
+ public void stop()
+ {
+ workerService.stop();
+ }
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java 2011-05-12
06:58:50 UTC (rev 4375)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java 2011-05-12
12:23:12 UTC (rev 4376)
@@ -36,6 +36,7 @@
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
+import org.picocontainer.Startable;
import java.util.ArrayList;
import java.util.Calendar;
@@ -45,10 +46,10 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Timer;
import java.util.TimerTask;
import java.util.WeakHashMap;
-import java.util.Map.Entry;
import java.util.concurrent.Semaphore;
import java.util.concurrent.locks.ReentrantLock;
@@ -62,7 +63,7 @@
* @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter
Nedonosko</a>
* @version $Id: LinkedWorkspaceStorageCacheImpl.java 34801 2009-07-31 15:44:50Z dkatayev
$
*/
-public class LinkedWorkspaceStorageCacheImpl implements WorkspaceStorageCache
+public class LinkedWorkspaceStorageCacheImpl implements WorkspaceStorageCache, Startable
{
/**
@@ -786,28 +787,6 @@
}
}
- /**
- * {@inheritDoc}
- */
- @Override
- protected void finalize() throws Throwable
- {
- try
- {
- workerTimer.cancel();
- }
- catch (Throwable e)
- {
- LOG.error(this.name + " cache, finalyze error " + e, e);
- }
-
- nodesCache.clear();
- propertiesCache.clear();
- cache.clear();
-
- super.finalize();
- }
-
private void scheduleTask(TimerTask task, int start, long period)
{
Calendar firstTime = Calendar.getInstance();
@@ -2164,4 +2143,33 @@
{
return true;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void start()
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void stop()
+ {
+ if (workerTimer != null)
+ {
+ try
+ {
+ workerTimer.cancel();
+ }
+ catch (Throwable e)
+ {
+ LOG.warn(this.name + " cache, stop error " + e);
+ }
+ }
+
+ nodesCache.clear();
+ propertiesCache.clear();
+ cache.clear();
+ }
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java 2011-05-12
06:58:50 UTC (rev 4375)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java 2011-05-12
12:23:12 UTC (rev 4376)
@@ -19,6 +19,7 @@
package org.exoplatform.services.jcr.impl.util.io;
import org.exoplatform.container.ExoContainerContext;
+import org.picocontainer.Startable;
/**
* Created by The eXo Platform SAS. <br/> per workspace container file cleaner
holder object
@@ -26,7 +27,7 @@
* @author Gennady Azarenkov
* @version $Id: WorkspaceFileCleanerHolder.java 11907 2008-03-13 15:36:21Z ksm $
*/
-public class FileCleanerHolder
+public class FileCleanerHolder implements Startable
{
private final FileCleaner fileCleaner;
@@ -46,4 +47,19 @@
return fileCleaner;
}
+ /**
+ * @see org.picocontainer.Startable#start()
+ */
+ public void start()
+ {
+ }
+
+ /**
+ * @see org.picocontainer.Startable#stop()
+ */
+ public void stop()
+ {
+ fileCleaner.halt();
+ }
+
}
Show replies by date