Commit history page timeout on main branch due to markdown link processing
Problem
Loading the commit history on the main branch results in a 500 error. The issue is specific to one project and the main ref.
From the logs we can see several occurrences of this in the past 30 days: https://log.gprd.gitlab.net/app/r/s/SVUYq
Root Cause
The Projects::CommitsController#show action times out after 60 seconds. The majority of processing time is spent on markdown link processing during commit description rendering.
The error occurs in the markdown rendering pipeline:
-
lib/banzai/filter/autolink_filter.rb- autolink filter processing -
lib/gitlab/string_range_marker.rb- string range marking for links - The timeout happens while processing commit descriptions with markdown links
Error Details
-
Exception:
Rack::Timeout::RequestTimeoutException - Duration: Request ran for longer than 60000ms
- CPU Time: ~59.23 seconds spent on markdown processing
-
Controller:
Projects::CommitsController#show - Action: Rendering commits for display
Stack Trace Key Points
The timeout occurs during:
-
set_commits_for_rendering- preparing commits for display -
prepare_commits_for_rendering- rendering commit descriptions -
Banzai::CommitRenderer#render- processing markdown in commit messages -
Banzai::ObjectRenderer#render_documents- rendering multiple commits -
autolink_filter- processing markdown links in descriptions
Workaround
Users can view commits using time range filters with committed_before and committed_after URL parameters to reduce the number of commits being processed.
Related Issues
- Issue #552072 (closed)
- Issue #515892 (closed)
Impact
- Affects commit history viewing on the main branch
- 500 error prevents users from accessing commit history
Edited by 🤖 GitLab Bot 🤖