Improve error handling - root cause and stack trace delivered to cloud from edge in case of errors
This commit is contained in:
parent
1b191acace
commit
1d9a2bad84
@ -244,7 +244,7 @@ public final class EdgeGrpcSession implements Closeable {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable t) {
|
||||
String errorMsg = t.getMessage() != null ? t.getMessage() : "";
|
||||
String errorMsg = EdgeUtils.createErrorMsgFromRootCauseAndStackTrace(t);
|
||||
UplinkResponseMsg uplinkResponseMsg = UplinkResponseMsg.newBuilder()
|
||||
.setUplinkMsgId(uplinkMsg.getUplinkMsgId())
|
||||
.setSuccess(false).setErrorMsg(errorMsg).build();
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
package org.thingsboard.server.common.data;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.google.common.base.Throwables;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.thingsboard.server.common.data.edge.EdgeEvent;
|
||||
import org.thingsboard.server.common.data.edge.EdgeEventActionType;
|
||||
@ -29,6 +30,8 @@ import java.util.concurrent.ThreadLocalRandom;
|
||||
@Slf4j
|
||||
public final class EdgeUtils {
|
||||
|
||||
private static final int STACK_TRACE_LIMIT = 10;
|
||||
|
||||
private EdgeUtils() {
|
||||
}
|
||||
|
||||
@ -93,4 +96,20 @@ public final class EdgeUtils {
|
||||
edgeEvent.setBody(body);
|
||||
return edgeEvent;
|
||||
}
|
||||
|
||||
public static String createErrorMsgFromRootCauseAndStackTrace(Throwable t) {
|
||||
Throwable rootCause = Throwables.getRootCause(t);
|
||||
StringBuilder errorMsg = new StringBuilder(rootCause.getMessage() != null ? rootCause.getMessage() : "");
|
||||
if (rootCause.getStackTrace().length > 0) {
|
||||
int idx = 0;
|
||||
for (StackTraceElement stackTraceElement : rootCause.getStackTrace()) {
|
||||
errorMsg.append("\n").append(stackTraceElement.toString());
|
||||
idx++;
|
||||
if (idx > STACK_TRACE_LIMIT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return errorMsg.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user