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:
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
