Unendliche Stack-Rekursion bei Verwendung von Sentry

Hallo!

Ich wollte hier posten, um zu sehen, ob jemand Ideen zu diesem Fehler hat, den ich sehe, wenn ich versuche, Sentry mit Discourse zu verwenden. Ich möchte Sentry (unter Verwendung der Open-Source-Glitchtip-Serverimplementierung) verwenden, um alle Fehler zu sammeln, die in Hintergrundaufgaben und auf dem Server auftreten. Ich weiß, dass Discourse seine eigene Fehlererfassung mit Logster hat, aber ich wollte versuchen, Sentry zu verwenden, um alle aufgetretenen Fehler zu verfolgen und sie mit mehr Kontext zu untersuchen.

Ich habe einen Initialisierer mit der Sentry-Konfiguration hinzugefügt:

Sentry.init do |config|
  config.breadcrumbs_logger = [:active_support_logger, :http_logger]

  config.dsn =  ENV['SENTRY_DSN']
end

und stellte fest, dass es während HTTP-Aufrufen von Rake-Aufgaben und Sidekiq-Aufgaben unendlich rekursiv war (auch wenn sie sauber beendet wurden, bevor Sentry hinzugefügt wurde). Es gibt weitere Details und eine Möglichkeit zur Reproduktion in dem GitHub-Issue, das ich bei sentry-ruby eröffnet habe:

Ich weiß, dass ich nicht das unterstützte discourse_docker-Repository verwende, aber ich wollte trotzdem hier posten, um zu sehen, ob jemand anderes auf einen ähnlichen Fehler gestoßen ist und Ideen hat.

Beachten Sie, dass es ein bestehendes Discourse-Sentry-Plugin gibt (Discourse Sentry), aber es verwendet eine nicht unterstützte Clientbibliothek (sentry-raven), daher habe ich mich entschieden, es nicht zu verwenden.

Für alle, die Sentry mit Discourse verwenden möchten: Einer der Maintainer des Pakets hat eine vorgeschlagene Lösung geantwortet.

Sie sagten, dass das Problem von Discourse’s MethodProfiler herrührte das alias_method verwendet. Sie schlugen vor, dies durch prepend zu ersetzen, was ihrer Meinung nach immer üblicher wurde und es beiden Werkzeugen ermöglichen würde, zusammenzuarbeiten.

Ich bin nicht vertraut genug mit Ruby, um die Unterschiede zu verstehen. Vorerst werde ich versuchen, diesen Code auszukommentieren, um das Method-Profiling von Discourse zu deaktivieren.

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.