主题投票插件 - 历史投票统计缺失,用户投票困难

大家好,

我们最近将论坛重构为使用 2026.4.0-latest,现在用户无法查看历史投票,且投票功能也出现了问题。我已检查日志,发现“话题投票”插件可能正在使用已弃用的功能。以下是堆栈跟踪信息:

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/discourse.rb:1146:in 'Discourse.deprecate' 
/var/www/discourse/app/controllers/topics_controller.rb:467:in 'TopicsController#update' 
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:447: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:447: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:1098: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:11:in 'Middleware::CrawlerHooks#call' 
rack-2.2.22/lib/rack/tempfile_reaper.rb:15:in 'Rack::TempfileReaper#call' 
rack-2.2.22/lib/rack/conditional_get.rb:40:in 'Rack::ConditionalGet#call' 
rack-2.2.22/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/config/initializers/008-rack-cors.rb:26:in 'Discourse::Cors#call' 
rack-2.2.22/lib/rack/session/abstract/id.rb:266:in 'Rack::Session::Abstract::Persisted#context' 
rack-2.2.22/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.20.1/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.22/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.22/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:321: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:22: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.22/lib/rack/urlmap.rb:74:in 'block in Rack::URLMap#call' 
rack-2.2.22/lib/rack/urlmap.rb:58:in 'Array#each' 
rack-2.2.22/lib/rack/urlmap.rb:58:in 'Rack::URLMap#call' 
rack-2.2.22/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.22/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 '<main>' 
infobacktraceenv
 解决  移除  保护  复制  分享
调试
信息
  警告
  错误
  致命

这对我们社区来说是一个非常关键的插件,因此希望能尽快调查此问题。

我也遇到了!!!
这很令人沮丧,因为我作为discourse用于自身项目大量使用了poll插件进行投票,我从三个多小时前就已经在开始想办法处理这个问题但一直都无法解决,希望官方能够出面处理,不然就只能找其他已有平替了(目前暂未发现有替代品)。

@Discourse @featheredtoast 请相关部门或开发人员关注此问题报告。

1 个赞

此问题似乎也影响了 Reactions 插件和 User Note 插件,且看起来与已弃用的 selected_tags 参数有关。既然这些插件现已纳入核心功能,我本以为该问题应更早被发现。

弃用通知:将标签名称作为字符串传递给 `tags` 参数已弃用,请使用标签对象 ({id, name}) 代替(自 Discourse 2026.01 起弃用)(将于 Discourse 2026.07 移除)位于 /var/www/
弃用通知:`selected_tags` 参数已弃用,请使用 `selected_tag_ids` 代替(自 Discourse 2026.01 起弃用)(将于 Discourse 2026.07 移除)位于 /var/www/discourse/vendor/bundle/ruby/3.4.0/

版本 2026.3.0-latest 和 2026.3.0-latest.1 也出现了与本文报告中相同的问题。

看起来其他插件也受到了这个问题的影响:

  • 日历与事件

  • 已解决

问题可能出在这里?discourse/app/controllers/topics_controller.rb at 46e769b605d782dfee5cf1f6cb26571e42e9c431 · discourse/discourse · GitHub

目前,此警告不应导致任何问题。

我在日志中没有看到与这些插件相关的其他问题。有什么我可以运行的操作来帮助诊断这些问题的原因吗?

插件对你来说能正常工作吗?报告插件失效的用户是否在浏览器控制台中看到更多错误?

你遇到的问题似乎影响了所有插件,这让我想起了最近的一个话题:All plugins not functioning due to CORS error after recent upgrade

1 个赞

嗯,我查看了开发控制台,发现了一堆 CDN 错误,接下来会进一步排查!这很可能是根本原因。