"undefined method `epics'" error when rendering some content on GitLab.com
### Summary A Support team member (thanks @goeun.gil!) reported odd behaviour when trying to access a training template file located here: https://gitlab.com/gitlab-com/support/support-training/-/blob/main/.gitlab/issue_templates/Code%20Contributions.md When loaded, it indicates an error and triggers a `500` in the backend. We can see in Kibana that this will routinely return an error, where it looks to check for epics under a UserNamespace: ```json # some values removed for brevity "json": { "meta.client_id": "user/10369602", "db_main_replica_txn_max_duration_s": 0, "controller": "Projects::BlobController", "exception.cause_class": "NoMethodError", "meta.feature_category": "source_code_management", "exception.class": "ActionView::Template::Error", "meta.project": "gitlab-com/support/support-training", "meta.caller_id": "Projects::BlobController#show", "exception.backtrace": [ "ee/lib/ee/banzai/filter/references/epic_reference_filter.rb:49:in `parent_records'", "lib/banzai/filter/references/reference_cache.rb:152:in `block in load_records_per_parent'", "lib/banzai/filter/references/reference_cache.rb:149:in `each'", "lib/banzai/filter/references/reference_cache.rb:149:in `load_records_per_parent'", "lib/banzai/filter/references/reference_cache.rb:19:in `load_reference_cache'", "lib/banzai/filter/references/abstract_reference_filter.rb:124:in `call'", "lib/banzai/filter/concerns/timeout_filter_handler.rb:37:in `block in call'", "lib/gitlab/render_timeout.rb:11:in `timeout'", "lib/banzai/filter/concerns/timeout_filter_handler.rb:37:in `call'", "lib/banzai/filter/concerns/pipeline_timing_check.rb:26:in `call'", "lib/banzai/filter/references/reference_filter.rb:43:in `block in call_and_update_nodes'", "lib/banzai/filter/references/reference_filter.rb:298:in `with_update_nodes'", "lib/banzai/filter/references/reference_filter.rb:43:in `call_and_update_nodes'", "lib/banzai/filter/references/reference_filter.rb:31:in `call'", "lib/banzai/pipeline/base_pipeline.rb:26:in `block (2 levels) in singleton class'", "lib/banzai/renderer.rb:131:in `block in render_result'", "lib/banzai/renderer.rb:221:in `instrument_filters'", "lib/banzai/renderer.rb:129:in `render_result'", "lib/banzai/renderer.rb:165:in `cacheless_render'", "lib/banzai/renderer.rb:28:in `block in render'", "lib/banzai/renderer.rb:27:in `render'", "lib/banzai.rb:16:in `render'", "app/services/markup/rendering_service.rb:40:in `markdown_unsafe'", "app/services/markup/rendering_service.rb:29:in `markup_unsafe'", "app/services/markup/rendering_service.rb:16:in `execute'", "app/helpers/markup_helper.rb:116:in `markup'", "app/views/projects/blob/viewers/_markup.html.haml:3", "app/views/projects/blob/_viewer.html.haml:24", "app/controllers/application_controller.rb:370:in `view_to_html_string'", "app/controllers/concerns/renders_blob.rb:17:in `blob_viewer_json'", "app/controllers/projects/blob_controller.rb:271:in `show_json'", "app/controllers/projects/blob_controller.rb:76:in `block (2 levels) in show'", "app/controllers/projects/blob_controller.rb:68:in `show'", "app/controllers/application_controller.rb:554:in `block in allow_gitaly_ref_name_caching'", "lib/gitlab/gitaly_client.rb:478:in `allow_ref_name_caching'", "app/controllers/application_controller.rb:553:in `allow_gitaly_ref_name_caching'", "lib/gitlab/ip_address_state.rb:11:in `with'", "ee/app/controllers/ee/application_controller.rb:45:in `set_current_ip_address'", "app/controllers/application_controller.rb:505:in `set_current_admin'", "lib/gitlab/session.rb:11:in `with_session'", "app/controllers/application_controller.rb:496:in `set_session_storage'", "lib/gitlab/i18n.rb:114:in `with_locale'", "lib/gitlab/i18n.rb:120:in `with_user_locale'", "app/controllers/application_controller.rb:487:in `set_locale'", "app/controllers/application_controller.rb:480:in `set_current_context'", "ee/app/controllers/ee/projects/blob_controller.rb:27:in `repair_blobs_index'", "lib/gitlab/middleware/action_controller_static_context.rb:23:in `call'", "ee/lib/omni_auth/strategies/group_saml.rb:41:in `other_phase'", "lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'", "lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20:in `block in call'", "lib/gitlab/sidekiq_sharding/validator.rb:42:in `enabled'", "lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20:in `call'", "lib/gitlab/middleware/memory_report.rb:13:in `call'", "lib/gitlab/middleware/speedscope.rb:13:in `call'", "lib/gitlab/database/load_balancing/rack_middleware.rb:23:in `call'", "lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'", "lib/gitlab/etag_caching/middleware.rb:21:in `call'", "lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'", "lib/gitlab/metrics/web_transaction.rb:46:in `run'", "lib/gitlab/metrics/rack_middleware.rb:16:in `call'", "lib/gitlab/middleware/go.rb:21:in `call'", "lib/gitlab/middleware/query_analyzer.rb:11:in `block in call'", "lib/gitlab/database/query_analyzer.rb:83:in `within'", "lib/gitlab/middleware/query_analyzer.rb:11:in `call'", "lib/ci/job_token/middleware.rb:11:in `call'", "lib/gitlab/middleware/multipart.rb:173:in `call'", "lib/gitlab/middleware/read_only/controller.rb:50:in `call'", "lib/gitlab/middleware/read_only.rb:18:in `call'", "lib/gitlab/middleware/unauthenticated_session_expiry.rb:18:in `call'", "lib/gitlab/middleware/same_site_cookies.rb:27:in `call'", "lib/gitlab/middleware/path_traversal_check.rb:40:in `call'", "lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'", "lib/gitlab/middleware/basic_health_check.rb:25:in `call'", "lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'", "lib/gitlab/middleware/request_context.rb:15:in `call'", "lib/gitlab/middleware/webhook_recursion_detection.rb:15:in `call'", "config/initializers/fix_local_cache_middleware.rb:11:in `call'", "lib/gitlab/middleware/compressed_json.rb:44:in `call'", "lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'", "lib/gitlab/middleware/sidekiq_web_static.rb:20:in `call'", "lib/gitlab/metrics/requests_rack_middleware.rb:79:in `call'", "lib/gitlab/middleware/release_env.rb:12:in `call'" ], "exception.message": "undefined method `epics' for #<Namespaces::UserNamespace id:465491 @gitlab>", "correlation_id": "01JF97283J5BCSDTJ56CAN1Q87", }, ``` Strangley, it appears to be calling ``Namespaces::UserNamespace`, and referneces an id `465491` which belongs to the `@gitlab` **user account**: https://gitlab.com/gitlab. We've seen this only begin to occur in the last 24 hours: Kibana (7 days): https://log.gprd.gitlab.net/app/r/s/gNPXR ![image](/uploads/5a9462e60f61dd161a433d4b99c4ca68/image.png) Sentry (thanks @anton) https://new-sentry.gitlab.net/organizations/gitlab/issues/1244599/?project=3&query=is%3Aunresolved+correlation_id%3A01JF97283J5BCSDTJ56CAN1Q87&referrer=issue-stream&statsPeriod=14d&stream_index=0 ![image](/uploads/0dac9ab2a4bbf5feb39fd0ef9076c771/image.png) ### Steps to reproduce - Go to this link and check devtools for the failed request. Capture the Correlation ID and review Kibana: https://gitlab.com/gitlab-com/support/support-training/-/blob/main/.gitlab/issue_templates/Code%20Contributions.md - Or on GitLab.com, create a markdown file in a project with the following content - on commit you will reproduce the error (I can't paste the raw markdown here otherwise this issue will be unviewable to the same bug, hence the image): ![image](/uploads/de67c7d59c779e349ec98b5c781784ea/image.png) ### Example Project As mentioned above: https://gitlab.com/gitlab-com/support/support-training/-/blob/main/.gitlab/issue_templates/Code%20Contributions.md ### What is the current *bug* behavior? The content cannot be rendered. ### What is the expected *correct* behavior? The content can be rendered ### Output of checks This bug happens on GitLab.com ### Possible fixes Is it possible that a recent change is trying to check for a user account and check epics of the user? Understandably, the error fails as a User Namespace does not have epics. <!-- If you don't have /label privileges, follow up with an issue comment of `@gitlab-bot label ~"type::bug"` -->
issue