Terraform module Registry throws a 500 when using Deploy Token as authentication

Original comment: #333259 (comment 673105433)

Bug descriptions

500 when using Deploy tokens

we have just found that the terraform module registry throws a 500 when trying to use a Deploy Token as authentication for consumption. We are aware that the documentation does not list Deploy Tokens as an option, but nevertheless this shouldn't cause a 500.

On sentry:

.../api/v4/packages/terraform/modules/v1/agroup/a-test/local/versions

NoMethodError
undefined method `authorizations_for_projects' for #<DeployToken:0xabc...>

on CI:

image

Proposal

We should either accept deploy tokens or make them fail with 403. Do which is simpler as part of this issue and open a new issue for deploy token support if needed.

Logs don't show up in production_json.log

We have also found that the exception is not showing on production_json.log, only on production.log (which basically makes it invisible to our automatic elasticsearch log system), but we are not sure yet if this is our setup issue or an actual upstream bug with the handling of the exception.

We see this on production.log, nothing on production_json.log

NoMethodError (undefined method `preferred_language' for #<Rack::Response:0xabc>):

lib/api/helpers.rb:69:in `current_user'
lib/gitlab/metrics/instrumentation.rb:160:in `block in current_user'
lib/gitlab/metrics/method_call.rb:27:in `measure'
lib/gitlab/metrics/instrumentation.rb:160:in `current_user'
lib/api/helpers.rb:490:in `handle_api_exception'
lib/gitlab/metrics/instrumentation.rb:160:in `block in handle_api_exception'
lib/gitlab/metrics/method_call.rb:27:in `measure'
lib/gitlab/metrics/instrumentation.rb:160:in `handle_api_exception'
lib/api/api.rb:115:in `block in <class:API>'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16: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:21:in `run'
lib/gitlab/metrics/rack_middleware.rb:16:in `call'
lib/gitlab/middleware/speedscope.rb:13:in `call'
lib/gitlab/request_profiler/middleware.rb:17: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/multipart.rb:172: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/handle_malformed_strings.rb:21:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
lib/gitlab/middleware/request_context.rb:21:in `call'
config/initializers/fix_local_cache_middleware.rb:11:in `call'
lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:74:in `call'
lib/gitlab/middleware/release_env.rb:12:in `call'

Proposal

Make sure that the logs show up in the json log too

Edited by Viktor Nagy (GitLab)