diff --git a/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java b/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java index 99184413c05b9..970f2dc64755c 100644 --- a/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java +++ b/community/kernel/src/main/java/org/neo4j/helpers/Exceptions.java @@ -21,6 +21,8 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.io.PrintWriter; +import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.lang.Thread.State; import java.lang.reflect.Field; @@ -150,21 +152,16 @@ public static Throwable rootCause( Throwable caughtException ) return root; } - public static String stringify( Throwable cause ) + public static String stringify( Throwable throwable ) { - try - { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - PrintStream target = new PrintStream( bytes, true, UTF_8.name() ); - cause.printStackTrace( target ); - target.flush(); - return bytes.toString( UTF_8.name()); - } - catch ( UnsupportedEncodingException e ) + if ( throwable == null ) { - cause.printStackTrace(System.err); - return "[ERROR: Unable to serialize stacktrace, UTF-8 not supported.]"; + return null; } + + StringWriter stringWriter = new StringWriter(); + throwable.printStackTrace( new PrintWriter( stringWriter ) ); + return stringWriter.toString(); } public static String stringify( Thread thread, StackTraceElement[] elements ) diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java index f2653cb93cad4..673efa64b4c01 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/ClusterLocksIT.java @@ -41,6 +41,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import static org.neo4j.helpers.Exceptions.stringify; import static org.neo4j.kernel.impl.ha.ClusterManager.allSeesAllAsAvailable; import static org.neo4j.kernel.impl.ha.ClusterManager.instanceEvicted; @@ -124,7 +125,7 @@ public void run() thread.join(); Throwable throwable = ref.get(); - assertNull( "" + throwable, throwable ); + assertNull( stringify( throwable ), throwable ); } private void takeExclusiveLockOnSameNodeAfterSwitch( Label testLabel, HighlyAvailableGraphDatabase master,