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 RepositoryStatisticsImpl repoStats;
/** The smallest period of operation, in ms */
private final long PERIOD = 60 * 1000l;
@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);
}
// }
// 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);
}
}