Discourseのsolvedプラグインで500エラーが発生する問題が解決

最近、Discourse のバージョンをアップグレードし、すべてのプラグインも最新の状態に更新しました。
アップグレード後、返信を解決済みとしてマークしようとすると、500 エラーが発生するようになりました。

以下は、コンソールで表示されるエラーの詳細です。

    Failed to load resource: the server responded with a status of 500 ()
_application-ed0ac69…88e883e0db.js:11141 SyntaxError: Unexpected token < in JSON at position 0
    at Function.parse [as parseJSON] (<anonymous>)
    at n (_application-ed0ac69…88e883e0db.js:11137)
    at e.popupAjaxError (_application-ed0ac69…88e883e0db.js:11180)
    at E (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at w (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at g (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at t.invoke (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t.flush (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t.flush (ember_jquery-8e338e1…8f98e499a037a9.js:1)
    at e.t._end (ember_jquery-8e338e1…8f98e499a037a9.js:1)
ember_jquery-8e338e1…8f98e499a037a9.js:1 Uncaught 
Object
jqXHR: {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
textStatus: "error"
errorThrown: ""
_discourse_displayed: true
__proto__: Object

非公式のプラグインをインストールしていますか?公式のプラグインとテーマのみを有効にしたセーフモードでは動作していますか?

はい、非公式プラグインをインストールしています。安全モードで確認したことはありません(やり方がわかりません :noobface:)。

ただし、ログを確認したところ、以下のような表示がありました。
ArgumentError (unknown keyword: duration) /var/www/discourse/app/models/topic.rb:1138:in 'set_or_create_timer'
(興味があればバックトレースはこちらです:https://pastebin.com/chKtDTeL。)

その後、解決済みの設定に移動し、自動閉鎖時間を 0 に変更しました(以前は 72 時間)。これで動作するようになりましたが、この機能を使いたいと思っています。何かお手伝いできることはありますか?

サイトの /safe-mode にアクセスして、セーフモードの設定を確認できます。画面は以下のようになります:

はい、私のチームの誰かが既にこれを試しました。
非公式プラグイン(例:当社のバッジプラグイン)を無効にしても問題は解決しませんでした。
テーマ(例:カスタム JavaScript)を無効にしても問題は解決しませんでした。
非公式プラグインとテーマの両方を同時に無効にしても問題は解決しませんでした。
セーフモードを使用しています。

すべてのプラグインを無効にするのは試していません。なぜなら、そうすれば解決も無効になってしまうからです :grin:

パビリオンプラグインはありますか?

ログで発見した内容と関連しているようです。プラグイン作成者が行った最後の更新は以下の通りです。

pavilionからのプラグインはありません

私の個人サイトを最新バージョンに更新し、solved プラグインを有効にしましたが、問題なく動作しています。再現することができません。

問題の原因がわかりました。私たちは安定版(デフォルトの tests-passed ではありません)にいて、まだ ‘duration’ の変更が反映されていません。

ご確認いただき、ありがとうございます!本当に助かりました。この機能を使うのは、安定版ブランチが更新されるまで待とうと思います。

こんにちは、私も同じ問題に直面しています:

Discourse バージョン:

インストールされている拡張機能:

セーフモードで試しましたが、同じエラーが発生します。

ログ:
image

メッセージ

ArgumentError (unknown keyword: duration)
/var/www/discourse/app/models/topic.rb:1138:in `set_or_create_timer'

バックトレース

/var/www/discourse/app/models/topic.rb:1138:in `set_or_create_timer'
/var/www/discourse/plugins/discourse-solved/plugin.rb:126:in `accept_answer!'
/var/www/discourse/plugins/discourse-solved/plugin.rb:206:in `accept'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/base.rb:196:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:135:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rescue.rb:22:in `process_action'

ご協力をお願いします。

こんにちは、皆さん!アイデアはありますか?

特定の Discourse バージョンを使用しているため、おそらくその機能はバックポートされていません。solved プラグインは最新の tests-passed ブランチと正常に動作します。そちらへのアップグレードをご検討ください。

なぜですか?
私は不安定版を使用しています。

つまり、私の理解では、安定版は Discourse の本番サーバーには適していないということでしょうか?

  ## このコンテナはどの Git リビジョンを使用する必要がありますか?(デフォルト:tests-passed)
  version: stable

それは良いですが、一般的に非常に古く、新機能が不足しています。安定しており、すべての新機能とパフォーマンスの向上が含まれている「tests-passed」を使用することをお勧めします。

はい、ご返信ありがとうございます。

昨日修正を行いました。discourse-solved プラグインを更新し、問題が解決したかご確認いただけますでしょうか?

こんにちは @kris.kotlarek さん、
このバージョンで問題ありません:

ありがとうございます