Skip to content

Commit

Permalink
dont bother with determinCulprit(), couldnt get it working
Browse files Browse the repository at this point in the history
  • Loading branch information
tpetr committed Jan 26, 2015
1 parent 55f2b28 commit 85bcfa9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,6 @@ public class SentryConfiguration {
@JsonProperty("prefix")
private String prefix = "";

@JsonProperty
@NotNull
private List<String> ignoredTraceSignatures = Arrays.asList("ch.qos.logback", "org.log4j", "sun.reflect");

@JsonProperty
@NotNull
private List<String> singularityTraceSignatures = Arrays.asList("com.hubspot");

public String getDsn() {
return dsn;
}
Expand All @@ -41,20 +33,4 @@ public String getPrefix() {
public void setPrefix(String prefix) {
this.prefix = prefix;
}

public List<String> getIgnoredTraceSignatures() {
return ignoredTraceSignatures;
}

public void setIgnoredTraceSignatures(List<String> ignoredTraceSignatures) {
this.ignoredTraceSignatures = ignoredTraceSignatures;
}

public List<String> getSingularityTraceSignatures() {
return singularityTraceSignatures;
}

public void setSingularityTraceSignatures(List<String> singularityTraceSignatures) {
this.singularityTraceSignatures = singularityTraceSignatures;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,31 +34,6 @@ public class SingularityExceptionNotifier {
private final Optional<Raven> raven;
private final Optional<SentryConfiguration> sentryConfiguration;

private final Predicate<StackTraceElement> isSingularityTraceSignature = new Predicate<StackTraceElement>() {
@Override
public boolean apply(StackTraceElement input) {
for (String sig : sentryConfiguration.get().getSingularityTraceSignatures()) {
if (!input.getClassName().contains(sig)) {
return true;
}
}

return false;
}
};

private final Predicate<StackTraceElement> isIgnoredStackTraceElement = new Predicate<StackTraceElement>() {
@Override
public boolean apply(StackTraceElement input) {
for (String sig : sentryConfiguration.get().getIgnoredTraceSignatures()) {
if (input.getClassName().contains(sig)) {
return true;
}
}
return false;
}
};

@Inject
public SingularityExceptionNotifier(Optional<SentryConfiguration> sentryConfiguration) {
this.sentryConfiguration = sentryConfiguration;
Expand All @@ -78,34 +53,13 @@ private String getPrefix() {
}

private String getCallingClassName(StackTraceElement[] stackTrace) {
if (stackTrace != null && stackTrace.length > 1) {
return stackTrace[1].getClassName();
if (stackTrace != null && stackTrace.length > 2) {
return stackTrace[2].getClassName();
} else {
return "(unknown)";
}
}

private String determineCulprit(final Throwable exception) {
Throwable cause = exception;
String culprit = null;

while (cause != null) {
final List<StackTraceElement> elements = new ArrayList<>(cause.getStackTrace().length);

if(elements.size() > 0){
final StackTraceElement root = Iterables.tryFind(elements, Predicates.not(isIgnoredStackTraceElement)).or(elements.get(0));
final Optional<StackTraceElement> lastSingularityElement = Iterables.tryFind(elements, Predicates.and(isSingularityTraceSignature, Predicates.not(isIgnoredStackTraceElement)));

final String singularityCulprit = lastSingularityElement.isPresent() ? String.format("%s.%s():%s", lastSingularityElement.get().getClassName(), lastSingularityElement.get().getMethodName(), lastSingularityElement.get().getLineNumber()) : "";
culprit = String.format("%s.%s():%s:%s|%s", root.getClassName(), root.getMethodName(), root.getLineNumber(), Throwables.getRootCause(exception).getClass().getName(), singularityCulprit);
}

cause = cause.getCause();
}

return culprit;
}

private void sendEvent(Raven raven, final EventBuilder eventBuilder) {
raven.runBuilderHelpers(eventBuilder);

Expand All @@ -117,13 +71,13 @@ public void notify(Throwable t, Map<String, String> extraData) {
return;
}

final String culprit = determineCulprit(t);
final StackTraceElement[] currentThreadStackTrace = Thread.currentThread().getStackTrace();

final EventBuilder eventBuilder = new EventBuilder()
.setCulprit(getPrefix() + culprit)
.setCulprit(getPrefix() + t.getMessage())
.setMessage(Strings.nullToEmpty(t.getMessage()))
.setLevel(Event.Level.ERROR)
.setLogger(getCallingClassName(Thread.currentThread().getStackTrace()))
.setLogger(getCallingClassName(currentThreadStackTrace))
.addSentryInterface(new ExceptionInterface(t));

if (extraData != null && !extraData.isEmpty()) {
Expand All @@ -140,10 +94,12 @@ public void notify(String subject, Map<String, String> extraData) {
return;
}

final StackTraceElement[] currentThreadStackTrace = Thread.currentThread().getStackTrace();

final EventBuilder eventBuilder = new EventBuilder()
.setMessage(getPrefix() + subject)
.setLevel(Event.Level.ERROR)
.setLogger(getCallingClassName(Thread.currentThread().getStackTrace()));
.setLogger(getCallingClassName(currentThreadStackTrace));

if (extraData != null && !extraData.isEmpty()) {
for (Map.Entry<String, String> entry : extraData.entrySet()) {
Expand Down

0 comments on commit 85bcfa9

Please sign in to comment.