Adapt to changes in Argeo TP
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / KernelThread.java
index e58cbeef1959654589c80b44699bceca27e13be5..b2b51eb8a9b1b509b0562b80c07c5b520b16cd0f 100644 (file)
@@ -1,5 +1,6 @@
 package org.argeo.cms.internal.kernel;
 
+import java.awt.image.Kernel;
 import java.io.File;
 import java.lang.management.ManagementFactory;
 
@@ -7,16 +8,16 @@ import org.apache.commons.logging.Log;
 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 RepositoryStatisticsImpl repoStats;
+       private final static Log log = LogFactory.getLog(KernelThread.class);
+
+       private RepositoryStatisticsImpl repoStats;
 
        /** The smallest period of operation, in ms */
        private final long PERIOD = 60 * 1000l;
@@ -32,32 +33,31 @@ class KernelThread extends Thread {
        @SuppressWarnings("unused")
        private long cycle = 0l;
 
-       public KernelThread(Kernel kernel) {
-               super(kernel.threadGroup, kernel.getClass().getSimpleName());
-               this.kernel = kernel;
-               this.repoStats = kernel.node.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");
                        long freeMem = Runtime.getRuntime().freeMemory() / M;
                        long totalMem = Runtime.getRuntime().totalMemory() / M;
                        long maxMem = Runtime.getRuntime().maxMemory() / M;
-                       double loadAvg = ManagementFactory.getOperatingSystemMXBean()
-                                       .getSystemLoadAverage();
+                       double loadAvg = ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
                        // in min
                        boolean min = true;
-                       long uptime = ManagementFactory.getRuntimeMXBean().getUptime()
-                                       / (1000 * 60);
+                       long uptime = ManagementFactory.getRuntimeMXBean().getUptime() / (1000 * 60);
                        if (uptime > 24 * 60) {
                                min = false;
                                uptime = uptime / 60;
                        }
                        line.append(uptime).append(min ? " min" : " h").append('\t');
-                       line.append(loadAvg).append('\t').append(maxMem).append('\t')
-                                       .append(totalMem).append('\t').append(freeMem).append('\t');
+                       line.append(loadAvg).append('\t').append(maxMem).append('\t').append(totalMem).append('\t').append(freeMem)
+                                       .append('\t');
                        kernelStatsLog.debug(line);
                }
 
@@ -77,15 +77,14 @@ class KernelThread extends Thread {
                        // }
                        // long totalSpace = currentRoot.getTotalSpace();
                        StringBuilder line = new StringBuilder(128);
-                       line.append("§\t").append(freeSpace)
-                                       .append(" MB left in " + dataDir);
+                       line.append("§\t").append(freeSpace).append(" MB left in " + dataDir);
                        line.append('\n');
-                       for (RepositoryStatistics.Type type : RepositoryStatistics.Type
-                                       .values()) {
-                               long[] vals = repoStats.getTimeSeries(type).getValuePerMinute();
-                               long val = vals[vals.length - 1];
-                               line.append(type.name()).append('\t').append(val).append('\n');
-                       }
+                       if (repoStats != null)
+                               for (RepositoryStatistics.Type type : RepositoryStatistics.Type.values()) {
+                                       long[] vals = repoStats.getTimeSeries(type).getValuePerMinute();
+                                       long val = vals[vals.length - 1];
+                                       line.append(type.name()).append('\t').append(val).append('\n');
+                               }
                        nodeStatsLog.debug(line);
                }
        }
@@ -113,11 +112,12 @@ class KernelThread extends Thread {
        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);
+//             }
        }
 }