Discourse 자동화 플러그인이 '내부 서버 오류'로 실패함

최신 업데이트 이전에는 Automation 플러그인을 사용하여 다음을 수행하는 자동화(테스트를 거쳐 변경 없이 정상 작동하던 것)가 있었습니다:

  • 스크립트: Send pms
  • 조건: “User added to group”
  • 추적 대상 그룹: “그룹 소유자가 '요청 승인’을 먼저 해야 하는 그룹”
  • 스크립트 옵션: PM 1건 (테스트를 거쳐 정상 작동함).

현재 3.5.0.beta3-dev(231e9ca99a) 버전에서는 사용자를 승인하려고 할 때 "internal server error"가 표시됩니다.

아래는 나타나는 오류입니다:

PG::NotNullViolation (ERROR:  null value in column "total_time" of relation "discourse_automation_stats" violates not-null constraint
DETAIL:  Failing row contains (18, 8, 2025-04-10, 2025-04-10 07:34:42.740189, null, null, null, null, 1).
)
lib/mini_sql_multisite_connection.rb:109:in `run'
lib/plugin/instance.rb:609:in `block in on'
lib/discourse_event.rb:12:in `block in trigger'
lib/discourse_event.rb:12:in `trigger'
app/models/group.rb:869:in `trigger_user_added_event'
app/models/group.rb:838:in `add'
app/controllers/groups_controller.rb:502:in `block in handle_membership_request'
app/controllers/groups_controller.rb:500:in `handle_membership_request'
app/controllers/application_controller.rb:427:in `block in with_resolved_locale'
app/controllers/application_controller.rb:427:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:410:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
lib/middleware/default_headers.rb:13: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/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:385:in `call'

이것이 여기서 언급된 discourse_automation_stats 테이블의 새로운 변경 사항과 관련이 있다고 의심합니다:

감사합니다!

1개의 좋아요

리포트 감사합니다. 다른 오류가 있는 것 같은데, 우리가 추가한 상태 코드가 그 오류를 가리고 있는 것 같습니다.

이것으로 해결될 것입니다:

그리고 나서 실제 오류를 볼 수 있게 될 것입니다.

2개의 좋아요

감사합니다!

이 말은 업데이트 후에 실제 에러를 확인해야 한다는 뜻인가요?

1개의 좋아요

네, 그렇게 해 주세요. 다만 여기서 보면 본인이 직접 고칠 수 있을 것 같다는 생각이 드네요.

2개의 좋아요

인내심을 가져주셔서 감사합니다!

{"status":422,"error":"Unprocessable Entity"}라는 또 다른 일반적인 오류가 발생합니다. '승인’을 클릭한 후의 스크린샷을 확인해 주세요:

페이로드에는 폼 데이터(application/x-www-form-urlencoded; charset=UTF-8)가 포함되어 있습니다:
user_id=10127&accept=true

감사합니다! 그런데 왜 'unprocessable entity’라고 표시되는지 모르겠네요. 어떤 팁이 있을까요?

죄송하지만 그건 자동화처럼 보이지 않아요.

첫 번째 스크린샷에서 '응답’을 클릭해 주실 수 있나요?

안녕하세요
감사합니다! 응답이 똑같네요…

추가 조사를 해보니…

이미 두 가지가 변경되었습니다:

  1. 사용자가 그룹에 성공적으로 추가되고 있습니다.
  2. 자동 메시지가 전송되고 있습니다.
  3. 이 “unprocessable entity” 오류는 관리자 계정으로 그룹 요청을 수락할 때 나타나지 않지만, 비관리자 그룹 소유자 사용자에게는 나타납니다 (관리자/비관리자 모두에서 1번과 2번이 성공적으로 이루어지고 있음에도 불구하고).

위 항목들이 이제 작동하지만, 이 새로운 문제로 인해 차단될 때 결과가 명확하지 않으므로, 이제 새로운 문제에 대해 이야기하고 있는 것 같습니다…

서버 오류 로그도 변경되었습니다:

info log
ActiveRecord::RecordNotSaved (Something has gone wrong. Perhaps this topic was closed or deleted while you were looking at it?)
lib/post_creator.rb:238:in `create!'
app/controllers/groups_controller.rb:523:in `handle_membership_request'
app/controllers/application_controller.rb:427:in `block in with_resolved_locale'
app/controllers/application_controller.rb:427:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:410:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
lib/middleware/default_headers.rb:13: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/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:385:in `call'
backtrace log
lib/post_creator.rb:238:in `create!'
app/controllers/groups_controller.rb:523:in `handle_membership_request'
actionpack (7.2.2.1) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
app/controllers/application_controller.rb:427:in `block in with_resolved_locale'
i18n (1.14.7) lib/i18n.rb:353:in `with_locale'
app/controllers/application_controller.rb:427:in `with_resolved_locale'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:141:in `run_callbacks'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:77:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `block in instrument'
activesupport (7.2.2.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `instrument'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:76:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.2.2.1) lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:163:in `process'
actionview (7.2.2.1) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (3.3.1) lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method' 
actionpack (7.2.2.1) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (7.2.2.1) lib/action_controller/metal.rb:335:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `each'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:896:in `call'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
rack (2.2.13) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.13) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.13) lib/rack/head.rb:12:in `call'
actionpack (7.2.2.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:410:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
rack (2.2.13) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.13) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.1) lib/logster/middleware/reporter.rb:40:in `call'
lib/middleware/default_headers.rb:13:in `call'
railties (7.2.2.1) lib/rails/rack/logger.rb:41:in `call_app'
railties (7.2.2.1) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/request_id.rb:33:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
rack (2.2.13) lib/rack/method_override.rb:24:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/executor.rb:16:in `call'
rack (2.2.13) lib/rack/sendfile.rb:110:in `call'
rack-mini-profiler (3.3.1) lib/mini_profiler.rb:191:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.4.1) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:385:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties (7.2.2.1) lib/rails/engine.rb:535:in `call'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.13) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.13) lib/rack/urlmap.rb:58:in `each'
rack (2.2.13) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'
env log
hostname community-app
process_id 913
application_version 6fc5ce968892b980c3db6b19b49683fb38a59e29
HTTP_HOST meta.discourse.org
REQUEST_URI /groups/200/handle_membership_request.json
REQUEST_METHOD PUT
HTTP_USER_AGENT Mozilla/5.0
HTTP_ACCEPT /
HTTP_REFERER https://meta.discourse.org/g/group_name/requests
HTTP_X_FORWARDED_FOR 0.0.0.0
HTTP_X_REAL_IP 0.0.0.0
username copuxtest
time 7:37 am
params
user_id 5836
accept true

죄송하지만, 이것이 원문과 어떻게 관련이 있는지 정말로 이해가 되지 않습니다. 이 오류는 자동화를 통해 발생하는 것이 아니지 않나요? 제가 파악한 바로는, 이는 관리자에서 직접 수행하는 작업입니다.

1개의 좋아요

다시 인사드립니다!
이 문제를 위해 시간을 내어 주셔서 감사합니다. 이제 해결된 것 같습니다. 처음에는 자동화를 활성화한 후에만 오류가 발생했고(첫 번째 게시글에 올린 첫 번째 오류), 이후 귀하가 수정해 주셨을 때 오류는 사라졌지만, 위에서 설명한 대로 로그에 다른 오류가 표시되었습니다.

다음과 같이 조치한 후 오류가 사라졌습니다:

  1. 자동화 해제
  2. 브라우저 캐시 삭제
  3. 자동화 다시 활성화

자동화를 켜고 끄고 캐시를 삭제한 후 모든 오류가 사라졌습니다. 감사합니다!

음, 정말 놀랍네요. 하지만 당신에게 잘 작동한다면 괜찮아요! 업데이트해 주셔서 감사합니다.

1개의 좋아요

감사합니다! :slight_smile:

이 주제는 마지막 답변 후 3일이 지나면 자동으로 닫힙니다. 새로운 답변은 더 이상 허용되지 않습니다.