Repository: ignite
Updated Branches:
  refs/heads/ignite-5239 [created] ebd268726


IGNITE-5239 Add suppressed errors to stacktrace.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ebd26872
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ebd26872
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ebd26872

Branch: refs/heads/ignite-5239
Commit: ebd268726072a64de59c4ad4857f08a5a16eaa79
Parents: 2ba6ab4
Author: Alexey Kuznetsov <[email protected]>
Authored: Mon Jun 5 22:39:18 2017 +0700
Committer: Alexey Kuznetsov <[email protected]>
Committed: Mon Jun 5 22:39:18 2017 +0700

----------------------------------------------------------------------
 .../http/jetty/GridJettyObjectMapper.java       | 39 +++++++++++++++++---
 .../frontend/app/modules/sql/sql.controller.js  | 10 ++++-
 2 files changed, 41 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ebd26872/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
----------------------------------------------------------------------
diff --git 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
index 5a94315..9f217c6 100644
--- 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
+++ 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
@@ -34,6 +34,7 @@ import java.text.DateFormat;
 import java.util.Locale;
 import 
org.apache.ignite.internal.processors.cache.query.GridCacheSqlIndexMetadata;
 import org.apache.ignite.internal.processors.cache.query.GridCacheSqlMetadata;
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.visor.util.VisorExceptionWrapper;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgniteUuid;
@@ -118,10 +119,12 @@ public class GridJettyObjectMapper extends ObjectMapper {
 
     /** Custom serializer for {@link Throwable} */
     private static final JsonSerializer<Throwable> THROWABLE_SERIALIZER = new 
JsonSerializer<Throwable>() {
-        /** {@inheritDoc} */
-        @Override public void serialize(Throwable e, JsonGenerator gen, 
SerializerProvider ser) throws IOException {
-            gen.writeStartObject();
-
+        /**
+         * @param e Exception to write.
+         * @param gen JSON generator.
+         * @throws IOException If failed to write.
+         */
+        private void writeException(Throwable e, JsonGenerator gen) throws 
IOException {
             if (e instanceof VisorExceptionWrapper) {
                 VisorExceptionWrapper wrapper = (VisorExceptionWrapper)e;
 
@@ -133,8 +136,8 @@ public class GridJettyObjectMapper extends ObjectMapper {
             if (e.getMessage() != null)
                 gen.writeStringField("message", e.getMessage());
 
-            if (e.getCause() != null)
-                gen.writeObjectField("cause", e.getCause());
+            if (e.getMessage() != null)
+                gen.writeStringField("message", e.getMessage());
 
             if (e instanceof SQLException) {
                 SQLException sqlE = (SQLException)e;
@@ -142,6 +145,30 @@ public class GridJettyObjectMapper extends ObjectMapper {
                 gen.writeNumberField("errorCode", sqlE.getErrorCode());
                 gen.writeStringField("SQLState", sqlE.getSQLState());
             }
+        }
+
+        /** {@inheritDoc} */
+        @Override public void serialize(Throwable e, JsonGenerator gen, 
SerializerProvider ser) throws IOException {
+            gen.writeStartObject();
+
+            writeException(e, gen);
+
+            if (e.getCause() != null)
+                gen.writeObjectField("cause", e.getCause());
+
+            if (!F.isEmpty(e.getSuppressed())) {
+                gen.writeArrayFieldStart("suppressed");
+
+                for (Throwable sup : e.getSuppressed()) {
+                    gen.writeStartObject();
+
+                    writeException(sup, gen);
+
+                    gen.writeEndObject();
+                }
+
+                gen.writeEndArray();
+            }
 
             gen.writeEndObject();
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/ebd26872/modules/web-console/frontend/app/modules/sql/sql.controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/sql/sql.controller.js 
b/modules/web-console/frontend/app/modules/sql/sql.controller.js
index c8fcf8f..f0dc0b1 100644
--- a/modules/web-console/frontend/app/modules/sql/sql.controller.js
+++ b/modules/web-console/frontend/app/modules/sql/sql.controller.js
@@ -1778,10 +1778,16 @@ export default ['$rootScope', '$scope', '$http', '$q', 
'$timeout', '$interval',
 
                 const tab = '&nbsp;&nbsp;&nbsp;&nbsp;';
 
+                const addToTrace = (item) => {
+                    const clsName = _.isEmpty(item.className) ? '' : '[' + 
JavaTypes.shortClassName(item.className) + '] ';
+
+                    scope.content.push((scope.content.length > 0 ? tab : '') + 
clsName + item.message);
+                };
+
                 while (_.nonNil(cause)) {
-                    const clsName = _.isEmpty(cause.className) ? '' : '[' + 
JavaTypes.shortClassName(cause.className) + '] ';
+                    addToTrace(cause);
 
-                    scope.content.push((scope.content.length > 0 ? tab : '') + 
clsName + cause.message);
+                    _.forEach(cause.suppressed, (sup) => addToTrace(sup));
 
                     cause = cause.cause;
                 }

Reply via email to