오늘 3.1.0 업데이트 이후로 검색 기능이 더 이상 작동하지 않습니다.
시스템 관리 팀이 문제를 식별하고 이것이 애플리케이션 오류임을 나타내는 로그를 제공했습니다.
다른 분들도 이 문제를 겪고 계신가요? 우리가 스스로 문제를 해결할 수 있도록 단서가 될 수 있는 것이 있을까요? Discourse Meta에서는 검색이 완벽하게 작동하는 것을 확인했습니다.
Started GET "/search?q=37%20%20realm&page=1" for [IP_REDACTED] at 2023-01-13 11:19:36 +0000
Processing by SearchController#show as JSON
Parameters: {"q"=>"37 realm", "page"=>"1"}
Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.0ms | Allocations: 1555)
ArgumentError (wrong number of arguments (given 1, expected 0))
lib/search.rb:285:in `execute'
app/controllers/search_controller.rb:73:in `show'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/008-rack-cors.rb:24:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Failed to handle exception in exception app middleware : ArgumentError : wrong number of arguments (given 1, expected 0)
문제 스크린샷
Jagster
(Jakke Flemming)
1월 13, 2023, 11:42오전
2
전혀 흔한 문제는 아닐 것 같은데 — 제 것은 정상적으로 작동합니다. 여기에서도 마찬가지입니다(메타가 최신 버전일 거라고 추측하지만요).
/safe-mode를 시도하면 어떤 일이 발생하나요?
안타깝게도 안전 모드에서도 작동하지 않습니다. 테마와 플러그인이 비활성화된 상태입니다.
검색이 토픽/포스트에는 작동하지 않지만 , 카테고리/태그와 사용자에게는 정상적으로 작동하는 것을 확인했습니다.
Falco
(Falco)
1월 13, 2023, 12:27오후
5
외부 PostgreSQL 인스턴스를 사용 중인가요? 그렇다면 버전은 무엇인가요?
네, 외부 PostgreSQL을 사용하고 있습니다. 버전은 14.6-1입니다.
Falco
(Falco)
1월 13, 2023, 1:14오후
7
PostgreSQL 14 환경에서 검색 기능이 완전히 작동하지 않습니다. 그래서 표준 설치 가이드를 따르는 모든 사용자에게 여전히 PostgreSQL 13을 제공하고 있습니다.
결국 PostgreSQL 15(또는 16)로 업그레이드할 때 이를 수정할 예정이지만, 시간이 좀 걸릴 수 있습니다.
감사합니다. 이전에 다른 PostgreSQL 버전을 사용했던 경우라면, 해당 문제가 어떻게 발생했을 수 있는지 조사하고 있습니다. 원인을 파악하는 대로 다시 연락드리겠습니다.
Stephen
(Stephen)
1월 13, 2023, 1:47오후
9
kinetiksoft:
IF
이전에 14를 사용했는지는 크게 중요하지 않습니다. Discourse는 PostgreSQL 14와 호환되지 않기 때문입니다. 이것이 문제의 핵심입니다.
Cloud 문서에는 서버 요구 사항이 전혀 기재되어 있지 않아, 대신 discourse/docs/INSTALL.md at main · discourse/discourse · GitHub 문서를 확인했습니다.
여기 에서 “Postgres 13+” 요구 사항을 확인할 수 있습니다. Discourse가 13.X 버전만 지원한다는 안내를 팀에 추가해 달라고 제안하는 것이 틀린 것일까요? 또한 우리와 같은 경우를 위해 14/15/… 버전은 지원되지 않는다는 명시적인 안내도 도움이 될 수 있습니다.
저희는 최소 12월부터 14 버전을 사용해 왔으며, 몇 개월 전부터는 Discourse의 Stable 버전을 설치해 두었습니다. 최근에는 tests-passed 버전으로 돌아가 검색 기능이 정상적으로 작동하는 것을 확인했습니다. 그런데 오늘 2.9.0.beta14에서 3.1.0.beta1로 업데이트한 후 문제가 발생했습니다.
설치되어 있으며, 관리자 설정에서 비활성화되어 있습니다.
또한 안전 모드에서도 문제를 재현해 보았습니다. 이것이 중요할까요?
Benjamin_D
(Benjamin Decotte)
1월 13, 2023, 2:35오후
13
불분명하지만, 제 경우에도 그 문제가 원인이었습니다 (동일한 증상 - 다만 PostgreSQL 13 환경이었죠).
Richard가 곧 패치를 적용할 거라고 확신합니다. 그 때까지는 포크를 만들고 간단한 편집을 하는 것이 해결책입니다.
pfaffman
(Jay Pfaffman)
1월 13, 2023, 2:37오후
14
아, 진짜. 얼마 전 실수로 한 사이트를 PG14로 업그레이드했는데, 괜찮을 거라고 생각했거든요.
검색을 몇 번 해봤는데, 눈에 띄게 심각하게 깨진 것 같지는 않았습니다. 그리고 사이트가 대부분 중국어라, 제가 제대로 알아채기 어려울 수도 있고요.
도대체 얼마나 깨져 있고, 고치려면 얼마나 어려울까요?
david
(David Taylor)
1월 13, 2023, 2:40오후
15
안전 모드는 클라이언트 측에만 영향을 미칩니다. 이 오류는 서버에서 발생하고 있습니다. 이 오류가 비공개 답장 플러그인과 관련이 있는지 확인하려면 해당 플러그인을 완전히 제거해야 합니다.
이 오류는 Ruby 3.1 플러그인 호환성 문제와 관련이 있을 가능성이 높아 보입니다.
Benjamin_D
(Benjamin Decotte)
1월 13, 2023, 2:45오후
16
그러면 플러그인의 execute(readonly_mode) 때문일 것이라고 꽤 확신합니다 (그리고 왜 그런지는 전혀 모르겠네요 )
Falco
(Falco)
1월 13, 2023, 2:53오후
17
맞습니다, @Benjamin_D .
그 플러그인은 검색을 깨뜨리고 500 오류를 발생시킵니다.
하지만 PostgreSQL 14 이상을 실행하는 것 역시 검색을 깨뜨리지만, pg13에서 반환되던 많은 결과가 pg14 이상에서는 반환되지 않는다는 점에서 더 은밀하게 영향을 줍니다.
따라서 @kinetiksoft가 플러그인을 제거하고 다시 빌드하면 검색 오류는 사라지겠지만, pg 버전 문제 때문에 여전히 정상적으로 작동하지는 않을 것입니다.
이제 Discourse Private Replies 플러그인 을 제거했으므로, 검색 기능이 예상대로 정상 작동하는 것을 확인했습니다.
서버 측에서는 변경 사항이 없었으며, PostgreSQL 버전은 여전히 14.6-1입니다. 하지만 다음 주에는 다운그레이드 옵션을 검토할 예정입니다.
모두 감사합니다. 이번 주말 동안 검색 기능을 살려주셨습니다.
P.S. 공식 문서에 PostgreSQL 버전에 대한 주의 사항을 추가해 주시기를 Discourse의 GitHub 팀에 정중히 요청드립니다:
I’ve checked the discourse/docs/INSTALL.md at main · discourse/discourse · GitHub documentation instead, as Cloud documentation doesn’t have server requirements at all.
We see “Postgres 13+” requirement here . May I be wrong by suggesting to your team to add a notice that Discourse supports 13.X versions only? Maybe, explicit notice of 14/15/… versions are not supported would be helpful too in such cases like ours.
You see, we had Version 14 for at least since December, and we had Stable versio…
Stephen
(Stephen)
1월 13, 2023, 3:28오후
19
외부 PostgreSQL 실행에 대한 문서를 확인해 보셨나요? 해당 문서는 github가 아닌 Meta에 있습니다. 모든 문서는 Documentation - Discourse Meta 에서 확인하실 수 있습니다.
Let’s say you’re using AWS RDS, or an existing PostgreSQL server managed elsewhere. It’s fairly straightforward to get Discourse to use such a setup, without needing to grant superuser privileges to anything that Discourse itself runs. Here’s how.
Prerequisites
Discourse requires PostgreSQL’s major version to match what we ship with in our docker images ; if you try to run on a newer or older version, it might work, but we don’t guarantee it, and if something breaks in the future, you get to …
RGJ
(Richard - Communiteq)
1월 13, 2023, 3:35오후
20
모두에게 사과드립니다! 개인 답장 플러그인이 검색을 실제로 깨뜨리고 있었습니다 (또는: Ruby 3.1이 플러그인을 깨뜨리고 있었습니다).
이제 다시 정상 작동합니다.