사용자 메시지 받은편지함 오류 500

이것은 안전한 업로드에서만 호출됩니다. 과거에 이 항목을 구성해 두었다가 나중에 제거한 것으로 추정됩니다.

여기서 무엇이 반환됩니까?

./launcher enter app
rails c
> Upload.where('secure').count

@mart 님에게 공유합니다.

(또한 site_setting.rb:157:in absolute_base_url'에 네이밍 버그가 있습니다. s3_absolute_base_url로 명명되어야 합니다.)

샘, 안녕하세요.

그 문제를 확인해 주셔서 정말 감사합니다!

제가 아는 한, 우리는 보안 업로드 기능을 활성화하지 않았습니다. 하지만 제가 유일한 관리자가 아니기 때문에 그 부분에 대해서는 확신할 수 없습니다. 그리고 제 이해가 맞다면, 해당 기능이 한 번도 활성화된 적 없다면 카운트가 0을 반환해야 하는 것 아닌가요? 음, 0보다 훨씬 많네요. ;-D 실제로 235개입니다 :blush:

이것은 다음을 반환합니다

[1] pry(main)> Upload.where('secure').count
=> 235
[2] pry(main)> 

이를 수정하기 위해 제가 할 수 있는 일이 있을까요?

seucure media allow embeded images in emails 설정을 비활성화해야 하나요?

secure media를 활성화했다가 다시 비활성화해 보는 것이 효과가 있을까요?

여기서 도움을 주려고 노력해 주셔서 정말 감사합니다!

현재 보안 미디어가 활성화되어 있지 않다면 활성화할 필요가 없습니다. 보안 업로드 수가 많으므로, 과거에 활성화되어 있었을 가능성이 높습니다. uploads:secure_upload_analyse_and_update rake 작업을 실행해 보세요. 이 작업은 모든 업로드를 순회하여 사이트 설정에 따라 보안/비보안으로 표시합니다(보안 미디어가 비활성화된 경우 모두 비보안으로 표시됩니다).

마틴, 안녕하세요.

정말 감사합니다. 오늘 밤 시도해 보겠습니다.

정확히 이해했는지 확인하고 싶습니다. 현재 우리는

옵션을 활성화해 두었습니다.

이 옵션도 변경해야 할까요? 아니면 마킹(marking) 과정에 영향을 주지 않는 건가요?

그리고 명확히 하기 위해, rake 명령을 실행한 후 앱을 다시 빌드해야 하나요? 아니면 필수 사항은 아니지만 권장 사항일 뿐인가요?

다시 한번 감사합니다!

이 옵션은 기본적으로 활성화되어 있지만, secure media가 활성화되지 않으면 아무런 효과가 없습니다.

재빌드가 필요하지 않다고 생각합니다. 라이브 사이트에서 이 작업을 수행했을 때 문제가 없었습니다.

정말 감사합니다!

한 번 시도해 보고 내일 결과를 알려드릴게요.

감사합니다, 감사합니다!

추측이긴 하지만, 백트레이스를 보면 메시지 목록이나 메시지 내 정보 목록을 직렬화하려다 특정 이미지 직렬화에서 실패하는 것으로 보입니다. 해당 이미지는 아마도 사용자의 프로필 이미지일 것입니다. 영향을 받은 계정은 하나뿐이므로, 문제의 이미지는 이 계정보다 한 번이라도 대화한 사용자의 것일 수 있습니다.

실패하는 목록 구성은 최근 N개의 메시지를 대상으로 하는 것일 수 있습니다. 문제의 계정에 서로 다른 제목의 N개 메시지를 보내면, 목록에 정상적인 메시지만 포함되도록 할 수 있습니다.

Martin, 팁 주셔서 다시 한번 감사합니다.

rake uploads:secure_upload_analyse_and_update를 실행해 보았지만 출력 결과는 다음과 같았습니다.

이 작업은 외부 저장소에서만 작동합니다.

그래서 activate secure media 옵션을 활성화해 보았습니다. 하지만 불행히도, 혹은 관리 오류를 방지하기 위한 조치라고 할 수 있겠는데, 이 옵션은 Amazon S3 버킷을 설정해야만 활성화할 수 있습니다. 그리고 과거에 S3 설정을 한 적이 전혀 없었던 것에는 확신이 있습니다.

따라서 S3 저장소를 사용할 수 없기 때문에 rake 스크립트를 실행할 수 없습니다. 그래서 pry(main)> Upload.where('secure').count에 어떤 영향을 미치는지 단정할 수 없습니다.

S3를 활성화한 적이 없는데 왜 여전히 몇몇의 보안 업로드(secure uploads)가 남아 있는 것일까요?

이 부분에 대해 어떤 단서가 있을까요?

하지만 사실,

이 방법이 효과가 있었습니다. 지금은 문제가 해결되어 괜찮습니다. 왜 이런 현상이 발생하는지 이유는 모르겠지만, 다른 원인이 있을 수 있다면 알고 싶습니다.

미리 감사드리며, 이미 투자해 주신 시간에도 감사드립니다.

음, Ed_S님, 뭘 말씀드릴 수 있을까요?

정말 감사합니다

사실 그 작은 힌트가 효과가 있었어요. 새 메시지를 하나 작성하고 다른 답변을 게시한 후 에러가 사라졌거든요.

잠시 동안 제 영웅이 되었다고 해서 더 이상의 질문에서 자유로워지는 건 아니죠 :wink: 여기서 도대체 무슨 일이 있었는지 좀 더 이해할 수 있도록 도와주실 수 있을까요?

우선 로그를 읽는 법에 대해 더 잘 이해할 수 있도록 해주세요. 정말 좋은 추측이셨어요. 직렬화(serialization) 문제가 원인이 될 수 있다고 생각하게 된 계기가 무엇이었나요?

lib/url_helper.rb:90:in `cook_url'
app/models/topic.rb:126:in `image_url'
app/serializers/listable_topic_serializer.rb:34:in `image_url'

cook_url이 아니라 왜 직렬화 문제라고 보신 건가요? 아니면 제가 모르는 다른 이유가 있나요?

두 번째로, 당신의 추측(consumptions)은 무엇인가요? 이런 문제가 다시 발생하는 것에 대해 경계해야 하나요? 아니면 다른 사용자와 관련이 있을 수도 있나요?

어떤 메시지, 사용자, 이미지가 문제의 원인인지 좁혀낼 수 있는 방법이 있을까요? 사적인 메시지 게시물을 하나씩 클릭하며 효과를 확인하는 것 외에 다른 방법이 있을까요?

재미있는 점은 몇몇 관리자가 정확히 같은 작업을, 즉 영향받은 계정에 새 메시지(토픽)를 작성하는 작업을 수행했는데 다른 행동은 관찰되지 않았다는 거예요. 어떻게 보면 제가 영향받은 계정으로 보낸 마지막 메시지가 해결책이었던 것 같습니다.

마지막으로, 긴급 상황에서 연락할 수 있는 전화번호를 알려주실 수 있을까요? 농담이에요! :wink:

진심으로, 정말 많이, 아주 많이, 엄청나게 감사합니다. 여기에서 막혀버렸었는데, 언급했듯이 우리 사용자(관리자 중 한 명)가 다시 정상 궤도에 오를 수 있어서 정말 기쁩니다. 감사합니다, Ed_S님!

:clap:
정말 멋진 추측이네요!

하하 - 운이 좋았나 봐요. 스택 트레이스의 특징은 구체에서 일반으로 이어진다는 점이에요. 단순히 항목들의 나열이 아니라, 일반 코드부터 구체적인 메커니즘까지의 중첩된 상호작용을 보여주는 그림 같은 거죠. 그래서 '이미지’라는 아이디어가 흥미로웠어요. 메시지 목록에는 프로필 이미지만 존재하기 때문이죠. 그리고 이전에 프로필 이미지와 관련된 이상한 문제가 있었던 것 같기도 하고요.

하지만 보안 저장을 한 번도 사용하지 않았는데, 왜 코드가 보안 저장을 참조하고 있는지 저는 전혀 모르겠어요.

이 경우 어떤 이미지들이 가져와지는지 나열하는 데이터베이스 쿼리가 있을 거라고 짐작은 하지만, 문제의 프로필을 어떻게 찾을 수 있을지는 모르겠어요. 물론, 이 스택 트레이스 뒤에 숨겨진 이야기가 정말로 이것이라면요.

이를 수정하기 위한 rake 작업이 있습니다:

./launcher enter app
rake uploads:secure_upload_analyse_and_update

해당 작업을 실행하는 것을 권장합니다.

Sam님, 안녕하세요.

이 문제를 여전히 목록에 올려주셔서 정말 감사합니다. 제대로 해결할 수 있도록 추가 도움을 받을 수 있어서 정말 기쁩니다.

아래처럼 시도해 보았는데요.

하지만 실제로는 동일한 출력이 표시되어, 이 작업은 외부 S3 스토리지에서만 작동한다고 알려주었습니다. 아직 외부 스토리지를 설정하지 않은 상태라 여기서 조금 막혀 있는 것 같습니다.

제 콘솔 출력은 다음과 같습니다:

./launcher enter app
rake uploads:secure_upload_analyse_and_update
This task only works for external storage.

무엇을 놓치고 있는 건가요? 아니면 secure media가 꺼져 있는 상태에서도 실행되어야 하는데 버그인 건가요?

전문적인 조언 감사드립니다.

사실 우리를 살려주는 건 때로는 운이죠, 그렇죠?

그래도 감사합니다. 정말로 조금 답답해져서 모든 메시지를 삭제하는 건 마지막 수단이었어요.

자, 여기 있는 주제들에 대해 힌트를 좀 주실 수 있을까요? Docker와 Discourse에 비교적 새로운 저로서, DB 쿼리를 실행하라는 제안을 듣고 조금 혼란스러웠거든요. Discourse에서 어떤 DB를 사용하나요? 그리고 이런 식으로 쿼리를 실행할 수 있을까요?

./launcher enter app 
mysql select bla

아니면 MongoDB인가요? 하지만 컨테이너 안에 들어가서 쿼리를 실행하는 것이 적어도 올바른 방향은 맞죠?

그리고 제가 올바른 쿼리를 생각해 볼 수 있도록, 탐색할 수 있는 필드나 속성의 목록이나 참고 자료 같은 것이 있을까요?

하지만 명확히 하자면, 인박스 목록에서 프로필 이미지 목록을 가져오는 데 성공하더라도, 그중 어떤 것이 문제의 원인인지, 또는 발견하더라도 어떻게 해야 하는지에 대한 제안은 여전히 없는 거죠, 맞나요? 이 부분에 대해 어떤 생각이 있으신가요?

게다가 프로필 이미지와 관련된 일반적인 문제가 있다는 점이 놀랍습니다. 이 주제에 대해 더 많은 통찰력을 얻을 수 있는 특정 게시물이 있을까요? 아니면 프로필 이미지를 처리하거나 사용 제한을 두는 방법에 대한 가이드 같은 것이 있을까요? 이런 문제를 방지하기 위해서요.

Ed_S님, 제 곁에 남아주셔서 정말 감사합니다.

데이터베이스 쪽에 대해 잘 알지는 못하지만, 공식적으로 지원되는 플러그인인 Data Explorer 플러그인과 이 토픽을 추천합니다. (새로운 질문이 있다면 새 토픽을 시작하는 것이 좋습니다. 다른 사용자들도 해당 스레드에서 도움을 받을 수 있으며, 적절한 토픽 제목은 더 많은 도움을 이끌어낼 수 있습니다.)

수정: 다음 링크도 참고해 보세요.

여기에는 해당 메커니즘의 구조와 쿼리 작성 방법에 대한 힌트가 있습니다.

Ed_S님,

힌트를 주셔서 정말 감사합니다. Data Explorer 플러그인은 정말 훌륭해요! 추가 분석을 위해 시작하기에 정말 좋은 도구예요.

잃어버린 아바타에 대한 힌트도 도움이 되었습니다. 확인해 보니 문제가 없는 것 같았어요. 이렇게 통찰력을 공유해 주셔서 정말 감사합니다.

지금은 잘 작동하고 있어서 매우 기쁩니다. 앞으로도 계속 이렇게 유지되길 손가락을 꼬며 기도합니다. :wink:

Ed_S님, 지속적인 도움 주셔서 다시 한번 감사드립니다.

혹시 다른 분들도 이런 오류를 겪으셨다면, 어떤 증상이 나타났거나 이런 오류를 방지하기 위해 무엇을 할 수 있는지 알려주시면 좋겠습니다.

모두에게 감사드립니다.