에러 500 / 로그인되지 않음

여러분 안녕하세요,
최근 며칠 동안 저희 웹사이트가 이상한 행동을 하고 있습니다. 로그인하지 않은 사용자에게는 500 에러가 표시됩니다.

로그인된 상태에서는 모든 것이 정상적으로 작동하는 것 같습니다!
저희 웹사이트는 [docker_manager]와 [discourse-solved]만 사용하고 있습니다.

도움 주시면 감사하겠습니다.


관리자 패널의 로그는 다음과 같이 표시됩니다.

> OpenURI::HTTPError (403 Error: <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AllAccessDisabled</Code><Message>All access to this object has been disabled</Message><RequestId>0C0B735FB6F5A565</RequestId><HostId>Q7rPrXnH7ohowB0zBtJEfoWWCkKlB9AMqrSVg7jVy+pPvTQ2wphmezwv+EIV7aCi5dr6taRHS5o=</HostId></Error>)
/var/www/discourse/lib/file_helper.rb:59:in `block in download'

> Uncaught [object Object]
Url: https://forum.developer.parrot.com/assets/ember_jquery-3a388c5a0562670ed1eea762f12e041d92b4a418316d3f9f83e793d3ba6be5d7.js
Line: 1
Column: 268182

그리고 백트레이스는 다음과 같습니다.

> /var/www/discourse/lib/file_helper.rb:59:in `block in download'
/var/www/discourse/lib/final_destination.rb:399:in `block (3 levels) in safe_get'
/var/www/discourse/lib/final_destination.rb:398:in `catch'
/var/www/discourse/lib/final_destination.rb:398:in `block (2 levels) in safe_get'
/usr/local/lib/ruby/2.6.0/net/http.rb:1518:in `block in transport_request'
/usr/local/lib/ruby/2.6.0/net/http/response.rb:165:in `reading_body'
/usr/local/lib/ruby/2.6.0/net/http.rb:1517:in `transport_request'
/usr/local/lib/ruby/2.6.0/net/http.rb:1479:in `request'
rack-mini-profiler-2.0.1/lib/patches/net_patches.rb:9:in `block in request_with_mini_profiler'
rack-mini-profiler-2.0.1/lib/mini_profiler/profiling_methods.rb:39:in `step'
rack-mini-profiler-2.0.1/lib/patches/net_patches.rb:8:in `request_with_mini_profiler'
/var/www/discourse/lib/final_destination.rb:370:in `block in safe_get'
/var/www/discourse/lib/final_destination.rb:414:in `block in safe_session'
/usr/local/lib/ruby/2.6.0/net/http.rb:920:in `start'
/usr/local/lib/ruby/2.6.0/net/http.rb:605:in `start'
/var/www/discourse/lib/final_destination.rb:411:in `safe_session'
/var/www/discourse/lib/final_destination.rb:362:in `safe_get'
/var/www/discourse/lib/final_destination.rb:131:in `get'
/var/www/discourse/lib/file_helper.rb:51:in `download'
/var/www/discourse/lib/file_store/base_store.rb:92:in `block in download'
/var/www/discourse/lib/distributed_mutex.rb:33:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:14:in `synchronize'
/var/www/discourse/lib/file_store/base_store.rb:80:in `download'
/var/www/discourse/app/models/upload.rb:193:in `fix_dimensions!'
/var/www/discourse/app/models/upload.rb:222:in `get_dimension'
/var/www/discourse/app/models/upload.rb:227:in `width'
/var/www/discourse/app/models/topic.rb:53:in `thumbnail_info'
/var/www/discourse/app/serializers/listable_topic_serializer.rb:39:in `thumbnails'
(eval):32:in `_fast_attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:456:in `attributes'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers-0.8.4/lib/active_model/serializer/associations.rb:124:in `block in serialize'
active_model_serializers-0.8.4/lib/active_model/serializer/associations.rb:123:in `map'
active_model_serializers-0.8.4/lib/active_model/serializer/associations.rb:123:in `serialize'
/var/www/discourse/lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:368:in `block in include_associations!'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:367:in `each_key'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:367:in `include_associations!'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:362:in `serializable_hash'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:343:in `as_json'
activesupport-6.0.3/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-6.0.3/lib/active_support/json/encoding.rb:22:in `encode'
activesupport-6.0.3/lib/active_support/core_ext/object/json.rb:42:in `to_json'
active_model_serializers-0.8.4/lib/active_model/serializer.rb:331:in `to_json'
multi_json-1.14.1/lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json-1.14.1/lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json-1.14.1/lib/multi_json/adapter.rb:25:in `dump'
multi_json-1.14.1/lib/multi_json.rb:139:in `dump'
/var/www/discourse/lib/topic_list_responder.rb:16:in `block (2 levels) in respond_with_list'
actionpack-6.0.3/lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
/var/www/discourse/lib/topic_list_responder.rb:13:in `respond_with_list'
/var/www/discourse/app/controllers/list_controller.rb:100:in `block (2 levels) in <class:ListController>'
actionpack-6.0.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-6.0.3/lib/abstract_controller/base.rb:195:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack-6.0.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport-6.0.3/lib/active_support/callbacks.rb:135:in `run_callbacks'
actionpack-6.0.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
activesupport-6.0.3/lib/active_support/notifications.rb:180:in `block in instrument'
activesupport-6.0.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.0.3/lib/active_support/notifications.rb:180:in `instrument'
actionpack-6.0.3/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord-6.0.3/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-6.0.3/lib/abstract_controller/base.rb:136:in `process'
actionview-6.0.3/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-2.0.1/lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
actionpack-6.0.3/lib/action_controller/metal.rb:190:in `dispatch'
actionpack-6.0.3/lib/action_controller/metal.rb:254:in `dispatch'
actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack-6.0.3/lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
actionpack-6.0.3/lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack-6.0.3/lib/action_dispatch/journey/router.rb:49:in `block in serve'
actionpack-6.0.3/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-6.0.3/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:834:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
rack-2.0.8/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.0.8/lib/rack/conditional_get.rb:25:in `call'
rack-2.0.8/lib/rack/head.rb:12:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:316:in `call'
rack-2.0.8/lib/rack/session/abstract/id.rb:259:in `context'
rack-2.0.8/lib/rack/session/abstract/id.rb:253:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/cookies.rb:648:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-6.0.3/lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack-6.0.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster-2.8.0/lib/logster/middleware/reporter.rb:43:in `call'
railties-6.0.3/lib/rails/rack/logger.rb:37:in `call_app'
railties-6.0.3/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:18:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:22:in `call'
rack-2.0.8/lib/rack/method_override.rb:22:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.0.8/lib/rack/sendfile.rb:111:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/host_authorization.rb:76:in `call'
rack-mini-profiler-2.0.1/lib/mini_profiler/profiler.rb:200:in `call'
message_bus-3.2.0/lib/message_bus/rack/middleware.rb:57:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:172:in `call'
railties-6.0.3/lib/rails/engine.rb:527:in `call'
railties-6.0.3/lib/rails/railtie.rb:190:in `public_send'
railties-6.0.3/lib/rails/railtie.rb:190:in `method_missing'
rack-2.0.8/lib/rack/urlmap.rb:68:in `block in call'
rack-2.0.8/lib/rack/urlmap.rb:53:in `each'
rack-2.0.8/lib/rack/urlmap.rb:53:in `call'
unicorn-5.5.5/lib/unicorn/http_server.rb:605:in `process_client'
unicorn-5.5.5/lib/unicorn/http_server.rb:701:in `worker_loop'
unicorn-5.5.5/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
unicorn-5.5.5/lib/unicorn/http_server.rb:144:in `start'
unicorn-5.5.5/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

재빌드를 시도해 보셨나요?

네, 여러 번 그랬습니다.
빌드 시 오류는 없었습니다.

(현재 Digital Ocean에서 스냅샷을 생성 중이므로 사이트가 일시적으로 중단될 수 있습니다).

모든 플러그인을 비활성화한 뒤 새로 재빌드해 보세요… 작동하면 하나씩 다시 활성화해 보세요.

이미 완료했습니다.
그리고 공식 플러그인입니다.

토픽 직렬화기가 썸네일에 대한 다운로드 메서드를 호출하면서 오류가 발생하고 있습니다.

@david 님, 혹시 아이디어가 있으신가요?

카테고리 페이지는 정상적으로 작동합니다: https://forum.developer.parrot.com/c/drone-sdk/6

테스트를 위해 21일 전으로 롤백한 드롭렛에서는 해당 문제가 발생하지 않습니다.
내일 현재 시점과 그 날짜 사이의 차이점을 더 자세히 조사해 보겠습니다.

그래서 Digital Ocean을 이전 백업으로 되돌렸는데, 그 안에는 이전 버전의 Discourse가 들어 있었습니다.

여기서는 문제가 발생하지 않습니다.

하지만 모든 업데이트를 수행하면 문제가 나타납니다.

[수정]
마법사 어시스턴트를 실행해 봤습니다(그냥 어떻게 생겼는지 보고, 아마도 카테고리/최신 게시물을 홈페이지로 변경하기 위해서였는데), 문제가 사라진 것 같습니다… :thinking:

@ParrotDeveloper, 보고해 주셔서 감사합니다. 확인해 보겠습니다. 데이터베이스에 차원이 없는 업로드 파일은 재다운로드를 시도하는 것 같습니다. 당연히 해당 실패로 인해 카테고리/토픽 뷰가 깨지는 것은 원치 않으므로, 수정하겠습니다 :eyes:

이 변경으로 업로드 오류가 토픽 페이지의 실패를 일으키는 일이 없도록 해야 합니다: