You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cu...@apache.org on 2006/10/11 19:56:45 UTC
svn commit: r462885 - in /lucene/hadoop/trunk: CHANGES.txt
src/java/org/apache/hadoop/ipc/Server.java
Author: cutting
Date: Wed Oct 11 10:56:44 2006
New Revision: 462885
URL: http://svn.apache.org/viewvc?view=rev&rev=462885
Log:
HADOOP-592. Fix an NPE in IPC Server. Contributed by Owen.
Modified:
lucene/hadoop/trunk/CHANGES.txt
lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java
Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=462885&r1=462884&r2=462885
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Wed Oct 11 10:56:44 2006
@@ -6,6 +6,9 @@
1. HADOOP-593. Fix a NullPointerException in the JobTracker.
(omalley via cutting)
+ 2. HADOOP-592. Fix a NullPointerException in the IPC Server. Also
+ consistently log when stale calls are discarded. (omalley via cutting)
+
Release 0.7.0 - 2006-10-06
Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java?view=diff&rev=462885&r1=462884&r2=462885
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java Wed Oct 11 10:56:44 2006
@@ -30,6 +30,7 @@
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
@@ -351,6 +352,10 @@
private long lastContact;
private int dataLength;
private Socket socket;
+ // Cache the remote host & port info so that even if the socket is
+ // disconnected, we can say where it used to connect to.
+ private String hostAddress;
+ private int remotePort;
public Connection(SelectionKey key, SocketChannel channel,
long lastContact) {
@@ -363,14 +368,21 @@
this.out = new DataOutputStream
(new BufferedOutputStream(
this.channelOut = new SocketChannelOutputStream(channel, 4096)));
+ InetAddress addr = socket.getInetAddress();
+ if (addr == null) {
+ this.hostAddress = "*Unknown*";
+ } else {
+ this.hostAddress = addr.getHostAddress();
+ }
+ this.remotePort = socket.getPort();
}
public String toString() {
- return getHostAddress() + ":" + socket.getPort();
+ return getHostAddress() + ":" + remotePort;
}
public String getHostAddress() {
- return socket.getInetAddress().getHostAddress();
+ return hostAddress;
}
public void setLastContact(long lastContact) {
@@ -431,7 +443,8 @@
Call call = new Call(id, param, this);
synchronized (callQueue) {
if (callQueue.size() >= maxQueueSize) {
- callQueue.removeFirst();
+ Call oldCall = (Call) callQueue.removeFirst();
+ LOG.warn("Call queue overflow discarding oldest call " + oldCall);
}
callQueue.addLast(call); // queue the call
callQueue.notify(); // wake up a waiting handler
@@ -484,7 +497,7 @@
// throw the message away if it is too old
if (System.currentTimeMillis() - call.receivedTime >
maxCallStartAge) {
- LOG.info("Call " + call.toString() +
+ LOG.warn("Call " + call.toString() +
" discarded for being too old (" +
(System.currentTimeMillis() - call.receivedTime) + ")");
continue;
@@ -492,7 +505,7 @@
if (LOG.isDebugEnabled())
LOG.debug(getName() + ": has #" + call.id + " from " +
- call.connection.socket.getInetAddress().getHostAddress());
+ call.connection);
String errorClass = null;
String error = null;