Repository: incubator-geode Updated Branches: refs/heads/feature/GEODE-77 a68ed7d03 -> ad8ee8cb8
GEODE-77 adding expected thread states to PluckStacks tool Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/ad8ee8cb Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/ad8ee8cb Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/ad8ee8cb Branch: refs/heads/feature/GEODE-77 Commit: ad8ee8cb832837427598012cf3c41d8d357da6d1 Parents: a68ed7d Author: Bruce Schuchardt <[email protected]> Authored: Fri Oct 23 10:11:54 2015 -0700 Committer: Bruce Schuchardt <[email protected]> Committed: Fri Oct 23 10:11:54 2015 -0700 ---------------------------------------------------------------------- .../gemfire/internal/util/PluckStacks.java | 36 +++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ad8ee8cb/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/PluckStacks.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/PluckStacks.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/PluckStacks.java index 951f47f..fea45ce 100644 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/PluckStacks.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/util/PluckStacks.java @@ -180,9 +180,31 @@ public class PluckStacks { // check these first for efficiency + if (threadName.startsWith("Cache Client Updater Thread")) { + return stackSize == 13 && thread.get(2).contains("SocketInputStream.socketRead0"); + } + if (threadName.startsWith("Client Message Dispatcher")) { + return stackSize == 13 && thread.get(1).contains("TIMED_WAITING"); + } if (threadName.startsWith("Function Execution Processor")) { return isIdleExecutor(thread); } + if (threadName.startsWith("GemFire Membership Timer")) { +// System.out.println("gf timer stack size = " + stackSize + "; frame = " + thread.get(1)); + return stackSize < 9 && thread.get(1).contains("Thread.State: WAITING"); + } + if (threadName.startsWith("GemFire Membership View Creator")) { +// System.out.println("gf view creator stack size = " + stackSize + "; frame = " + thread.get(1)); + return stackSize < 8 && thread.get(1).contains("Thread.State: WAITING"); + } + if (threadName.startsWith("GemFire Suspect Message Collector")) { +// System.out.println("gf suspect collector stack size = " + stackSize + "; frame = " + thread.get(1)); + return stackSize <= 7 && thread.get(1).contains("Thread.State: WAITING"); + } + if (threadName.startsWith("P2P Listener")) { +// System.out.println("p2p listener stack size = " + stackSize + "; frame = " + thread.get(2)); + return (stackSize == 8 && thread.get(2).contains("SocketChannelImpl.accept")); + } if (threadName.startsWith("P2P message reader")) { return (stackSize == 11 && (thread.getFirstFrame().contains("FileDispatcherImpl.read") || @@ -206,9 +228,21 @@ public class PluckStacks { } if (threadName.startsWith("ServerConnection")) { if (thread.getFirstFrame().contains("socketRead") - && (stackSize > 5 && thread.get(5).contains("fetchHeader"))) return true; // reading from a client + && (stackSize > 6 && thread.get(6).contains("fetchHeader"))) return true; // reading from a client return isIdleExecutor(thread); } + if (threadName.startsWith("Timer runner")) { +// System.out.println("timer runner stack size = " + stackSize + "; frame = " + thread.get(1)); + return (stackSize <= 10 && thread.get(1).contains("TIMED_WAITING")); + } + if (threadName.startsWith("TransferQueueBundler")) { +// System.out.println("transfer bundler stack size = " + stackSize + "; frame = " + thread.get(2)); + return (stackSize == 9 && thread.get(2).contains("sun.misc.Unsafe.park")); + } + if (threadName.startsWith("unicast receiver")) { +// System.out.println("unicast receiver stack size = " + stackSize + "; frame = " + thread.get(3)); + return (stackSize > 2 && thread.get(2).contains("PlainDatagramSocketImpl.receive")); + } /////////////////////////////////////////////////////////////////////////
