From e9568c5af6338441079cc841e561369a1c04a439 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Wed, 11 May 2011 21:39:41 -0700 Subject: [PATCH] keep track of commands sent and received to aid debugging --- remoting/src/main/java/hudson/remoting/Channel.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/remoting/src/main/java/hudson/remoting/Channel.java b/remoting/src/main/java/hudson/remoting/Channel.java index 94049f82b1..e9931cbc6a 100644 --- a/remoting/src/main/java/hudson/remoting/Channel.java +++ b/remoting/src/main/java/hudson/remoting/Channel.java @@ -172,6 +172,7 @@ public class Channel implements VirtualChannel, IChannel { */ private final Vector listeners = new Vector(); private int gcCounter; + private int commandsSent; /** * Total number of nanoseconds spent for remote class loading. @@ -485,6 +486,7 @@ public class Channel implements VirtualChannel, IChannel { oos.flush(); // make sure the command reaches the other end. } finally { Channel.setCurrent(old); + commandsSent++; } // unless this is the last command, have OOS and remote OIS forget all the objects we sent // in this command. Otherwise it'll keep objects in memory unnecessarily. @@ -977,15 +979,18 @@ public class Channel implements VirtualChannel, IChannel { } private final class ReaderThread extends Thread { + private int commandsReceived = 0; + private int commandsExecuted = 0; + public ReaderThread(String name) { super("Channel reader thread: "+name); } @Override public void run() { - Command cmd = null; try { while(inClosed==null) { + Command cmd = null; try { Channel old = Channel.setCurrent(Channel.this); try { @@ -1000,7 +1005,10 @@ public class Channel implements VirtualChannel, IChannel { throw ioe; } catch (ClassNotFoundException e) { logger.log(Level.SEVERE, "Unable to read a command (channel " + name + ")",e); + } finally { + commandsReceived++; } + if(logger.isLoggable(Level.FINE)) logger.fine("Received "+cmd); try { @@ -1008,6 +1016,8 @@ public class Channel implements VirtualChannel, IChannel { } catch (Throwable t) { logger.log(Level.SEVERE, "Failed to execute command "+cmd+ " (channel " + name + ")",t); logger.log(Level.SEVERE, "This command is created here",cmd.createdAt); + } finally { + commandsExecuted++; } } ois.close(); -- GitLab