Skip to content

Commit 55e29ca

Browse files
authored
Avoid NPE on malformed/truncated failure stack traces (#1795)
Avoid NPE on malformed/truncated failure stack traces
1 parent 479cf4b commit 55e29ca

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

temporal-sdk/src/main/java/io/temporal/failure/DefaultFailureConverter.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import io.temporal.serviceclient.CheckedExceptionWrapper;
4545
import java.io.PrintWriter;
4646
import java.io.StringWriter;
47+
import java.util.ArrayList;
4748
import java.util.Optional;
4849
import java.util.regex.Matcher;
4950
import java.util.regex.Pattern;
@@ -298,11 +299,14 @@ private StackTraceElement[] parseStackTrace(String stackTrace) {
298299
try {
299300
@SuppressWarnings("StringSplitter")
300301
String[] lines = stackTrace.split("\r\n|\n");
301-
StackTraceElement[] result = new StackTraceElement[lines.length];
302+
ArrayList<StackTraceElement> result = new ArrayList<>(lines.length);
302303
for (int i = 0; i < lines.length; i++) {
303-
result[i] = parseStackTraceElement(lines[i]);
304+
StackTraceElement elem = parseStackTraceElement(lines[i]);
305+
if (elem != null) {
306+
result.add(elem);
307+
}
304308
}
305-
return result;
309+
return result.toArray(new StackTraceElement[result.size()]);
306310
} catch (Exception e) {
307311
if (log.isWarnEnabled()) {
308312
log.warn("Failed to parse stack trace: " + stackTrace);

0 commit comments

Comments
 (0)