Sentry 사용 시 무한 스택 재귀 발생

안녕하세요!

디스코urs에서 Sentry를 사용하려고 할 때 발견한 버그에 대해 아이디어가 있는지 확인하려고 여기에 게시글을 올렸습니다. 백그라운드 작업과 서버에서 발생된 모든 에러를 수집하기 위해 Sentry(오픈소스 Glitchtip 서버 구현체: https://glitchtip.com/)를 사용하고자 합니다. 디스코urs에는 자체 에러 수집 기능인 Logster가 있다는 것을 알고 있지만, 발생된 모든 에러를 추적하고 더 많은 컨텍스트로 검사하기 위해 Sentry 사용을 시도해 보았습니다.

Sentry 설정을 포함하는 초기화 파일(initializer)을 추가했습니다:

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

  config.dsn =  ENV['SENTRY_DSN']
end

그런데 rake 작업과 sidekiq 작업의 HTTP 호출 중에 무한 재귀(infinite recursion)가 발생하는 것을 발견했습니다. (Sentry를 추가하기 전에는 정상적으로 종료되던 작업들이었습니다.) sentry-ruby에 오픈한 Github 이슈에서 더 자세한 내용과 재현 방법을 확인할 수 있습니다:

지원되지 않는 discourse_docker 리포지토리를 사용하고 있다는 것을 알고 있지만, 다른 사람이 비슷한 에러를 겪어 보았거나 아이디어가 있는지 확인하려고 어쨌든 여기에 게시글을 올렸습니다.

기존의 discourse sentry 플러그인(Discourse Sentry)이 있지만, 이는 지원되지 않는 클라이언트 라이브러리(sentry-raven)를 사용하므로 사용하지 않기로 결정했습니다.

Sentry를 Discourse와 함께 사용하고자 하는 분들을 위해, 해당 패키지의 유지보수자 중 한 명이 제안된 수정 사항을 댓글로 남겼습니다.

그들은 이 문제가 Discourse의 MethodProfiler에서 발생하고 있으며, 이 클래스가 alias_method를 사용한다고 설명했습니다(관련 코드). 두 도구가 함께 작동할 수 있도록, 점점 더 보편화되고 있는 prepend로 이를 대체할 것을 제안했습니다.

저는 Ruby에 충분히 숙련되지 않아 두 방식의 차이를 정확히 이해하지 못합니다. 당분간은 이 코드 부분을 주석 처리하여 Discourse의 메서드 프로파일링을 비활성화해 보겠습니다.