diff --git a/remoting/src/main/java/hudson/remoting/Channel.java b/remoting/src/main/java/hudson/remoting/Channel.java index 94049f82b14163cf01971deb5594a45b8d4b0539..e9931cbc6af76637f79b00057f94745f752d8cf4 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();