ArgumentError: 3:empty CommitMessage.

Sentry error: https://new-sentry.gitlab.net/organizations/gitlab/issues/1649590

GRPC::InvalidArgument: 3:empty CommitMessage.
  from grpc/generic/active_call.rb:29:in `check_status'
  from grpc/generic/active_call.rb:189:in `attach_status_results_and_complete_call'
  from grpc/generic/active_call.rb:424:in `client_streamer'
  from grpc/generic/client_stub.rb:257:in `block in client_streamer'
  from grpc/generic/interceptors.rb:170:in `intercept!'
  from grpc/generic/client_stub.rb:256:in `client_streamer'
  from grpc/generic/service.rb:176:in `block (3 levels) in rpc_stub_class'
  from lib/gitlab/gitaly_client.rb:292:in `execute'
  from lib/gitlab/gitaly_client/call.rb:19:in `block in call'
  from lib/gitlab/gitaly_client/call.rb:61:in `recording_request'
  from lib/gitlab/gitaly_client/call.rb:18:in `call'
  from lib/gitlab/gitaly_client.rb:281:in `call'
  from lib/gitlab/gitaly_client/with_feature_flag_actors.rb:31:in `block in gitaly_client_call'
  from lib/gitlab/gitaly_client.rb:650:in `with_feature_flag_actors'
  from lib/gitlab/gitaly_client/with_feature_flag_actors.rb:25:in `gitaly_client_call'
  from lib/gitlab/gitaly_client/operation_service.rb:546:in `user_commit_files'
  from lib/gitlab/git/repository.rb:1028:in `block in commit_files'
  from lib/gitlab/git/wraps_gitaly_errors.rb:7:in `wrapped_gitaly_errors'
  from lib/gitlab/git/repository.rb:1027:in `commit_files'
  from app/models/repository.rb:916:in `block in commit_files'
  from app/models/repository.rb:891:in `with_cache_hooks'
  from app/models/repository.rb:916:in `commit_files'
  from app/models/repository.rb:846:in `create_file'
  from app/services/files/create_service.rb:22:in `create_transformed_commit'
  from app/services/files/create_service.rb:10:in `create_commit!'
  from app/services/commits/create_service.rb:31:in `execute'
  from app/controllers/concerns/creates_commit.rb:33:in `create_commit'
  from app/controllers/projects/blob_controller.rb:61:in `create'

Problem

It's possible to provide an empty commit message to blob creation controller.

Solution

Add a validation to return an error instead of an exception.

Edited by 🤖 GitLab Bot 🤖