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/06/22 23:07:13 UTC
svn commit: r416474 -
/lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java
Author: cutting
Date: Thu Jun 22 14:07:12 2006
New Revision: 416474
URL: http://svn.apache.org/viewvc?rev=416474&view=rev
Log:
HADOOP-317. Fix server logging to correctly log stack traces. Also
downgrade a few common log messages to debug-level. Finally, cancel
keys on exceptions and check their validity before using them.
Modified:
lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java
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?rev=416474&r1=416473&r2=416474&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java Thu Jun 22 14:07:12 2006
@@ -204,17 +204,24 @@
while (iter.hasNext()) {
key = (SelectionKey)iter.next();
- if (key.isAcceptable())
- doAccept(key);
- else if (key.isReadable())
- doRead(key);
iter.remove();
+ try {
+ if (key.isValid()) {
+ if (key.isAcceptable())
+ doAccept(key);
+ else if (key.isReadable())
+ doRead(key);
+ }
+ } catch (IOException e) {
+ key.cancel();
+ }
key = null;
}
} catch (OutOfMemoryError e) {
// we can run out of memory if we have too many threads
// log the event and sleep for a minute and give
// some thread(s) a chance to finish
+ LOG.warn("Out of Memory in server select", e);
closeCurrentConnection(key, e);
cleanupConnections(true);
try { Thread.sleep(60000); } catch (Exception ie) {}
@@ -238,10 +245,6 @@
}
private void closeCurrentConnection(SelectionKey key, Throwable e) {
- if (running) {
- LOG.warn("selector: " + e);
- e.printStackTrace();
- }
if (key != null) {
Connection c = (Connection)key.attachment();
if (c != null) {
@@ -277,8 +280,6 @@
void doRead(SelectionKey key) {
int count = 0;
- if (!key.isValid() || !key.isReadable())
- return;
Connection c = (Connection)key.attachment();
if (c == null) {
return;
@@ -288,8 +289,8 @@
try {
count = c.readAndProcess();
} catch (Exception e) {
- LOG.info(getName() + ": readAndProcess threw exception " + e + ". Count of bytes read: " + count);
- e.printStackTrace();
+ key.cancel();
+ LOG.debug(getName() + ": readAndProcess threw exception " + e + ". Count of bytes read: " + count, e);
count = -1; //so that the (count < 0) block is executed
}
if (count < 0) {
@@ -484,7 +485,7 @@
}
out.flush();
} catch (Exception e) {
- e.printStackTrace();
+ LOG.warn("handler output error", e);
synchronized (connectionList) {
if (connectionList.remove(call.connection))
numConnections--;