Message bus가 DISCOURSE_LONG_POLLING_BASE_URL 설정을 무시하고 항상 "/"를 사용합니다

문제 설명

최근 새로운 CDN 서비스를 설정하고 app.yml에서 DISCOURSE_LONG_POLLING_BASE_URL을 구성하여, 롱 폴링(long polling) 서비스를 원래 서버와 분리하려 했습니다.

그러나 메시지 버스가 구성한 롱 폴링 기본 URL을 무시하고 계속 "/"로 요청을 보내고 있습니다.

재현 단계

  1. app.yml에서 DISCOURSE_LONG_POLLING_BASE_URL을 사용자 지정 CDN URL로 구성합니다.
  2. Discourse를 다시 빌드하고 시작합니다.
  3. 프론트엔드가 환경 변수 값을 올바르게 읽는지 확인합니다.
  4. 브라우저 개발자 도구의 네트워크 탭에서 메시지 버스 네트워크 요청을 관찰합니다.

스크린샷

프론트엔드가 설정을 올바르게 읽는 모습:

예상 동작

long_polling_base_url 설정이 제공된 경우, 메시지 버스는 해당 설정을 사용하여 요청을 보내야 합니다.

실제 동작

DISCOURSE_LONG_POLLING_BASE_URL 구성과 관계없이 메시지 버스는 계속 "/"로 요청을 보내고 있습니다.

근본 원인

문제는 app/assets/javascripts/discourse/app/instance-initializers/message-bus.js 파일에 있습니다.

messageBus.baseUrl을 설정하는 로직이 long_polling_base_url 사이트 설정을 올바르게 처리하지 않아, 사용자 지정 URL이 구성되어 있더라도 기본적으로 /로 설정되도록 되어 있었습니다.

수정 사항

메시지 버스 인스턴스 초기화 프로그램에서 문제를 식별하고 수정했습니다. 이 수정은 siteSettings.long_polling_base_url이 설정되어 있고 "/"이 아닌 경우, 메시지 버스의 기본 URL이 올바르게 구성되도록 보장합니다.

풀 리퀘스트: FIX: Respect long_polling_base_url setting for message bus configuration - Pull Request #34477 - discourse/discourse - GitHub

검증

  • 프론트엔드가 환경 변수를 올바르게 읽는지 확인했습니다.
  • 설정을 존중하도록 메시지 버스 초기화 로직을 수정했습니다.
  • 모든 포맷 체크를 통과했습니다.
  • 메시지 버스가 이제 구성한 롱 폴링 기본 URL을 올바르게 사용하고 있습니다.

이 버그는 사용자 지정 CDN 설정과 함께 롱 폴링을 사용하는 모든 Discourse 설치에 영향을 미치며, 메시지 버스 요청에 대한 적절한 CDN 활용을 방해합니다.


@David_Ghost 님께 감사드립니다. 아래에서 해당 논의에 참여해 주세요:

1개의 좋아요

네, 좋은 수정이네요. 기여해 주셔서 감사합니다!

2개의 좋아요