More descriptive error message for cherry pick
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Proposal
We are receiving the following error message in the GitLab UI when trying to cherry a merge request (already merged) into an existing branch (without creating a merge request for the cherry-pick):
13:Received RST_STREAM with error code 2.
With the help of the log files for gitaly and the exception log, we were able to figure out the cause. However, users themselves have no chance to understand what's going on. The above error message is causing internal support overhead.
Here is the backtrace from expection.json
"exception.class": "Gitlab::Git::CommandError",
"exception.message": "13:Received RST_STREAM with error code 2.",
"exception.backtrace": [
"lib/gitlab/git/wraps_gitaly_errors.rb:24:in `rescue in wrapped_gitaly_errors'",
"lib/gitlab/git/wraps_gitaly_errors.rb:6:in `wrapped_gitaly_errors'",
"lib/gitlab/git/repository.rb:715:in `cherry_pick'",
"app/models/repository.rb:949:in `block in cherry_pick'",
"app/models/repository.rb:863:in `with_cache_hooks'",
"app/models/repository.rb:948:in `cherry_pick'",
"app/services/commits/change_service.rb:21:in `public_send'",
"app/services/commits/change_service.rb:21:in `commit_change'",
"app/services/commits/cherry_pick_service.rb:14:in `block in create_commit!'",
"lib/gitlab/git/cross_repo.rb:20:in `ensuring_ref_in_source'",
"lib/gitlab/git/cross_repo.rb:14:in `execute'",
"app/services/commits/cherry_pick_service.rb:13:in `create_commit!'",
"app/services/commits/create_service.rb:30:in `execute'",
"app/controllers/concerns/creates_commit.rb:31:in `create_commit'",
"app/controllers/projects/commit_controller.rb:145:in `cherry_pick'",
"ee/lib/gitlab/ip_address_state.rb:10:in `with'",
"ee/app/controllers/ee/application_controller.rb:45:in `set_current_ip_address'",
"app/controllers/application_controller.rb:500:in `set_current_admin'",
"lib/gitlab/session.rb:11:in `with_session'",
"app/controllers/application_controller.rb:491:in `set_session_storage'",
"lib/gitlab/i18n.rb:107:in `with_locale'",
"lib/gitlab/i18n.rb:113:in `with_user_locale'",
"app/controllers/application_controller.rb:482:in `set_locale'",
"app/controllers/application_controller.rb:475:in `set_current_context'",
"lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16: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/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/jira/middleware.rb:19:in `call'",
"lib/gitlab/middleware/go.rb:20:in `call'",
"lib/gitlab/etag_caching/middleware.rb:21:in `call'",
"lib/gitlab/middleware/query_analyzer.rb:11:in `block in call'",
"lib/gitlab/database/query_analyzer.rb:37:in `within'",
"lib/gitlab/middleware/query_analyzer.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/same_site_cookies.rb:27:in `call'",
"lib/gitlab/middleware/basic_health_check.rb:25:in `call'",
"lib/gitlab/middleware/handle_malformed_strings.rb:21: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:13:in `call'"
The relevant part in gitaly/current log:
"error": "cherry pick: cherry-pick: there are conflicting files",
"grpc.code": "FailedPrecondition",
"grpc.meta.auth_version": "v2",
"grpc.meta.client_name": "gitlab-web",
"grpc.meta.deadline_type": "regular",
"grpc.meta.method_type": "unary",
"grpc.method": "UserCherryPick",
"grpc.request.deadline": "2023-11-15T08:39:40.277",
"grpc.request.fullMethod": "/gitaly.OperationService/UserCherryPick",
We request to expose or forward the error "cherry pick: there are conflicting files" to the UI asking the user to manually cherry-pick our side gitlab, similar to your message when a rebase cannot be resolved inside gitlab.
Zendesk Ticket : https://gitlab.zendesk.com/agent/tickets/471201