From 6fa8f6a0423eecc9327e71a8a50cf5d1a1ccf845 Mon Sep 17 00:00:00 2001 From: Jean-Daniel Cryans Date: Fri, 17 Feb 2012 19:56:54 +0000 Subject: [PATCH] HBASE-4640 Catch ClosedChannelException and document it git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1245730 13f79535-47bb-0310-9956-ffa450edef68 --- src/docbkx/troubleshooting.xml | 11 ++++++++++- .../java/org/apache/hadoop/hbase/ipc/HBaseServer.java | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/docbkx/troubleshooting.xml b/src/docbkx/troubleshooting.xml index e6c216ec687..a92d9794e92 100644 --- a/src/docbkx/troubleshooting.xml +++ b/src/docbkx/troubleshooting.xml @@ -888,7 +888,7 @@ ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expi as forward lookup. See HBASE 3431 RegionServer is not using the name given it by the master; double entry in master listing of servers for gorey details. - +
Logs flooded with '2011-01-10 12:40:48,407 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new compressor' messages @@ -898,6 +898,15 @@ ERROR org.apache.hadoop.hbase.regionserver.HRegionServer: ZooKeeper session expi symlink them into place and the message should go away.
+
+ Server handler X on 60020 caught: java.nio.channels.ClosedChannelException + + If you see this type of message it means that the region server was trying to read/send data from/to a client but + it already went away. Typical causes for this are if the client was killed (you see a storm of messages like this when a MapReduce + job is killed or fails) or if the client receives a SocketTimeoutException. It's harmless, but you should consider digging in + a bit more if you aren't doing something to trigger them. + +
diff --git a/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java b/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java index dbc4b34f84d..5e004042645 100644 --- a/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java +++ b/src/main/java/org/apache/hadoop/hbase/ipc/HBaseServer.java @@ -1378,6 +1378,11 @@ public abstract class HBaseServer implements RpcServer { // rethrow if no handler throw e; } + } catch (ClosedChannelException cce) { + LOG.warn(getName() + " caught a ClosedChannelException, " + + "this means that the server was processing a " + + "request but the client went away. The error message was: " + + cce.getMessage()); } catch (Exception e) { LOG.warn(getName() + " caught: " + StringUtils.stringifyException(e));