DistributedMutex error warnings frequently appearing in logs

Discourse is deployed via a container in 1Panel, with a reverse proxy configured for access. The website is used primarily for personal knowledge management; registration is disabled, and only I am online. The VPS specifications are 10 vCore (ARM64), 16 GB RAM, and 512 GB NVMe.

The Discourse logs frequently show warnings similar to the following error:

DistributedMutex(“memoize_lock_post##2f7d40f44a4b0fa66a711ca8f2ff9278fed9fa72”): held for too long, expected max: 1 secs, took an extra 1 secs

activesupport-8.0.5/lib/active_support/broadcast_logger.rb:218:in ‘block in ActiveSupport::BroadcastLogger#dispatch’
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in ‘Array#map’
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in ‘ActiveSupport::BroadcastLogger#dispatch’
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:129:in ‘ActiveSupport::BroadcastLogger#warn’
/var/www/discourse/lib/distributed_mutex.rb:103:in ‘DistributedMutex#warn’
/var/www/discourse/lib/distributed_mutex.rb:57:in ‘block in DistributedMutex#synchronize’
/var/www/discourse/lib/distributed_mutex.rb:49:in ‘Thread::Mutex#synchronize’
/var/www/discourse/lib/distributed_mutex.rb:49:in ‘DistributedMutex#synchronize’
/var/www/discourse/lib/distributed_mutex.rb:34:in ‘DistributedMutex.synchronize’
/var/www/discourse/lib/distributed_memoizer.rb:12:in ‘DistributedMemoizer.memoize’
/var/www/discourse/app/controllers/posts_controller.rb:208:in ‘PostsController#create’
actionpack-8.0.5/lib/action_controller/metal/basic_implicit_render.rb:8:in ‘ActionController::BasicImplicitRender#send_action’
actionpack-8.0.5/lib/abstract_controller/base.rb:215:in ‘AbstractController::Base#process_action’
actionpack-8.0.5/lib/action_controller/metal/rendering.rb:193:in ‘ActionController::Rendering#process_action’
actionpack-8.0.5/lib/abstract_controller/callbacks.rb:261:in ‘block in AbstractController::Callbacks#process_action’
activesupport-8.0.5/lib/active_support/callbacks.rb:120:in ‘block in ActiveSupport::Callbacks#run_callbacks’
/var/www/discourse/app/controllers/application_controller.rb:452:in ‘block in ApplicationController#with_resolved_locale’
i18n-1.14.8/lib/i18n.rb:354:in ‘I18n::Base#with_locale’
/var/www/discourse/app/controllers/application_controller.rb:452:in ‘ApplicationController#with_resolved_locale’
activesupport-8.0.5/lib/active_support/callbacks.rb:129:in ‘block in ActiveSupport::Callbacks#run_callbacks’
/var/www/discourse/app/controllers/application_controller.rb:1103:in ‘ApplicationController#ensure_dont_cache_page’
activesupport-8.0.5/lib/active_support/callbacks.rb:129:in ‘block in ActiveSupport::Callbacks#run_callbacks’
activesupport-8.0.5/lib/active_support/callbacks.rb:140:in ‘ActiveSupport::Callbacks#run_callbacks’
actionpack-8.0.5/lib/abstract_controller/callbacks.rb:260:in ‘AbstractController::Callbacks#process_action’
actionpack-8.0.5/lib/action_controller/metal/rescue.rb:27:in ‘ActionController::Rescue#process_action’
actionpack-8.0.5/lib/action_controller/metal/instrumentation.rb:76:in ‘block in ActionController::Instrumentation#process_action’
activesupport-8.0.5/lib/active_support/notifications.rb:210:in ‘block in ActiveSupport::Notifications.instrument’
activesupport-8.0.5/lib/active_support/notifications/instrumenter.rb:58:in ‘ActiveSupport::Notifications::Instrumenter#instrument’
activesupport-8.0.5/lib/active_support/notifications.rb:210:in ‘ActiveSupport::Notifications.instrument’
actionpack-8.0.5/lib/action_controller/metal/instrumentation.rb:75:in ‘ActionController::Instrumentation#process_action’
actionpack-8.0.5/lib/action_controller/metal/params_wrapper.rb:259:in ‘ActionController::ParamsWrapper#process_action’
activerecord-8.0.5/lib/active_record/railties/controller_runtime.rb:39:in ‘ActiveRecord::Railties::ControllerRuntime#process_action’
actionpack-8.0.5/lib/abstract_controller/base.rb:152:in ‘AbstractController::Base#process’
actionview-8.0.5/lib/action_view/rendering.rb:40:in ‘ActionView::Rendering#process’
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in ‘block in ActionController::Base#profile_method’
actionpack-8.0.5/lib/action_controller/metal.rb:252:in ‘ActionController::Metal#dispatch’
actionpack-8.0.5/lib/action_controller/metal.rb:335:in ‘ActionController::Metal.dispatch’
actionpack-8.0.5/lib/action_dispatch/routing/route_set.rb:67:in ‘ActionDispatch::Routing::RouteSet::Dispatcher#dispatch’
actionpack-8.0.5/lib/action_dispatch/routing/route_set.rb:50:in ‘ActionDispatch::Routing::RouteSet::Dispatcher#serve’
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:53:in ‘block in ActionDispatch::Journey::Router#serve’
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:133:in ‘block in ActionDispatch::Journey::Router#find_routes’
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:126:in ‘Array#each’
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:126:in ‘ActionDispatch::Journey::Router#find_routes’
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:34:in ‘ActionDispatch::Journey::Router#serve’
actionpack-8.0.5/lib/action_dispatch/routing/route_set.rb:908:in ‘ActionDispatch::Routing::RouteSet#call’
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:35:in ‘Middleware::OmniauthBypassMiddleware#call’
/var/www/discourse/lib/middleware/crawler_hooks.rb:13:in ‘Middleware::CrawlerHooks#call’
rack-2.2.23/lib/rack/tempfile_reaper.rb:15:in ‘Rack::TempfileReaper#call’
rack-2.2.23/lib/rack/conditional_get.rb:40:in ‘Rack::ConditionalGet#call’
rack-2.2.23/lib/rack/head.rb:12:in ‘Rack::Head#call’
actionpack-8.0.5/lib/action_dispatch/http/permissions_policy.rb:38:in ‘ActionDispatch::PermissionsPolicy::Middleware#call’
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in ‘ContentSecurityPolicy::Middleware#call’
/var/www/discourse/lib/middleware/anonymous_cache.rb:420:in ‘Middleware::AnonymousCache#call’
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in ‘Middleware::CspScriptNonceInjector#call’
/var/www/discourse/lib/middleware/track_view_session_id_injector.rb:12:in ‘Middleware::TrackViewSessionIdInjector#call’
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in ‘Discourse::Cors#call’
rack-2.2.23/lib/rack/session/abstract/id.rb:266:in ‘Rack::Session::Abstract::Persisted#context’
rack-2.2.23/lib/rack/session/abstract/id.rb:260:in ‘Rack::Session::Abstract::Persisted#call’
actionpack-8.0.5/lib/action_dispatch/middleware/cookies.rb:706:in ‘ActionDispatch::Cookies#call’
actionpack-8.0.5/lib/action_dispatch/middleware/callbacks.rb:31:in ‘block in ActionDispatch::Callbacks#call’
activesupport-8.0.5/lib/active_support/callbacks.rb:100:in ‘ActiveSupport::Callbacks#run_callbacks’
actionpack-8.0.5/lib/action_dispatch/middleware/callbacks.rb:30:in ‘ActionDispatch::Callbacks#call’
actionpack-8.0.5/lib/action_dispatch/middleware/debug_exceptions.rb:31:in ‘ActionDispatch::DebugExceptions#call’
actionpack-8.0.5/lib/action_dispatch/middleware/show_exceptions.rb:32:in ‘ActionDispatch::ShowExceptions#call’
logster-2.21.0/lib/logster/middleware/reporter.rb:40:in ‘Logster::Middleware::Reporter#call’
/var/www/discourse/lib/middleware/default_headers.rb:13:in ‘Middleware::DefaultHeaders#call’
railties-8.0.5/lib/rails/rack/logger.rb:41:in ‘Rails::Rack::Logger#call_app’
railties-8.0.5/lib/rails/rack/logger.rb:29:in ‘Rails::Rack::Logger#call’
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in ‘DiscourseRackQuietAssetsLogger#call’
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in ‘SilenceLogger#call’
actionpack-8.0.5/lib/action_dispatch/middleware/request_id.rb:34:in ‘ActionDispatch::RequestId#call’
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in ‘Middleware::EnforceHostname#call’
rack-2.2.23/lib/rack/method_override.rb:24:in ‘Rack::MethodOverride#call’
actionpack-8.0.5/lib/action_dispatch/middleware/executor.rb:16:in ‘ActionDispatch::Executor#call’
rack-2.2.23/lib/rack/sendfile.rb:127:in ‘Rack::Sendfile#call’
rack-mini-profiler-4.0.1/lib/mini_profiler.rb:191:in ‘Rack::MiniProfiler#call’
message_bus-4.5.2/lib/message_bus/rack/middleware.rb:60:in ‘MessageBus::Rack::Middleware#call’
/var/www/discourse/lib/middleware/request_tracker.rb:372:in ‘Middleware::RequestTracker#call’
actionpack-8.0.5/lib/action_dispatch/middleware/remote_ip.rb:96:in ‘ActionDispatch::RemoteIp#call’
/var/www/discourse/lib/middleware/overload_protections.rb:18:in ‘Middleware::OverloadProtections#call’
/var/www/discourse/lib/middleware/processing_request.rb:14:in ‘Middleware::ProcessingRequest#call’
railties-8.0.5/lib/rails/engine.rb:535:in ‘Rails::Engine#call’
railties-8.0.5/lib/rails/railtie.rb:226:in ‘Kernel#public_send’
railties-8.0.5/lib/rails/railtie.rb:226:in ‘Rails::Railtie.method_missing’
rack-2.2.23/lib/rack/urlmap.rb:74:in ‘block in Rack::URLMap#call’
rack-2.2.23/lib/rack/urlmap.rb:58:in ‘Array#each’
rack-2.2.23/lib/rack/urlmap.rb:58:in ‘Rack::URLMap#call’
rack-2.2.23/lib/rack/tempfile_reaper.rb:15:in ‘Rack::TempfileReaper#call’
pitchfork-0.18.2/lib/pitchfork/chunked.rb:105:in ‘Pitchfork::Chunked#call’
rack-2.2.23/lib/rack/content_length.rb:17:in ‘Rack::ContentLength#call’
pitchfork-0.18.2/lib/pitchfork/http_server.rb:868:in ‘Pitchfork::HttpServer#process_client’
pitchfork-0.18.2/lib/pitchfork/http_server.rb:1017:in ‘Pitchfork::HttpServer#worker_loop’
pitchfork-0.18.2/lib/pitchfork/http_server.rb:616:in ‘block in Pitchfork::HttpServer#spawn_worker’
pitchfork-0.18.2/lib/pitchfork/http_server.rb:1222:in ‘block in Pitchfork::HttpServer#fork_sibling’
pitchfork-0.18.2/lib/pitchfork.rb:170:in ‘block in Pitchfork.clean_fork’
pitchfork-0.18.2/lib/pitchfork.rb:168:in ‘Kernel#catch’
pitchfork-0.18.2/lib/pitchfork.rb:168:in ‘Pitchfork.clean_fork’
pitchfork-0.18.2/lib/pitchfork/http_server.rb:690:in ‘Pitchfork::HttpServer#spawn_initial_mold’
pitchfork-0.18.2/lib/pitchfork/http_server.rb:176:in ‘Pitchfork::HttpServer#start’
pitchfork-0.18.2/exe/pitchfork:110:in ‘<top (required)>’
/var/www/discourse/vendor/bundle/ruby/3.4.0/bin/pitchfork:25:in ‘Kernel#load’
/var/www/discourse/vendor/bundle/ruby/3.4.0/bin/pitchfork:25:in '<

My VPS configuration is as follows:

This is probably not caused directly by the reverse proxy.

For API-created posts, Discourse uses DistributedMemoizer around PostsController#create to avoid duplicate API post creation. That memoizer uses a Redis-backed DistributedMutex with a very short validity time of 1 second. The warning means that the post creation / serialization work inside that lock took longer than expected.

So:

  • if the API post is still created successfully, this is a warning rather than the root failure;
  • expected max: 1 secs, took an extra 1 secs means the lock was held for roughly 2 seconds;
  • it is more likely related to server performance, Redis/Postgres latency, disk I/O, CPU/RAM pressure, plugins, or slow post-processing than to nginx/1Panel reverse proxy itself;
  • the reason it only appears for API posting is that this memoizer path is used for API requests.

Things worth checking:

  1. Does the API request succeed and create only one post?
  2. How long does the API request take from the client side?
  3. Are CPU, memory, swap, or disk I/O saturated during API posting?
  4. Are Redis and Postgres inside the same container/host, and are they healthy?
  5. Does the warning still happen with a very small plain-text post and no images/uploads?
  6. Are there non-standard plugins installed?

Since this is a 1Panel/container deployment rather than the standard Discourse Docker install, it may also be useful to reproduce on an official supported install if possible before treating it as a Discourse core bug.

Thank you for your reply.

This website is primarily used for personal knowledge management. It is not open for registration, and I am the only user online. My VPS has the following specifications: 10 vCore (ARM64), 16 GB RAM, and 512 GB NVMe. I believe the performance should be sufficient.

1. Did the API request succeed, and was only one post created?

Yes, the API post was successful, and only one post was created.

2. From the client’s perspective, how long did the API request take?

How should I check this? I'm not quite sure.

3. During the API post, were CPU, memory, swap space, or disk I/O saturated?

I checked the monitoring logs, and none of these resources were saturated during the API post.

4. Are Redis and Postgres located in the same container/host and running properly?

They are in the same container and running properly.

5. If posting a small plain-text post without images or uploads, does the warning still appear?

Yes, the warning also appears for small plain-text posts.

6. Are any non-standard plugins installed?

Apart from the plugins installed by default, no other plugins have been installed.

I just turned off the AI plugin and posted via the API; no warnings appeared in the logs.
I then re-enabled the AI plugin and posted via the API again; still no warnings in the logs.
I’ll continue observing and testing.

Thanks, that extra detail is useful.

Since you are running on ARM64, that may be relevant. Discourse’s ARM/aarch64 container support has historically had some special handling compared with x86_64, so I would mention that clearly in the topic title or first post.

The AI plugin result is also interesting. Since the warning disappeared after disabling the AI plugin, but did not immediately return after re-enabling it, this might have been caused by some one-time initialisation, cache warm-up, model/provider setup, or background state rather than a consistent reproducible plugin bug.

At this point I would keep observing, but if it happens again I would try to capture:

  1. the exact API endpoint and payload shape, with any private content removed;
  2. whether the warning appears on the first API post after restart/rebuild only, or every API post;
  3. the client-side request duration;
  4. whether disabling the AI plugin reliably removes the warning across multiple tests;
  5. whether the same happens on x86_64 or only ARM64, if you are able to test that.

For checking client-side request duration, you can use curl with timing output, for example:

curl -s -o /dev/null \
  -w "total=%{time_total}s connect=%{time_connect}s starttransfer=%{time_starttransfer}s\n" \
  -X POST "https://your-site.example.com/posts.json" \
  -H "Api-Key: YOUR_API_KEY" \
  -H "Api-Username: YOUR_USERNAME" \
  --data-urlencode "title=API timing test" \
  --data-urlencode "raw=Small plain text API test post" \
  --data-urlencode "category=1"

If the request itself is taking around 2 seconds or more, then the mutex warning is probably just reporting that the post-create path took longer than Discourse expected. If the request is very fast but the warning still appears, that would be more interesting.

The hardware looks more than sufficient for a single-user site, so this may be architecture/deployment/plugin-path specific rather than simple under-provisioning.

I’ll disable Discourse AI for a while to see if this warning still appears.

Current testing shows that the appearance of warning logs is unrelated to whether Discourse AI is enabled.

Thanks for testing that.

In that case I would not treat the AI plugin as the likely cause. It may just have been a coincidence, or the disable/re-enable cycle may have changed some transient state temporarily.

The most useful next thing to capture is probably the request timing and the pattern of when the warning appears.

For example:

curl -s -o /dev/null \
  -w "total=%{time_total}s connect=%{time_connect}s starttransfer=%{time_starttransfer}s\n" \
  -X POST "https://your-site.example.com/posts.json" \
  -H "Api-Key: YOUR_API_KEY" \
  -H "Api-Username: YOUR_USERNAME" \
  --data-urlencode "title=API timing test" \
  --data-urlencode "raw=Small plain text API test post" \
  --data-urlencode "category=1"

If the warning appears again, it would be useful to compare:

  1. the time_total value from the client side;
  2. whether it happens only sometimes or on every API post;
  3. whether it happens after a restart/rebuild, or during normal running;
  4. whether multiple API requests are being made close together;
  5. whether the same API call creates the post successfully and only once.

At this point it still sounds like a warning from the API post-create path taking longer than the short mutex window, rather than evidence of a failed post or duplicate-post problem.

No posts were made today, and a warning appeared in the logs:


DistributedMutex("memoize_lock_post##59c6dac7790176d15fddc068dea5f734b254f591"): held for too long, expected max: 1 secs, took an extra 1 secs
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:218:in 'block in ActiveSupport::BroadcastLogger#dispatch' 
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in 'Array#map' 
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in 'ActiveSupport::BroadcastLogger#dispatch' 
activesupport-8.0.5/lib/active_support/broadcast_logger.rb:129:in 'ActiveSupport::BroadcastLogger#warn' 
/var/www/discourse/lib/distributed_mutex.rb:103:in 'DistributedMutex#warn' 
/var/www/discourse/lib/distributed_mutex.rb:57:in 'block in DistributedMutex#synchronize' 
/var/www/discourse/lib/distributed_mutex.rb:49:in 'Thread::Mutex#synchronize' 
/var/www/discourse/lib/distributed_mutex.rb:49:in 'DistributedMutex#synchronize' 
/var/www/discourse/lib/distributed_mutex.rb:34:in 'DistributedMutex.synchronize' 
/var/www/discourse/lib/distributed_memoizer.rb:12:in 'DistributedMemoizer.memoize' 
/var/www/discourse/app/controllers/posts_controller.rb:208:in 'PostsController#create' 
actionpack-8.0.5/lib/action_controller/metal/basic_implicit_render.rb:8:in 'ActionController::BasicImplicitRender#send_action' 
actionpack-8.0.5/lib/abstract_controller/base.rb:215:in 'AbstractController::Base#process_action' 
actionpack-8.0.5/lib/action_controller/metal/rendering.rb:193:in 'ActionController::Rendering#process_action' 
actionpack-8.0.5/lib/abstract_controller/callbacks.rb:261:in 'block in AbstractController::Callbacks#process_action' 
activesupport-8.0.5/lib/active_support/callbacks.rb:120:in 'block in ActiveSupport::Callbacks#run_callbacks' 
/var/www/discourse/app/controllers/application_controller.rb:452:in 'block in ApplicationController#with_resolved_locale' 
i18n-1.14.8/lib/i18n.rb:354:in 'I18n::Base#with_locale' 
/var/www/discourse/app/controllers/application_controller.rb:452:in 'ApplicationController#with_resolved_locale' 
activesupport-8.0.5/lib/active_support/callbacks.rb:129:in 'block in ActiveSupport::Callbacks#run_callbacks' 
/var/www/discourse/app/controllers/application_controller.rb:1103:in 'ApplicationController#ensure_dont_cache_page' 
activesupport-8.0.5/lib/active_support/callbacks.rb:129:in 'block in ActiveSupport::Callbacks#run_callbacks' 
activesupport-8.0.5/lib/active_support/callbacks.rb:140:in 'ActiveSupport::Callbacks#run_callbacks' 
actionpack-8.0.5/lib/abstract_controller/callbacks.rb:260:in 'AbstractController::Callbacks#process_action' 
actionpack-8.0.5/lib/action_controller/metal/rescue.rb:27:in 'ActionController::Rescue#process_action' 
actionpack-8.0.5/lib/action_controller/metal/instrumentation.rb:76:in 'block in ActionController::Instrumentation#process_action' 
activesupport-8.0.5/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument' 
activesupport-8.0.5/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument' 
activesupport-8.0.5/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument' 
actionpack-8.0.5/lib/action_controller/metal/instrumentation.rb:75:in 'ActionController::Instrumentation#process_action' 
actionpack-8.0.5/lib/action_controller/metal/params_wrapper.rb:259:in 'ActionController::ParamsWrapper#process_action' 
activerecord-8.0.5/lib/active_record/railties/controller_runtime.rb:39:in 'ActiveRecord::Railties::ControllerRuntime#process_action' 
actionpack-8.0.5/lib/abstract_controller/base.rb:152:in 'AbstractController::Base#process' 
actionview-8.0.5/lib/action_view/rendering.rb:40:in 'ActionView::Rendering#process' 
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in 'block in ActionController::Base#profile_method' 
actionpack-8.0.5/lib/action_controller/metal.rb:252:in 'ActionController::Metal#dispatch' 
actionpack-8.0.5/lib/action_controller/metal.rb:335:in 'ActionController::Metal.dispatch' 
actionpack-8.0.5/lib/action_dispatch/routing/route_set.rb:67:in 'ActionDispatch::Routing::RouteSet::Dispatcher#dispatch' 
actionpack-8.0.5/lib/action_dispatch/routing/route_set.rb:50:in 'ActionDispatch::Routing::RouteSet::Dispatcher#serve' 
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:53:in 'block in ActionDispatch::Journey::Router#serve' 
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:133:in 'block in ActionDispatch::Journey::Router#find_routes' 
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:126:in 'Array#each' 
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:126:in 'ActionDispatch::Journey::Router#find_routes' 
actionpack-8.0.5/lib/action_dispatch/journey/router.rb:34:in 'ActionDispatch::Journey::Router#serve' 
actionpack-8.0.5/lib/action_dispatch/routing/route_set.rb:908:in 'ActionDispatch::Routing::RouteSet#call' 
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:35:in 'Middleware::OmniauthBypassMiddleware#call' 
/var/www/discourse/lib/middleware/crawler_hooks.rb:13:in 'Middleware::CrawlerHooks#call' 
rack-2.2.23/lib/rack/tempfile_reaper.rb:15:in 'Rack::TempfileReaper#call' 
rack-2.2.23/lib/rack/conditional_get.rb:40:in 'Rack::ConditionalGet#call' 
rack-2.2.23/lib/rack/head.rb:12:in 'Rack::Head#call' 
actionpack-8.0.5/lib/action_dispatch/http/permissions_policy.rb:38:in 'ActionDispatch::PermissionsPolicy::Middleware#call' 
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in 'ContentSecurityPolicy::Middleware#call' 
/var/www/discourse/lib/middleware/anonymous_cache.rb:420:in 'Middleware::AnonymousCache#call' 
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in 'Middleware::CspScriptNonceInjector#call' 
/var/www/discourse/lib/middleware/track_view_session_id_injector.rb:12:in 'Middleware::TrackViewSessionIdInjector#call' 
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in 'Discourse::Cors#call' 
rack-2.2.23/lib/rack/session/abstract/id.rb:266:in 'Rack::Session::Abstract::Persisted#context' 
rack-2.2.23/lib/rack/session/abstract/id.rb:260:in 'Rack::Session::Abstract::Persisted#call' 
actionpack-8.0.5/lib/action_dispatch/middleware/cookies.rb:706:in 'ActionDispatch::Cookies#call' 
actionpack-8.0.5/lib/action_dispatch/middleware/callbacks.rb:31:in 'block in ActionDispatch::Callbacks#call' 
activesupport-8.0.5/lib/active_support/callbacks.rb:100:in 'ActiveSupport::Callbacks#run_callbacks' 
actionpack-8.0.5/lib/action_dispatch/middleware/callbacks.rb:30:in 'ActionDispatch::Callbacks#call' 
actionpack-8.0.5/lib/action_dispatch/middleware/debug_exceptions.rb:31:in 'ActionDispatch::DebugExceptions#call' 
actionpack-8.0.5/lib/action_dispatch/middleware/show_exceptions.rb:32:in 'ActionDispatch::ShowExceptions#call' 
logster-2.21.0/lib/logster/middleware/reporter.rb:40:in 'Logster::Middleware::Reporter#call' 
/var/www/discourse/lib/middleware/default_headers.rb:13:in 'Middleware::DefaultHeaders#call' 
railties-8.0.5/lib/rails/rack/logger.rb:41:in 'Rails::Rack::Logger#call_app' 
railties-8.0.5/lib/rails/rack/logger.rb:29:in 'Rails::Rack::Logger#call' 
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in 'DiscourseRackQuietAssetsLogger#call' 
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in 'SilenceLogger#call' 
actionpack-8.0.5/lib/action_dispatch/middleware/request_id.rb:34:in 'ActionDispatch::RequestId#call' 
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in 'Middleware::EnforceHostname#call' 
rack-2.2.23/lib/rack/method_override.rb:24:in 'Rack::MethodOverride#call' 
actionpack-8.0.5/lib/action_dispatch/middleware/executor.rb:16:in 'ActionDispatch::Executor#call' 
rack-2.2.23/lib/rack/sendfile.rb:127:in 'Rack::Sendfile#call' 
rack-mini-profiler-4.0.1/lib/mini_profiler.rb:191:in 'Rack::MiniProfiler#call' 
message_bus-4.5.2/lib/message_bus/rack/middleware.rb:60:in 'MessageBus::Rack::Middleware#call' 
/var/www/discourse/lib/middleware/request_tracker.rb:372:in 'Middleware::RequestTracker#call' 
actionpack-8.0.5/lib/action_dispatch/middleware/remote_ip.rb:96:in 'ActionDispatch::RemoteIp#call' 
/var/www/discourse/lib/middleware/overload_protections.rb:18:in 'Middleware::OverloadProtections#call' 
/var/www/discourse/lib/middleware/processing_request.rb:14:in 'Middleware::ProcessingRequest#call' 
railties-8.0.5/lib/rails/engine.rb:535:in 'Rails::Engine#call' 
railties-8.0.5/lib/rails/railtie.rb:226:in 'Kernel#public_send' 
railties-8.0.5/lib/rails/railtie.rb:226:in 'Rails::Railtie.method_missing' 
rack-2.2.23/lib/rack/urlmap.rb:74:in 'block in Rack::URLMap#call' 
rack-2.2.23/lib/rack/urlmap.rb:58:in 'Array#each' 
rack-2.2.23/lib/rack/urlmap.rb:58:in 'Rack::URLMap#call' 
rack-2.2.23/lib/rack/tempfile_reaper.rb:15:in 'Rack::TempfileReaper#call' 
pitchfork-0.18.2/lib/pitchfork/chunked.rb:105:in 'Pitchfork::Chunked#call' 
rack-2.2.23/lib/rack/content_length.rb:17:in 'Rack::ContentLength#call' 
pitchfork-0.18.2/lib/pitchfork/http_server.rb:868:in 'Pitchfork::HttpServer#process_client' 
pitchfork-0.18.2/lib/pitchfork/http_server.rb:1017:in 'Pitchfork::HttpServer#worker_loop' 
pitchfork-0.18.2/lib/pitchfork/http_server.rb:616:in 'block in Pitchfork::HttpServer#spawn_worker' 
pitchfork-0.18.2/lib/pitchfork/http_server.rb:1222:in 'block in Pitchfork::HttpServer#fork_sibling' 
pitchfork-0.18.2/lib/pitchfork.rb:170:in 'block in Pitchfork.clean_fork' 
pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Kernel#catch' 
pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Pitchfork.clean_fork' 
pitchfork-0.18.2/lib/pitchfork/http_server.rb:690:in 'Pitchfork::HttpServer#spawn_initial_mold' 
pitchfork-0.18.2/lib/pitchfork/http_server.rb:176:in 'Pitchfork::HttpServer#start' 
pitchfork-0.18.2/exe/pitchfork:110:in '<top (required)>' 
/var/www/discourse/vendor/bundle/ruby/3.4.0/bin/pitchfork:25:in 'Kernel#load' 
/var/www/discourse/vendor/bundle/ruby/3.4.0/bin/pitchfork:25:in '<' 

The following two images show consecutive logs. This warning has been appearing quite frequently~:rofl: