Edits not displayed and timing out

Background: My Discourse instance was upgraded to 3.3.1 a few weeks ago. My mods and myself have noticed our forum is currently timing out when trying to load post edits like below:

Is there a good place to look at where this error might be happening in the software console? More than happy to pass back logs

Yes I suspect that when logged in looking forum.example.com/logs should surface errors.

3 Likes

Here’s the only error I’m able to see in our logs:


Psych::DisallowedClass (Tried to dump unspecified class: ActiveRecord::Associations::CollectionProxy) app/serializers/post_revision_serializer.rb:246:in `block in all_revisions' app/serializers/post_r 

/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:571:in `accept'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:360:in `block in visit_Enumerator'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:360:in `each'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:360:in `visit_Enumerator'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:352:in `visit_Array'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:135:in `accept'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:574:in `accept'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:331:in `block in visit_Hash'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:329:in `each'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:329:in `visit_Hash'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:135:in `accept'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:574:in `accept'
/usr/local/lib/ruby/3.3.0/psych/visitors/yaml_tree.rb:117:in `push'
/usr/local/lib/ruby/3.3.0/psych.rb:585:in `safe_dump'
activerecord (7.1.3.4) lib/active_record/coders/yaml_column.rb:19:in `dump'
activerecord (7.1.3.4) lib/active_record/coders/column_serializer.rb:26:in `dump'
activerecord (7.1.3.4) lib/active_record/type/serialized.rb:29:in `serialize'
activemodel (7.1.3.4) lib/active_model/type/helpers/mutable.rb:8:in `cast'
activemodel (7.1.3.4) lib/active_model/attribute.rb:199:in `type_cast'
activemodel (7.1.3.4) lib/active_model/attribute.rb:43:in `value'
activemodel (7.1.3.4) lib/active_model/attribute_set.rb:51:in `fetch_value'
activerecord (7.1.3.4) lib/active_record/attribute_methods/read.rb:51:in `_read_attribute'
activemodel (7.1.3.4) lib/active_model/attribute_methods.rb:286:in `modifications'
app/serializers/post_revision_serializer.rb:246:in `block in all_revisions'
app/serializers/post_revision_serializer.rb:241:in `each'
app/serializers/post_revision_serializer.rb:241:in `all_revisions'
app/serializers/post_revision_serializer.rb:202:in `revisions'
app/serializers/post_revision_serializer.rb:265:in `previous'
app/serializers/post_revision_serializer.rb:46:in `previous_hidden'
(eval at active_model_serializers-0.8.4/lib/active_model/serializer.rb:467):5:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
activesupport (7.1.3.4) lib/active_support/json/encoding.rb:23:in `encode'
activesupport (7.1.3.4) lib/active_support/json/encoding.rb:23:in `encode'
activesupport (7.1.3.4) lib/active_support/core_ext/object/json.rb:42:in `to_json'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:331:in `to_json'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapter.rb:25:in `dump'
multi_json (1.15.0) lib/multi_json.rb:139:in `dump'
app/controllers/application_controller.rb:528:in `render_json_dump'
app/controllers/posts_controller.rb:459:in `latest_revision'
actionpack (7.1.3.4) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.1.3.4) lib/abstract_controller/base.rb:224:in `process_action'
actionpack (7.1.3.4) lib/action_controller/metal/rendering.rb:165:in `process_action'
actionpack (7.1.3.4) lib/abstract_controller/callbacks.rb:259:in `block in process_action'
activesupport (7.1.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
plugins/discourse-staff-alias/lib/discourse_staff_alias/posts_controller_extension.rb:26:in `block (2 levels) in <module:PostsControllerExtension>'
activesupport (7.1.3.4) lib/active_support/callbacks.rb:130:in `instance_exec'
activesupport (7.1.3.4) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
app/controllers/application_controller.rb:424:in `block in with_resolved_locale'
i18n (1.14.5) lib/i18n.rb:351:in `with_locale'
app/controllers/application_controller.rb:424:in `with_resolved_locale'
activesupport (7.1.3.4) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
activesupport (7.1.3.4) lib/active_support/callbacks.rb:141:in `run_callbacks'
actionpack (7.1.3.4) lib/abstract_controller/callbacks.rb:258:in `process_action'
actionpack (7.1.3.4) lib/action_controller/metal/rescue.rb:25:in `process_action'
actionpack (7.1.3.4) lib/action_controller/metal/instrumentation.rb:74:in `block in process_action'
activesupport (7.1.3.4) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.1.3.4) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (7.1.3.4) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.1.3.4) lib/action_controller/metal/instrumentation.rb:73:in `process_action'
actionpack (7.1.3.4) lib/action_controller/metal/params_wrapper.rb:261:in `process_action'
activerecord (7.1.3.4) lib/active_record/railties/controller_runtime.rb:32:in `process_action'
actionpack (7.1.3.4) lib/abstract_controller/base.rb:160:in `process'
actionview (7.1.3.4) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (3.3.1) lib/mini_profiler/profiling_methods.rb:89:in `block in profile_method'

actionpack (7.1.3.4) lib/action_controller/metal.rb:227:in `dispatch'
actionpack (7.1.3.4) lib/action_controller/metal.rb:309:in `dispatch'
actionpack (7.1.3.4) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.1.3.4) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:51:in `block in serve'
actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:131:in `block in find_routes'
actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:124:in `each'
actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:124:in `find_routes'
actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.1.3.4) lib/action_dispatch/routing/route_set.rb:882:in `call'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
rack (2.2.9) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.9) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.9) lib/rack/head.rb:12:in `call'
actionpack (7.1.3.4) lib/action_dispatch/http/permissions_policy.rb:36:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:393:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
rack (2.2.9) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.9) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.1.3.4) lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack (7.1.3.4) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (7.1.3.4) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (7.1.3.4) lib/action_dispatch/middleware/callbacks.rb:28:in `call'
actionpack (7.1.3.4) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack (7.1.3.4) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
logster (2.20.0) lib/logster/middleware/reporter.rb:40:in `call'
lib/freedom_patches/rails_rack_logger_from_rails_7_2.rb:35:in `call_app'
lib/freedom_patches/rails_rack_logger_from_rails_7_2.rb:22:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.1.3.4) lib/action_dispatch/middleware/request_id.rb:28:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
rack (2.2.9) lib/rack/method_override.rb:24:in `call'
actionpack (7.1.3.4) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.9) lib/rack/sendfile.rb:110:in `call'
rack-mini-profiler (3.3.1) lib/mini_profiler.rb:191:in `call'
message_bus (4.3.8) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:360:in `call'
actionpack (7.1.3.4) lib/action_dispatch/middleware/remote_ip.rb:92:in `call'
railties (7.1.3.4) lib/rails/engine.rb:536:in `call'
railties (7.1.3.4) lib/rails/railtie.rb:226:in `public_send'
railties (7.1.3.4) lib/rails/railtie.rb:226:in `me

Not exactly sure if this is related, just the most recent error I’ve been able to find. I’m curious if there’s somewhere that can trigger logging when pulling up edit screens since it doesn’t log these, it just looks like a client side time out. Browser inspector is indicating it’s a 500 error, is this something I can fix server side?

Screenshot From 2024-10-10 10-23-53

1 Like

curious are there any non official plugins installed on your instance (if so which?), I suspect something may be amending the way we serialize edits.

the good news is that this is not a time out, its just an error, but we do want to help you get it sorted.

1 Like

Yes, a few but these have been present between upgrades on the forum (not that that can’t cause issues, just that they’ve all been in place for a while)

 # Official
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
          - git clone https://github.com/discourse/discourse-chat-integration.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-docs.git
          - git clone https://github.com/discourse/discourse-encrypt.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-rss-polling.git
          - git clone https://github.com/discourse/discourse-category-experts.git
          - git clone https://github.com/discourse/discourse-staff-alias.git
          - git clone https://github.com/discourse/discourse-templates.git
          - git clone https://github.com/discourse/discourse-automation.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-post-voting.git
          - git clone https://github.com/discourse/discourse-policy.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/discourse/discourse-restricted-replies.git
          - git clone https://github.com/discourse/discourse-teambuild.git
          - git clone https://github.com/discourse/discourse-bbcode.git
          - git clone https://github.com/discourse/discourse-shared-edits.git
          - git clone https://github.com/discourse/discourse-github.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-signatures.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-custom-topic-lists.git
          - git clone https://github.com/discourse/discourse-lti.git
          # Third Party 
          ## Retorts 
          - git clone https://github.com/gdpelican/retort.git
          ## Communiteq
          - git clone https://github.com/communiteq/discourse-private-replies.git
          - git clone https://github.com/communiteq/discourse-private-topics.git
          - git clone https://github.com/communiteq/discourse-category-restrictor.git
          ## NetGamers
          - git clone https://github.com/netgamers-forum/discourse-category-mod-enhancer.git
          ## Pavilion Coop
          - git clone https://github.com/paviliondev/discourse-custom-wizard.git
          - git clone https://github.com/paviliondev/discourse-tickets.git
          - git clone https://github.com/paviliondev/discourse-landing-pages.git
          - git clone https://github.com/paviliondev/discourse-journal.git

The Retorts plugin is installed but not enabled, we migrated to the official reactions plugin and had it there to migrate over the old data earlier this year when we finally made the switch.

1 Like

I don’t think enable/disable is enough. You should comment it out. Or delete that line.

6 Likes

It’s most likely staff-alias but we will investigate.

This doesn’t prove anything but I use staff alias without such issues.

1 Like

Yes Im not sure at this point it’s staff-alias, but few clues make it a good contender. It could however just be in the stack trace without being the source of the problem.

Happy to give more detailed logs if you need it!

Planned for our next maintenance window!

Can you rebuild without it? Sometimes plugins can fiddle with stuff incorrectly even in a disabled state, especially old broken ones.