[go: up one dir, main page]

Skip to content

Gracefully handle Git errors in project views

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Zendesk (internal): https://gitlab.zendesk.com/agent/tickets/128782

GitLab will produce a 500 error when viewing certain project pages if there is a problem with the repository, or if Gitaly errors for another reason. The error may be something like the following, or a GRPC::Unavailable or GRPC::DeadlineExceeded error:

Gitlab::Git::CommandError (13:read info line: EOF): 
lib/gitlab/git/wraps_gitaly_errors.rb:13:in `rescue in wrapped_gitaly_errors' 
lib/gitlab/git/wraps_gitaly_errors.rb:6:in `wrapped_gitaly_errors' 
lib/gitlab/metrics/instrumentation.rb:161:in `block in wrapped_gitaly_errors' 
lib/gitlab/metrics/method_call.rb:36:in `measure' 
lib/gitlab/metrics/instrumentation.rb:161:in `wrapped_gitaly_errors' 
lib/gitlab/git/repository.rb:145:in `local_branches' 
app/models/repository.rb:788:in `local_branches' 
lib/gitlab/metrics/instrumentation.rb:161:in `block in branches' 
lib/gitlab/metrics/method_call.rb:36:in `measure' 
lib/gitlab/metrics/instrumentation.rb:161:in `branches' 
app/models/protectable_dropdown.rb:25:in `public_send' 
app/models/protectable_dropdown.rb:25:in `refs' 
app/models/protectable_dropdown.rb:29:in `ref_names' 
app/models/protectable_dropdown.rb:15:in `protectable_ref_names' 
app/models/protectable_dropdown.rb:19:in `hash' 
app/controllers/projects/settings/repository_controller.rb:88:in `protectable_branches_for_dropdown' 
app/controllers/projects/settings/repository_controller.rb:93:in `load_gon_index' 
ee/app/controllers/ee/projects/settings/repository_controller.rb:35:in `load_gon_index' 
app/controllers/projects/settings/repository_controller.rb:60:in `define_protected_refs' 
ee/app/controllers/ee/projects/settings/repository_controller.rb:46:in `render_show' 
app/controllers/projects/settings/repository_controller.rb:10:in `show' 
lib/gitlab/i18n.rb:55:in `with_locale' 
lib/gitlab/i18n.rb:61:in `with_user_locale' 
app/controllers/application_controller.rb:434:in `set_locale' 
lib/gitlab/middleware/rails_queue_duration.rb:27:in `call' 
lib/gitlab/metrics/rack_middleware.rb:17:in `block in call' 
lib/gitlab/metrics/transaction.rb:57:in `run' 
lib/gitlab/metrics/rack_middleware.rb:17:in `call' 
lib/gitlab/middleware/multipart.rb:103:in `call' 
lib/gitlab/request_profiler/middleware.rb:16:in `call' 
ee/lib/gitlab/jira/middleware.rb:17:in `call' 
lib/gitlab/middleware/go.rb:20:in `call' 
lib/gitlab/etag_caching/middleware.rb:13:in `call' 
lib/gitlab/middleware/correlation_id.rb:16:in `block in call' 
lib/gitlab/correlation_id.rb:15:in `use_id' 
lib/gitlab/middleware/correlation_id.rb:15:in `call' 
lib/gitlab/middleware/read_only/controller.rb:42:in `call' 
lib/gitlab/middleware/read_only.rb:18:in `call' 
lib/gitlab/middleware/basic_health_check.rb:25:in `call' 
lib/gitlab/request_context.rb:26:in `call' 
lib/gitlab/metrics/requests_rack_middleware.rb:29:in `call' 
lib/gitlab/middleware/release_env.rb:13:in `call'

GitLab should gracefully handle problems accessing the repository, at least for certain pages. For example, the project main page itself, the 'Files' view, and all settings pages should load despite the repository not loading. We should be able to catch the mentioned errors and display the page anyway, with a friendly error message.

Edited by 🤖 GitLab Bot 🤖