discourse_encrypt 사용 시 계정 생성이 작동하지 않음

안녕하세요,

어제 처음, 두 번째 업데이트를 한 이후로 회원 가입이 작동하지 않고 있습니다.

계정 생성 모달의 계정 만들기 버튼을 클릭하면 모달 상단에 다음과 같은 알림 오류가 표시됩니다:

무언가 잘못되었습니다. 사용자 이름 또는 이메일이 이미 등록되었을 수 있습니다. 비밀번호 찾기 링크를 시도해 보세요.

하지만 이는 사실이 아닙니다. 새로운 이메일과 사용자 이름을 시도해 보았기 때문이죠… 그리고 필드 검증도 통과되고 있습니다.

만약 이것이 어떤 영향을 미친다면, 필수 confirmation 사용자 필드가 두 개 있습니다.


안전 모드와 재빌드 등을 시도해 보았지만… 아무것도 해결되지 않았습니다.
콘솔이나 /logs에 오류가 없습니다.


어제 변경한 또 다른 사항은 오래된 자산을 정리하기 위해 아래를 추가한 것입니다 :arrow_down_small:
(Digital Ocean Spaces를 사용 중입니다)

하지만 재빌드나 업데이트 시에는 이 명령이 성공적으로 실행됩니다.


여기 사이트입니다. 확인하실 수 있습니다.

도움이나 아이디어가 있다면 감사하겠습니다! 감사합니다 :slightly_smiling_face:

1개의 좋아요

방금 등록을 시도해 봤는데, 이쪽에서도 오류가 나네요. (다만 번역기를 거치면 '문제가 발생했습니다! 현재 등록 기능이 유지보수 중입니다! 잠시 후 다시 시도해 주세요.'[1]라고 나옵니다.)

메타에서는 정상적으로 작동하니까, 이걸로 원인을 좁혀볼 수 있을 것 같아요. 커스텀 필드 등으로 테스트 사이트를 고장 내볼게요. :+1:


  1. Valami hiba történt! A regisztráció jelenleg karbantartás alatt van! Kérlek, látogass vissza kicsit később és próbáld újra. ↩︎

1개의 좋아요

확인해 주셔서 감사합니다 :slightly_smiling_face: 네, 사용자가 문제가 우리 측에 있음을 알리기 위해 기본 오류 메시지를 다시 작성했습니다. 언급할 것을 잊어버렸네요. :confused:

하지만 이 메시지는 login.something_already_taken입니다.

1개의 좋아요

초대를 통해 가입을 시도했는데 결국 Internal Server Error가 발생했습니다 :slightly_smiling_face:

/logs에 다음과 같은 오류가 기록되었습니다.
Screenshot 2022-11-23 at 11.05.09

Info
ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR:  null value in column "encrypt_pms_default" of relation "user_options" violates not-null constraint
DETAIL:  Failing row contains (5333, f, t, t, t, f, t, 10080, 300000, 2880, null, 2, f, 1, 1, f, 2, 0, t, null, {}, f, 0, 0, 1, 0, 0, f, null, f, null, f, null, 0, null, t, null, null, null, null, 3, null, 1, f, null, 0, null).
)
app/models/user.rb:1734:in `create_user_option'
app/models/invite_redeemer.rb:142:in `create_user_from_invite'
app/models/invite_redeemer.rb:208:in `invited_user'
app/models/invite_redeemer.rb:260:in `add_user_to_groups'
app/models/invite_redeemer.rb:226:in `process_invitation'
app/models/invite_redeemer.rb:55:in `block in redeem'
app/models/invite_redeemer.rb:53:in `redeem'
app/models/invite.rb:227:in `redeem'
app/controllers/invites_controller.rb:227:in `perform_accept_invitation'
app/controllers/application_controller.rb:413:in `block in with_resolved_locale'
app/controllers/application_controller.rb:413:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:368:in `call'
config/initializers/008-rack-cors.rb:25:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'
Backtrace
rack-mini-profiler (3.0.0) lib/patches/db/pg.rb:69:in `exec_params'

rack-mini-profiler (3.0.0) lib/patches/db/pg.rb:69:in `exec_params'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'

activesupport (7.0.3.1) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'

activesupport (7.0.3.1) lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract_adapter.rb:765:in `block in log'

activesupport (7.0.3.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract_adapter.rb:756:in `log'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:766:in `exec_no_cache'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:745:in `execute_and_clear'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:54:in `exec_query'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:132:in `exec_insert'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `exec_insert'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:167:in `insert'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'

activerecord (7.0.3.1) lib/active_record/persistence.rb:496:in `_insert_record'

activerecord (7.0.3.1) lib/active_record/persistence.rb:1096:in `_create_record'

activerecord (7.0.3.1) lib/active_record/counter_cache.rb:166:in `_create_record'

activerecord (7.0.3.1) lib/active_record/locking/optimistic.rb:79:in `_create_record'

activerecord (7.0.3.1) lib/active_record/attribute_methods/dirty.rb:222:in `_create_record'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `block in _create_record'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:107:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_create_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `_create_record'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:108:in `_create_record'

activerecord (7.0.3.1) lib/active_record/persistence.rb:1067:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `block in create_or_update'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:107:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_save_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:126:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/persistence.rb:648:in `save!'

activerecord (7.0.3.1) lib/active_record/validations.rb:53:in `save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `block in save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'

activerecord (7.0.3.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `save!'

activerecord (7.0.3.1) lib/active_record/suppressor.rb:54:in `save!'

activerecord (7.0.3.1) lib/active_record/persistence.rb:55:in `create!'

app/models/user.rb:1734:in `create_user_option'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:400:in `block in make_lambda'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:236:in `block in halting_and_conditional'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:599:in `block in invoke_after'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:599:in `each'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:599:in `invoke_after'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:108:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_create_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `_create_record'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:108:in `_create_record'

activerecord (7.0.3.1) lib/active_record/persistence.rb:1067:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `block in create_or_update'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'

activerecord (7.0.3.1) lib/active_record/autosave_association.rb:370:in `around_save_collection_association'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:138:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_save_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:126:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/persistence.rb:648:in `save!'

activerecord (7.0.3.1) lib/active_record/validations.rb:53:in `save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `block in save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'

activerecord (7.0.3.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `save!'

activerecord (7.0.3.1) lib/active_record/suppressor.rb:54:in `save!'

app/models/invite_redeemer.rb:142:in `create_user_from_invite'

app/models/invite_redeemer.rb:208:in `invited_user'

app/models/invite_redeemer.rb:260:in `add_user_to_groups'

app/models/invite_redeemer.rb:226:in `process_invitation'

app/models/invite_redeemer.rb:55:in `block in redeem'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'

activerecord (7.0.3.1) lib/active_record/transactions.rb:209:in `transaction'

app/models/invite_redeemer.rb:53:in `redeem'

app/models/invite.rb:227:in `redeem'

app/controllers/invites_controller.rb:227:in `perform_accept_invitation'

actionpack (7.0.3.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack (7.0.3.1) lib/abstract_controller/base.rb:215:in `process_action'

actionpack (7.0.3.1) lib/action_controller/metal/rendering.rb:53:in `process_action'

actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:234:in `block in process_action'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'

app/controllers/application_control

이 문제는 아마도 Discourse Encrypt (for Private Messages) 플러그인과 관련이 있을 것입니다. 이 플러그인은 12일 전에 업데이트되었는데, 어제 사이트를 처음 업데이트했을 때 이 플러그인도 함께 업데이트되었습니다.
이 플러그인은 제 사이트에 설치되어 있지만 비활성화 상태입니다. app.yml에서 주석 처리를 시도해 보고 어떻게 되는지 확인해 보겠습니다. :slightly_smiling_face:

2개의 좋아요

이제 재현할 수 있습니다. :+1:

테스트 사이트에도 encrypt 기능이 있지만, 활성화되어 있었습니다. 이 기능을 비활성화하면 테스트 사용자 등록 시 오류가 발생합니다.

2개의 좋아요

정말 좋은 소식입니다 :slightly_smiling_face: 방금 다시 빌드했는데, 이제 좀 진정됐어요 :smiley: Jammy님, 감사합니다 :slightly_smiling_face: Contribute > Bug 채널로 옮겨 주실 수 있을까요?

1개의 좋아요

불행히도 플러그인 없이 재빌드한 후에도 아직 내 환경에서는 작동하지 않습니다. 아마도 그 정도로는 부족할 수도 있겠네요… :person_shrugging:

끄면 문제가 발생하지만 다시 켜면 다시 작동합니다. 수정 작업이 진행되는 동안 재설치 후 켜 두는 것이 필요할 것 같습니다.

1개의 좋아요

플러그인이 plugin_store_rows 테이블이나 전용 discourse_pluginname_function 테이블을 사용하는 대신 핵심 테이블의 열을 수정하도록 하는 아이디어가 무엇인지 궁금합니다.

제 생각에는 결국 항상 눈물(또는 Sam의 표현을 빌리면 “좀 악몽 같은 상황”)과 복잡한 문제로 이어지는 것 같습니다.

5개의 좋아요

이렇게 하면 되는 것 같습니다 :+1: 감사합니다! :slightly_smiling_face:

1개의 좋아요

와. 또는 user_custom_field를 사용하는 것일 수도 있겠네요. 정말 놀랍네요.

@Don, 보고해 주셔서 감사합니다. 이 문제를 수정하고 있으며, 곧 해결될 예정입니다.

업데이트: 수정 작업이 진행 중입니다. FIX: allow encrypt_pms_default to be null - Pull Request #231 - discourse/discourse-encrypt - GitHub 머지(merge)가 곧 완료될 예정입니다.

5개의 좋아요

오늘 업데이트를 했는데, 플러그인을 비활성화하면 이제 아주 잘 작동합니다. 아직 플러그인을 제거하고 다시 빌드해 보지는 않았지만, 그 방법도 잘 작동할 거라고 확신합니다. 수정해 주셔서 정말 감사합니다! :slightly_smiling_face:

2개의 좋아요