Reactions plugin causing "Something went wrong" error when confirming emoji

I and a number of other users of my Discourse forum have encountered a bug with the Reactions plugin.

Environment

We’re running 2.8.0.beta10 ( 07c010422b )

Steps to Reproduce

It’s unpredictable and seems to happen across browsers, mobile/desktop view, and other variables. But here’s how it happens when it happens:

  1. Go to a forum reply.
  2. Hover over the Reactions heart icon.
  3. Select a reaction (e.g., hug or heart emoji).
  4. A dialogue box pop ups with an error, “Something went wrong.”

Discourse Error Log Dump

Message (98 copies reported)

NoMethodError (undefined method `user' for nil:NilClass Did you mean? super) app/services/notifications/delete_previous_notifications.rb:30:in `can_consolidate_data?' app/services/notifications/consolidation_planner.rb:18:in `block in plan_for' app/services/notifications/consolidation_planner.rb:18:in `each' app/services/notifications/consolidation_planner.rb:18:in `detect' app/services/notifications/consolidation_planner.rb:18:in `plan_for' app/services/notifications/consolidation_planner.rb:6:in `consolidate_or_save!' app/models/notification.rb:38:in `consolidate_or_create!' app/services/post_alerter.rb:507:in `create_notification' app/controllers/application_controller.rb:387:in `block in with_resolved_locale' app/controllers/application_controller.rb:387:in `with_resolved_locale' lib/middleware/omniauth_bypass_middleware.rb:71:in `call' lib/content_security_policy/middleware.rb:12:in `call' lib/middleware/anonymous_cache.rb:356:in `call' config/initializers/100-quiet_logger.rb:23:in `call' config/initializers/100-silence_logger.rb:31:in `call' lib/middleware/enforce_hostname.rb:23:in `call' lib/middleware/request_tracker.rb:198:in `call'

Backtrace

plugins/discourse-reactions/plugin.rb:293:in `block (2 levels) in activate!'

app/services/notifications/delete_previous_notifications.rb:30:in `can_consolidate_data?'

app/services/notifications/consolidation_planner.rb:18:in `block in plan_for'

app/services/notifications/consolidation_planner.rb:18:in `each'

app/services/notifications/consolidation_planner.rb:18:in `detect'

app/services/notifications/consolidation_planner.rb:18:in `plan_for'

app/services/notifications/consolidation_planner.rb:6:in `consolidate_or_save!'

app/models/notification.rb:38:in `consolidate_or_create!'

activerecord (6.1.4.1) lib/active_record/relation/delegation.rb:67:in `block in consolidate_or_create!'

activerecord (6.1.4.1) lib/active_record/relation.rb:406:in `block in scoping'

activerecord (6.1.4.1) lib/active_record/relation.rb:804:in `_scoping'

activerecord (6.1.4.1) lib/active_record/relation.rb:406:in `scoping'

activerecord (6.1.4.1) lib/active_record/associations/collection_proxy.rb:1109:in `scoping'

activerecord (6.1.4.1) lib/active_record/relation/delegation.rb:67:in `consolidate_or_create!'

app/services/post_alerter.rb:507:in `create_notification'

plugins/discourse-reactions/app/services/discourse_reactions/reaction_notification.rb:16:in `create'

plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:46:in `add_reaction_notification'

plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:91:in `add_reaction'

plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:38:in `toggle_reaction'

plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:21:in `block in toggle!'

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'

activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'

activerecord (6.1.4.1) lib/active_record/transactions.rb:209:in `transaction'

plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:18:in `toggle!'

plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:17:in `toggle'

actionpack (6.1.4.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack (6.1.4.1) lib/abstract_controller/base.rb:228:in `process_action'

actionpack (6.1.4.1) lib/action_controller/metal/rendering.rb:30:in `process_action'

actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action'

activesupport (6.1.4.1) lib/active_support/callbacks.rb:117:in `block in run_callbacks'

app/controllers/application_controller.rb:387:in `block in with_resolved_locale'

i18n (1.8.11) lib/i18n.rb:314:in `with_locale'

app/controllers/application_controller.rb:387:in `with_resolved_locale'

activesupport (6.1.4.1) lib/active_support/callbacks.rb:126:in `block in run_callbacks'

activesupport (6.1.4.1) lib/active_support/callbacks.rb:137:in `run_callbacks'

actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:41:in `process_action'

actionpack (6.1.4.1) lib/action_controller/metal/rescue.rb:22:in `process_action'

actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'

activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `block in instrument'

activesupport (6.1.4.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `instrument'

actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:33:in `process_action'

actionpack (6.1.4.1) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'

activerecord (6.1.4.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'

actionpack (6.1.4.1) lib/abstract_controller/base.rb:165:in `process'

actionview (6.1.4.1) lib/action_view/rendering.rb:39:in `process'

rack-mini-profiler (2.3.3) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'

actionpack (6.1.4.1) lib/action_controller/metal.rb:190:in `dispatch'

actionpack (6.1.4.1) lib/action_controller/metal.rb:254:in `dispatch'

actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'

actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:33:in `serve'

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'

actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'

railties (6.1.4.1) lib/rails/engine.rb:539:in `call'

railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'

railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'

actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:20:in `block in <class:Constraints>'

actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:49:in `serve'

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'

actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'

actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'

lib/middleware/omniauth_bypass_middleware.rb:71:in `call'

rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'

rack (2.2.3) lib/rack/conditional_get.rb:40:in `call'

rack (2.2.3) lib/rack/head.rb:12:in `call'

actionpack (6.1.4.1) lib/action_dispatch/http/permissions_policy.rb:22:in `call'

lib/content_security_policy/middleware.rb:12:in `call'

lib/middleware/anonymous_cache.rb:356:in `call'

rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'

rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/cookies.rb:689:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'

activesupport (6.1.4.1) lib/active_support/callbacks.rb:98:in `run_callbacks'

actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'

logster (2.10.1) lib/logster/middleware/reporter.rb:43:in `call'

railties (6.1.4.1) lib/rails/rack/logger.rb:37:in `call_app'

railties (6.1.4.1) lib/rails/rack/logger.rb:28:in `call'

config/initializers/100-quiet_logger.rb:23:in `call'

config/initializers/100-silence_logger.rb:31:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'

lib/middleware/enforce_hostname.rb:23:in `call'

rack (2.2.3) lib/rack/method_override.rb:24:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/executor.rb:14:in `call'

rack (2.2.3) lib/rack/sendfile.rb:110:in `call'

actionpack (6.1.4.1) lib/action_dispatch/middleware/host_authorization.rb:92:in `call'

rack-mini-profiler (2.3.3) lib/mini_profiler/profiler.rb:249:in `call'

message_bus (3.3.8) lib/message_bus/rack/middleware.rb:61:in `call'

lib/middleware/request_tracker.rb:198:in `call'

railties (6.1.4.1) lib/rails/engine.rb:539:in `call'

railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'

railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'

rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'

rack (2.2.3) lib/rack/urlmap.rb:58:in `each'

rack (2.2.3) lib/rack/urlmap.rb:58:in `call'

unicorn (6.0.0) lib/unicorn/http_server.rb:634:in `process_client'

unicorn (

Thanks for letting us know, @JoelZaslofsky!

For v.2.8.0.beta10, I incorrectly pinned the plugin to a commit that relies on a Discourse core change that it’s only available on beta11. Here’s a fix:

https://github.com/discourse/discourse-reactions/pull/137

Please rebuild your site to fetch the correct plugin commit, and let us know if you see this error again.

4개의 좋아요

This topic was automatically closed after 16 hours. New replies are no longer allowed.