54f8eb54 breaks commenting on commits with sha-1 starting with a number
This happens in gitlab-ee 11.4.8
It seems 54f8eb54 has broken comment creation on commits for when the SHA-1 of the commit starts with a number that's bigger than the maximum supported value of noteable_id
. Probably because noteable_id gets set to target_id which is the SHA-1 of the commit.
How to reproduce:
Find a commit that starts with a big enough number, for example: 9858698693b3da25516bfc2f3f0fcd1ec1b1ee38
When trying to create the comment the attributes of the created note object look as follows:
NOTE: noteable_type: "Commit" | noteable_id: 9858698693 | commit_id: "9858698693b3da25516bfc2f3f0fcd1ec1b1ee38"
(If the SHA-1 does not start with a number, the noteable_id becomes 0)
Which leads to the following error and an unhelpful Your comment could not be submitted! Please check your network connection and try again.
message when it's saved.
RangeError (9858698693 is out of range for ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer with limit 4):
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:77:in `block in write_using_load_balancer'
ee/lib/gitlab/database/load_balancing/load_balancer.rb:66:in `block in read_write'
ee/lib/gitlab/database/load_balancing/load_balancer.rb:116:in `retry_with_backoff'
ee/lib/gitlab/database/load_balancing/load_balancer.rb:65:in `read_write'
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `write_using_load_balancer'
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:45:in `block (2 levels) in <class:ConnectionProxy>'
config/initializers/active_record_locking.rb:11:in `_create_record'
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:77:in `block in write_using_load_balancer'
ee/lib/gitlab/database/load_balancing/load_balancer.rb:66:in `block in read_write'
ee/lib/gitlab/database/load_balancing/load_balancer.rb:116:in `retry_with_backoff'
ee/lib/gitlab/database/load_balancing/load_balancer.rb:65:in `read_write'
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:71:in `write_using_load_balancer'
ee/lib/gitlab/database/load_balancing/connection_proxy.rb:45:in `block (2 levels) in <class:ConnectionProxy>'
app/services/notes/create_service.rb:39:in `execute'
app/controllers/concerns/notes_actions.rb:45:in `create'
lib/gitlab/i18n.rb:53:in `with_locale'
lib/gitlab/i18n.rb:59:in `with_user_locale'
app/controllers/application_controller.rb:425:in `set_locale'
lib/gitlab/middleware/multipart.rb:101:in `call'
lib/gitlab/request_profiler/middleware.rb:14:in `call'
ee/lib/gitlab/database/load_balancing/rack_middleware.rb:37:in `call'
ee/lib/gitlab/jira/middleware.rb:15:in `call'
lib/gitlab/middleware/go.rb:17:in `call'
lib/gitlab/etag_caching/middleware.rb:11:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:22:in `call'
lib/gitlab/metrics/rack_middleware.rb:15:in `block in call'
lib/gitlab/metrics/transaction.rb:53:in `run'
lib/gitlab/metrics/rack_middleware.rb:15:in `call'
lib/gitlab/middleware/read_only/controller.rb:40:in `call'
lib/gitlab/middleware/read_only.rb:16:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/request_context.rb:18:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:27:in `call'
lib/gitlab/middleware/release_env.rb:10:in `call'