You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mi...@apache.org on 2014/02/07 06:11:16 UTC
git commit: Don't swallow useful exceptions. patch by Ding Yuan;
reviewed by Mikhail Stepura for CASSANDRA-6656
Updated Branches:
refs/heads/trunk c3670e4f8 -> 7a3e697d8
Don't swallow useful exceptions.
patch by Ding Yuan; reviewed by Mikhail Stepura for CASSANDRA-6656
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/7a3e697d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7a3e697d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7a3e697d
Branch: refs/heads/trunk
Commit: 7a3e697d836ca6fd7f41215678c977cb48a2ce1f
Parents: c3670e4
Author: Ding Yuan <yu...@eecg.toronto.edu>
Authored: Thu Feb 6 19:28:36 2014 -0800
Committer: Mikhail Stepura <mi...@apache.org>
Committed: Thu Feb 6 20:58:58 2014 -0800
----------------------------------------------------------------------
.../db/marshal/DynamicCompositeType.java | 21 ++++++++++++++++++--
.../org/apache/cassandra/tools/NodeProbe.java | 10 ++++++++--
src/java/org/apache/cassandra/utils/Hex.java | 11 ++++++++++
3 files changed, 38 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7a3e697d/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
index 35e6e33..faa1955 100644
--- a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
@@ -22,6 +22,9 @@ import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.exceptions.SyntaxException;
import org.apache.cassandra.serializers.TypeSerializer;
@@ -49,6 +52,8 @@ import org.apache.cassandra.utils.ByteBufferUtil;
*/
public class DynamicCompositeType extends AbstractCompositeType
{
+ private static final Logger logger = LoggerFactory.getLogger(DynamicCompositeType.class);
+
private final Map<Byte, AbstractType<?>> aliases;
// interning instances
@@ -185,13 +190,25 @@ public class DynamicCompositeType extends AbstractCompositeType
throw new MarshalException("Not enough bytes to read comparator name of component " + i);
ByteBuffer value = getBytes(bb, header);
+ String valueStr = null;
try
{
- comparator = TypeParser.parse(ByteBufferUtil.string(value));
+ valueStr = ByteBufferUtil.string(value);
+ comparator = TypeParser.parse(valueStr);
+ }
+ catch (CharacterCodingException ce)
+ {
+ // ByteBufferUtil.string failed.
+ // Log it here and we'll further throw an exception below since comparator == null
+ logger.error("Failed with [{}] when decoding the byte buffer in ByteBufferUtil.string()",
+ ce.toString());
}
catch (Exception e)
{
- // we'll deal with this below since comparator == null
+ // parse failed.
+ // Log it here and we'll further throw an exception below since comparator == null
+ logger.error("Failed to parse value string \"{}\" with exception: [{}]",
+ valueStr, e.toString());
}
}
else
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7a3e697d/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index d874ef0..a342866 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -237,7 +237,10 @@ public class NodeProbe implements AutoCloseable
ssProxy.removeNotificationListener(runner);
jmxc.removeConnectionNotificationListener(runner);
}
- catch (Throwable ignored) {}
+ catch (Throwable e)
+ {
+ out.println("Exception occurred during clean-up. " + e);
+ }
}
}
@@ -262,7 +265,10 @@ public class NodeProbe implements AutoCloseable
ssProxy.removeNotificationListener(runner);
jmxc.removeConnectionNotificationListener(runner);
}
- catch (Throwable ignored) {}
+ catch (Throwable e)
+ {
+ out.println("Exception occurred during clean-up. " + e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7a3e697d/src/java/org/apache/cassandra/utils/Hex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/Hex.java b/src/java/org/apache/cassandra/utils/Hex.java
index 463c49a..5ba0b1a 100644
--- a/src/java/org/apache/cassandra/utils/Hex.java
+++ b/src/java/org/apache/cassandra/utils/Hex.java
@@ -18,11 +18,16 @@
package org.apache.cassandra.utils;
import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class Hex
{
private static final Constructor<String> stringConstructor = getProtectedConstructor(String.class, int.class, int.class, char[].class);
private final static byte[] charToByte = new byte[256];
+ private static final Logger logger = LoggerFactory.getLogger(Hex.class);
// package protected for use by ByteBufferUtil. Do not modify this array !!
static final char[] byteToChar = new char[16];
@@ -91,6 +96,12 @@ public class Hex
try
{
s = stringConstructor.newInstance(0, c.length, c);
+ }
+ catch (InvocationTargetException ite) {
+ // The underlying constructor failed. Unwrapping the exception.
+ Throwable cause = ite.getCause();
+ logger.error("Underlying string constructor threw an error: {}",
+ cause == null ? ite.getMessage() : cause.getMessage());
}
catch (Exception e)
{