94632 のグローバルメッセージがタイムアウトしました。プロセスを再起動します。95535 は `TERM` シグナルによって正常に終了しました。

私は Apple M1 Macbook Pro を使用しています。今朝から Discourse のインストールを試しており、このチュートリアル Install Discourse on macOS for development に沿って bundle exec rails server に至りました。また、このチュートリアルも参照しています:Tips and tricks for developing Rails applications on Apple Silicon - rubyonrails-talk - Ruby on Rails Discussions

bundle exec rails server を実行するたびに(これまでに 3 回試しました)、ある点まで進んだ後、「Global messages on 94632 timed out, restarting process, 95535 successfully terminated by ‘TERM’ signal」というエラーメッセージが表示されます。

bundle exec rails server 実行中のログの末尾は以下の通りです:

  MiniScheduler::Stat Create (5.6ms)  INSERT INTO "scheduler_stats" ("name", "hostname", "pid", "live_slots_start", "started_at") VALUES ('Jobs::Heartbeat', 'Aashishs-MacBook-Pro.local', 94682, 1103494, '2021-07-30 11:03:52.271803') RETURNING "id"
  TRANSACTION (1.0ms)  COMMIT
  TRANSACTION (0.2ms)  BEGIN
  MiniScheduler::Stat Update (0.4ms)  UPDATE "scheduler_stats" SET "duration_ms" = 16, "live_slots_finish" = 1104793, "success" = TRUE WHERE "scheduler_stats"."id" = 1042
  TRANSACTION (1.6ms)  COMMIT
  TRANSACTION (0.4ms)  BEGIN
  MiniScheduler::Stat Create (6.0ms)  INSERT INTO "scheduler_stats" ("name", "hostname", "pid", "live_slots_start", "started_at") VALUES ('Jobs::AboutStats', 'Aashishs-MacBook-Pro.local', 94682, 1109900, '2021-07-30 11:03:53.288729') RETURNING "id"
  TRANSACTION (7.1ms)  COMMIT
   (0.6ms)  SELECT COUNT(*) FROM "topics" WHERE "topics"."deleted_at" IS NULL AND (topics.archetype <> 'private_message')
   (0.3ms)  SELECT COUNT(*) FROM "topics" WHERE "topics"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND (created_at > '2021-07-29 11:03:53.314016')
   (1.4ms)  SELECT COUNT(*) FROM "topics" WHERE "topics"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND (created_at > '2021-07-23 11:03:53.319858')
   (0.2ms)  SELECT COUNT(*) FROM "topics" WHERE "topics"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND (created_at > '2021-06-30 11:03:53.322501')
   (3.9ms)  SELECT COUNT(*) FROM "posts" WHERE "posts"."deleted_at" IS NULL
   (0.5ms)  SELECT COUNT(*) FROM "posts" WHERE "posts"."deleted_at" IS NULL AND (created_at > '2021-07-29 11:03:53.329111')
   (3.2ms)  SELECT COUNT(*) FROM "posts" WHERE "posts"."deleted_at" IS NULL AND (created_at > '2021-07-23 11:03:53.331193')
   (4.9ms)  SELECT COUNT(*) FROM "posts" WHERE "posts"."deleted_at" IS NULL AND (created_at > '2021-06-30 11:03:53.335365')
   (0.5ms)  SELECT COUNT(*) FROM "users" WHERE (users.id > 0) AND (NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  ))
   (3.9ms)  SELECT COUNT(*) FROM "users" WHERE (users.id > 0) AND (NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  )) AND (created_at > '2021-07-29 11:03:53.343462')
   (0.2ms)  SELECT COUNT(*) FROM "users" WHERE (users.id > 0) AND (NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  )) AND (created_at > '2021-07-23 11:03:53.348895')
   (3.3ms)  SELECT COUNT(*) FROM "users" WHERE (users.id > 0) AND (NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  )) AND (created_at > '2021-06-30 11:03:53.350098')
   (0.5ms)  SELECT COUNT(*) FROM "users" WHERE (last_seen_at > '2021-07-29 11:03:53.354731')
   (0.3ms)  SELECT COUNT(*) FROM "users" WHERE (last_seen_at > '2021-07-23 11:03:53.356296')
   (0.4ms)  SELECT COUNT(*) FROM "users" WHERE (last_seen_at > '2021-06-30 11:03:53.356908')
   (0.3ms)  SELECT COUNT(*) FROM "user_actions" WHERE "user_actions"."action_type" = 1
   (3.1ms)  SELECT COUNT(*) FROM "user_actions" WHERE "user_actions"."action_type" = 1 AND (created_at > '2021-07-29 11:03:53.358336')
   (0.4ms)  SELECT COUNT(*) FROM "user_actions" WHERE "user_actions"."action_type" = 1 AND (created_at > '2021-07-23 11:03:53.363013')
   (0.3ms)  SELECT COUNT(*) FROM "user_actions" WHERE "user_actions"."action_type" = 1 AND (created_at > '2021-06-30 11:03:53.364086')
  TRANSACTION (0.4ms)  BEGIN
  MiniScheduler::Stat Update (0.3ms)  UPDATE "scheduler_stats" SET "duration_ms" = 78, "live_slots_finish" = 1121121, "success" = TRUE WHERE "scheduler_stats"."id" = 1043
  TRANSACTION (0.2ms)  COMMIT
  TRANSACTION (0.2ms)  BEGIN
  MiniScheduler::Stat Create (5.7ms)  INSERT INTO "scheduler_stats" ("name", "hostname", "pid", "live_slots_start", "started_at") VALUES ('Jobs::EnqueueDigestEmails', 'Aashishs-MacBook-Pro.local', 94682, 1124261, '2021-07-30 11:03:54.310194') RETURNING "id"
  TRANSACTION (1.1ms)  COMMIT
   (8.2ms)  SELECT "users"."id" FROM "users" INNER JOIN "user_options" ON "user_options"."user_id" = "users"."id" INNER JOIN "user_stats" ON "user_stats"."user_id" = "users"."id" INNER JOIN "user_emails" ON "user_emails"."user_id" = "users"."id" WHERE (users.id > 0) AND (NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  )) AND "users"."active" = TRUE AND (suspended_till IS NULL OR suspended_till <= '2021-07-30 11:03:54.325622') AND "users"."staged" = FALSE AND (user_options.email_digests) AND (user_stats.bounce_score < 4) AND (user_emails.primary) AND (COALESCE(last_emailed_at, '2010-01-01') <= CURRENT_TIMESTAMP - ('1 MINUTE'::INTERVAL * user_options.digest_after_minutes)) AND (COALESCE(user_stats.digest_attempted_at, '2010-01-01') <= CURRENT_TIMESTAMP - ('1 MINUTE'::INTERVAL * user_options.digest_after_minutes)) AND (COALESCE(last_seen_at, '2010-01-01') <= CURRENT_TIMESTAMP - ('1 MINUTE'::INTERVAL * user_options.digest_after_minutes)) AND (COALESCE(last_seen_at, '2010-01-01') >= CURRENT_TIMESTAMP - ('1 DAY'::INTERVAL * 365)) ORDER BY user_stats.digest_attempted_at ASC NULLS FIRST LIMIT 10000
  TRANSACTION (0.1ms)  BEGIN
  MiniScheduler::Stat Update (0.6ms)  UPDATE "scheduler_stats" SET "duration_ms" = 28, "live_slots_finish" = 1124171, "success" = TRUE WHERE "scheduler_stats"."id" = 1044
  TRANSACTION (3.9ms)  COMMIT
  TRANSACTION (0.2ms)  BEGIN
  MiniScheduler::Stat Create (8.4ms)  INSERT INTO "scheduler_stats" ("name", "hostname", "pid", "live_slots_start", "started_at") VALUES ('Jobs::DashboardStats', 'Aashishs-MacBook-Pro.local', 94682, 1123939, '2021-07-30 11:03:55.326015') RETURNING "id"
  TRANSACTION (0.4ms)  COMMIT
  TRANSACTION (0.5ms)  BEGIN
  MiniScheduler::Stat Update (0.6ms)  UPDATE "scheduler_stats" SET "duration_ms" = 24, "live_slots_finish" = 1124040, "success" = TRUE WHERE "scheduler_stats"."id" = 1045
  TRANSACTION (0.8ms)  COMMIT
Global messages on 94632 timed out, restarting process
(base) aashishgangwani@Aashishs-MacBook-Pro discourse % 95535 successfully terminated by `TERM` signal.

ご覧の通り、最後には「Global messages on 94632 timed out, restarting process, 95535 successfully terminated by ‘TERM’ signal」と表示されています。

このエラーの意味と、解決方法はありますか?

yarn add message_bus で message_bus を読み込もうと試みましたが、問題は解決しませんでした。

また、Stack Overflow にも投稿しましたが、まだ回答は得られていません:https://stackoverflow.com/questions/68590381/global-messages-on-94632-timed-out-restarting-process-95535-successfully-termi

残念ながらお役に立てませんが、Discourse のメッセージバスにある new_subscriber_thread 関数内で該当するコードを見つけました:

        if (Time.now - (@last_message || Time.now)) > keepalive_interval * 3
          logger.warn "Global messages on #{Process.pid} timed out, restarting process"
          # このスレッドをクリーンに削除する他の方法はありません。ソケットでリッスンしているため
          #   データが届いていません
          #
          # 本番環境では、VRRP フェイルオーバーや奇妙なネットワーク条件が発生した際に、
          # このような状況が...時折...発生します

@Ed_S さん、ありがとうございます。この件については、すぐに解決策が見つかることを願っています。

[編集:おっと、M1搭載のmacOSでの実行に関する具体的なアドバイスは既にご覧いただいているようですね]

@Ed_S さん、ありがとうございます。コードスニペットを参考にし、keepalive_interval *3 を keepalive_interval * 1000 に変更し、接続を維持する時間を延長したところ、問題が解決しました。