Skip to content

Improving observability when marking packages as pending_destruction

What does this MR do and why?

Catching the error object and tracking it in the log system when marking packages as pending_destruction so that we know what is happening.

How to set up and validate locally

  1. Create a project and a package.
  2. raise StandardError in Packages::MarkPackageForDestructionService#execute to execute the rescue block.
  3. Hit Delete a project package API.
  4. A similar error should be logged in exceptions_json.log file:
{
  "severity":"ERROR",
  "time":"2023-02-20T19:22:06.434Z",
  "correlation_id":"01GSR4CJ4Z492JH6V7TH9Z0N0T",
  "exception.class":"StandardError",
  "exception.message":"StandardError",
  "exception.backtrace":[
     "app/services/packages/mark_package_for_destruction_service.rb:16:in `execute'",
     "lib/api/project_packages.rb:97:in `block (3 levels) in \u003cclass:ProjectPackages\u003e'",
     "lib/api/helpers.rb:49:in `destroy_conditionally!'",
     "lib/api/project_packages.rb:96:in `block (2 levels) in \u003cclass:ProjectPackages\u003e'",
     "ee/lib/gitlab/middleware/ip_restrictor.rb:14:in `block in call'",
     "ee/lib/gitlab/ip_address_state.rb:10:in `with'",
     "ee/lib/gitlab/middleware/ip_restrictor.rb:13:in `call'",
     "lib/api/api_guard.rb:222:in `call'",
     "lib/gitlab/middleware/memory_report.rb:13:in `call'",
     "lib/gitlab/middleware/speedscope.rb:13:in `call'",
     "lib/gitlab/query_limiting/middleware.rb:17:in `block in call'",
     "lib/gitlab/query_limiting/transaction.rb:45:in `run'",
     "lib/gitlab/query_limiting/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/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'",
     "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:37:in `call'",
     "lib/gitlab/middleware/static.rb:11:in `call'",
     "lib/gitlab/webpack/dev_server_middleware.rb:34:in `perform_request'",
     "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'"
  ],
  "user.username":"root",
  "tags.program":"web",
  "tags.locale":"en",
  "tags.feature_category":"package_registry",
  "tags.correlation_id":"01GSR4CJ4Z492JH6V7TH9Z0N0T",
  "extra.project_id":21,
  "extra.package_id":27,
  "extra.package_type":"npm"
}

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #354758 (closed)

Edited by Moaz Khalifa

Merge request reports