提交 e9568c5a 编写于 作者: K Kohsuke Kawaguchi

keep track of commands sent and received to aid debugging

上级 a4bc80e5
...@@ -172,6 +172,7 @@ public class Channel implements VirtualChannel, IChannel { ...@@ -172,6 +172,7 @@ public class Channel implements VirtualChannel, IChannel {
*/ */
private final Vector<Listener> listeners = new Vector<Listener>(); private final Vector<Listener> listeners = new Vector<Listener>();
private int gcCounter; private int gcCounter;
private int commandsSent;
/** /**
* Total number of nanoseconds spent for remote class loading. * Total number of nanoseconds spent for remote class loading.
...@@ -485,6 +486,7 @@ public class Channel implements VirtualChannel, IChannel { ...@@ -485,6 +486,7 @@ public class Channel implements VirtualChannel, IChannel {
oos.flush(); // make sure the command reaches the other end. oos.flush(); // make sure the command reaches the other end.
} finally { } finally {
Channel.setCurrent(old); Channel.setCurrent(old);
commandsSent++;
} }
// unless this is the last command, have OOS and remote OIS forget all the objects we sent // 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. // in this command. Otherwise it'll keep objects in memory unnecessarily.
...@@ -977,15 +979,18 @@ public class Channel implements VirtualChannel, IChannel { ...@@ -977,15 +979,18 @@ public class Channel implements VirtualChannel, IChannel {
} }
private final class ReaderThread extends Thread { private final class ReaderThread extends Thread {
private int commandsReceived = 0;
private int commandsExecuted = 0;
public ReaderThread(String name) { public ReaderThread(String name) {
super("Channel reader thread: "+name); super("Channel reader thread: "+name);
} }
@Override @Override
public void run() { public void run() {
Command cmd = null;
try { try {
while(inClosed==null) { while(inClosed==null) {
Command cmd = null;
try { try {
Channel old = Channel.setCurrent(Channel.this); Channel old = Channel.setCurrent(Channel.this);
try { try {
...@@ -1000,7 +1005,10 @@ public class Channel implements VirtualChannel, IChannel { ...@@ -1000,7 +1005,10 @@ public class Channel implements VirtualChannel, IChannel {
throw ioe; throw ioe;
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
logger.log(Level.SEVERE, "Unable to read a command (channel " + name + ")",e); logger.log(Level.SEVERE, "Unable to read a command (channel " + name + ")",e);
} finally {
commandsReceived++;
} }
if(logger.isLoggable(Level.FINE)) if(logger.isLoggable(Level.FINE))
logger.fine("Received "+cmd); logger.fine("Received "+cmd);
try { try {
...@@ -1008,6 +1016,8 @@ public class Channel implements VirtualChannel, IChannel { ...@@ -1008,6 +1016,8 @@ public class Channel implements VirtualChannel, IChannel {
} catch (Throwable t) { } catch (Throwable t) {
logger.log(Level.SEVERE, "Failed to execute command "+cmd+ " (channel " + name + ")",t); logger.log(Level.SEVERE, "Failed to execute command "+cmd+ " (channel " + name + ")",t);
logger.log(Level.SEVERE, "This command is created here",cmd.createdAt); logger.log(Level.SEVERE, "This command is created here",cmd.createdAt);
} finally {
commandsExecuted++;
} }
} }
ois.close(); ois.close();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册