X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FKernelThread.java;h=a127866e3a28c086dc1010911f8879d9b821e1ae;hb=b6cad136dfd4589bc2a8f48ec9168732517f451b;hp=4b4b8026f983830d6e307b36d332ed9a9544e70a;hpb=0a7d938324d33848ac7dc4ef4007c73a714171ee;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java index 4b4b8026f..a127866e3 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java @@ -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.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"); 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,21 +77,22 @@ 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); } } @Override public void run() { + if (log.isTraceEnabled()) + log.trace("Kernel thread started."); final long periodNs = PERIOD * m; while (running) { long beginNs = System.nanoTime(); @@ -113,11 +114,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); +// } } }