From 7e7d743984a4c69b01fd5fd3ef317fc60cd6d71f Mon Sep 17 00:00:00 2001 From: David McKnight Date: Tue, 6 May 2008 14:29:29 +0000 Subject: [PATCH] [230399] [multithread] changes to stop CommandMiner threads when clients disconnect --- .../dstore/universal/miners/CommandMiner.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/CommandMiner.java b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/CommandMiner.java index 3e6ea93d525..873e1a47f41 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/CommandMiner.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/CommandMiner.java @@ -16,6 +16,7 @@ * David McKnight (IBM) - [202822] cancelled output should be created before thread cleanup * David McKnight (IBM) - [196624] dstore miner IDs should be String constants rather than dynamic lookup * Noriaki Takatsu (IBM) - [220126] [dstore][api][breaking] Single process server for multiple clients + * Noriaki Takatsu (IBM) - [230399] [multithread] changes to stop CommandMiner threads when clients disconnect *******************************************************************************/ package org.eclipse.rse.dstore.universal.miners; @@ -25,6 +26,7 @@ package org.eclipse.rse.dstore.universal.miners; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import org.eclipse.dstore.core.miners.Miner; import org.eclipse.dstore.core.model.DE; @@ -280,6 +282,20 @@ public class CommandMiner extends Miner done = true; } } + + public void finish() + { + Iterator pools = _threads.entrySet().iterator(); + while (pools.hasNext()) + { + Map.Entry entry = (Map.Entry)pools.next(); + CommandMinerThread process = (CommandMinerThread) entry.getValue(); + process.sendExit();; + } + + _threads.clear(); + super.finish(); + } public String getVersion() {