mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-09-18 17:51:01 +02:00
parent
fe66c2dd63
commit
aae8dab7c3
@ -225,14 +225,13 @@ public class ErrorLogger implements ErrorHandler {
|
|||||||
private String hash(Throwable e) {
|
private String hash(Throwable e) {
|
||||||
StringBuilder seed = new StringBuilder();
|
StringBuilder seed = new StringBuilder();
|
||||||
Throwable cause = e;
|
Throwable cause = e;
|
||||||
Set<String> alreadyPresent = new HashSet<>();
|
String previousLine = null;
|
||||||
while (cause != null) {
|
while (cause != null) {
|
||||||
for (StackTraceElement element : cause.getStackTrace()) {
|
for (StackTraceElement element : cause.getStackTrace()) {
|
||||||
String asLine = element.toString();
|
String asLine = element.toString();
|
||||||
if (!alreadyPresent.contains(asLine)) {
|
if (asLine.equals(previousLine)) continue;
|
||||||
seed.append(asLine);
|
seed.append(asLine);
|
||||||
}
|
previousLine = asLine;
|
||||||
alreadyPresent.add(asLine);
|
|
||||||
}
|
}
|
||||||
cause = e.getCause();
|
cause = e.getCause();
|
||||||
}
|
}
|
||||||
@ -245,7 +244,7 @@ public class ErrorLogger implements ErrorHandler {
|
|||||||
Deduplicator deduplicator = new Deduplicator();
|
Deduplicator deduplicator = new Deduplicator();
|
||||||
for (StackTraceElement element : e.getStackTrace()) {
|
for (StackTraceElement element : e.getStackTrace()) {
|
||||||
String line = element.toString();
|
String line = element.toString();
|
||||||
deduplicator.getLine(line).ifPresent(trace::add);
|
trace.addAll(deduplicator.getLines(line));
|
||||||
}
|
}
|
||||||
deduplicator.getLeftoverDuplicateCountLine().ifPresent(trace::add);
|
deduplicator.getLeftoverDuplicateCountLine().ifPresent(trace::add);
|
||||||
Throwable[] suppressed = e.getSuppressed();
|
Throwable[] suppressed = e.getSuppressed();
|
||||||
@ -264,25 +263,25 @@ public class ErrorLogger implements ErrorHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static class Deduplicator {
|
private static class Deduplicator {
|
||||||
private final Set<String> lines = new HashSet<>();
|
private String previousLine = null;
|
||||||
private String lastDuplicate = null;
|
private String lastDuplicate = null;
|
||||||
private int duplicateCount = 0;
|
private int duplicateCount = 0;
|
||||||
|
|
||||||
public Optional<String> getLine(String line) {
|
public List<String> getLines(String line) {
|
||||||
if (duplicateCount > 0 && !line.equals(lastDuplicate)) {
|
if (duplicateCount > 0 && !line.equals(lastDuplicate)) {
|
||||||
String returnLine = " x " + duplicateCount;
|
String returnLine = " x " + duplicateCount;
|
||||||
duplicateCount = 0;
|
duplicateCount = 1;
|
||||||
return Optional.of(returnLine);
|
return Arrays.asList(returnLine, " " + line);
|
||||||
} else if (line.equals(lastDuplicate)) {
|
} else if (line.equals(lastDuplicate)) {
|
||||||
duplicateCount++;
|
duplicateCount++;
|
||||||
return Optional.empty();
|
return Collections.emptyList();
|
||||||
} else if (lines.contains(line)) {
|
} else if (line.equals(previousLine)) {
|
||||||
lastDuplicate = line;
|
lastDuplicate = line;
|
||||||
duplicateCount = 1;
|
duplicateCount = 2;
|
||||||
return Optional.empty();
|
return Collections.emptyList();
|
||||||
} else {
|
} else {
|
||||||
lines.add(line);
|
previousLine = line;
|
||||||
return Optional.of(" " + line);
|
return Collections.singletonList(" " + line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user