From b8c3803bfc07aa49547ff88c4afba1535a78bd5c Mon Sep 17 00:00:00 2001 From: orbiter Date: Mon, 23 Feb 2009 17:15:52 +0000 Subject: [PATCH] don't panic when canceling server sessions git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5641 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/de/anomic/server/serverCore.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/de/anomic/server/serverCore.java b/source/de/anomic/server/serverCore.java index 9a44ed5e5..2e0ee4817 100644 --- a/source/de/anomic/server/serverCore.java +++ b/source/de/anomic/server/serverCore.java @@ -141,10 +141,11 @@ public final class serverCore extends serverAbstractBusyThread implements server if (System.currentTimeMillis() - lastAutoTermination < 30000) return; this.lastAutoTermination = System.currentTimeMillis(); - int threadCount = serverCore.sessionThreadGroup.activeCount(); + int threadCount = serverCore.sessionThreadGroup.activeCount(); + if (threadCount < maxBusySessions - 10) return; // don't panic final Thread[] threadList = new Thread[this.getJobCount()]; threadCount = serverCore.sessionThreadGroup.enumerate(threadList); - for ( int currentThreadIdx = 0; currentThreadIdx < threadCount; currentThreadIdx++ ) { + for (int currentThreadIdx = 0; currentThreadIdx < threadCount; currentThreadIdx++ ) { final Thread currentThread = threadList[currentThreadIdx]; if ( (currentThread != null) && @@ -153,8 +154,9 @@ public final class serverCore extends serverAbstractBusyThread implements server (((Session) currentThread).getTime() > minage) ) { this.log.logInfo("check for " + currentThread.getName() + ": " + ((Session) currentThread).getTime() + " ms alive, stopping thread"); + Session session = (Session) currentThread; // trying to stop session - ((Session)currentThread).setStopped(true); + session.setStopped(true); try { Thread.sleep(100); } catch (final InterruptedException ex) {} // trying to interrupt session