package org.argeo.cms.internal.kernel;
+import java.awt.image.Kernel;
import java.io.File;
import java.lang.management.ManagementFactory;
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.api.stats.RepositoryStatistics;
import org.apache.jackrabbit.stats.RepositoryStatisticsImpl;
-import org.argeo.cms.CmsException;
+import org.argeo.cms.internal.auth.CmsSessionImpl;
/**
* Background thread started by the {@link Kernel}, which gather statistics and
* monitor/control other processes.
*/
class KernelThread extends Thread {
- @SuppressWarnings("unused")
- private final Kernel kernel;
+ private final static Log log = LogFactory.getLog(KernelThread.class);
+
private RepositoryStatisticsImpl repoStats;
/** The smallest period of operation, in ms */
@SuppressWarnings("unused")
private long cycle = 0l;
- public KernelThread(Kernel kernel) {
- super(kernel.threadGroup, kernel.getClass().getSimpleName());
- this.kernel = kernel;
- // this.repoStats = kernel.repository.getRepositoryStatistics();
+ public KernelThread(ThreadGroup threadGroup, String name) {
+ super(threadGroup, name);
}
private void doSmallestPeriod() {
+ // Clean expired sessions
+ CmsSessionImpl.closeInvalidSessions();
+
if (kernelStatsLog.isDebugEnabled()) {
StringBuilder line = new StringBuilder(64);
line.append("ยง\t");
@Override
public void run() {
+ if (log.isTraceEnabled())
+ log.trace("Kernel thread started.");
final long periodNs = PERIOD * m;
while (running) {
long beginNs = System.nanoTime();
synchronized void destroyAndJoin() {
running = false;
notifyAll();
- interrupt();
- try {
- join(PERIOD * 2);
- } catch (InterruptedException e) {
- throw new CmsException("Kernel thread destruction was interrupted");
- }
+// interrupt();
+// try {
+// join(PERIOD * 2);
+// } catch (InterruptedException e) {
+// // throw new CmsException("Kernel thread destruction was interrupted");
+// log.error("Kernel thread destruction was interrupted", e);
+// }
}
}