Skip to content

Clarify artifact storage troubleshooting

What does this MR do?

Firstly, the smaller change that replaces the "from disk" wording: This caused confusion because "from disk" sounds like "local storage" – but this works with object storage just as well.


The bigger change is the recalculate task:

  • bin/rake is not how we generally refer to Rake tasks in the user-facing docs
  • The file.csv parameter wasn't explained. In the corresponding issue and via experimentation I found out:
    • This file is required
    • It has to be hosted on a remote server
    • It needs to follow a very specific format

Here's my experiments:

  • Calling the task exactly as documented (except for the bin/rake thing), the cannot interpret as DNS name seems to prove what I saw on the issue: This file needs to be hosted somewhere.

    root@omnibus-instance:~# gitlab-rake gitlab:refresh_project_statistics_build_artifacts_size[file.csv]
    rake aborted!
    ArgumentError: Failed to open TCP connection to :80 (cannot interpret as DNS name: nil)
    /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/refresh_project_statistics_build_artifacts_size.rake:15:in `block (2 levels) in <top (required)>'
    /opt/gitlab/embedded/bin/bundle:23:in `load'
    /opt/gitlab/embedded/bin/bundle:23:in `<main>'
    
    Caused by:
    ArgumentError: cannot interpret as DNS name: nil
    /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/refresh_project_statistics_build_artifacts_size.rake:15:in `block (2 levels) in <top (required)>'
    /opt/gitlab/embedded/bin/bundle:23:in `load'
    /opt/gitlab/embedded/bin/bundle:23:in `<main>'
    Tasks: TOP => gitlab:refresh_project_statistics_build_artifacts_size
    (See full trace by running task with --trace)
  • Calling the task with the file hosted somewhere, with the correct format – i.e. the PROJECT_ID header present. I first thought that maybe the header was not needed in the final version anymore and now interpreted as a project ID instead, leading to the "missing projects: 1".

    root@omnibus-instance:~# gitlab-rake gitlab:refresh_project_statistics_build_artifacts_size[https://manuelgrabowski.de/bla.csv]
    Loaded 3 project ids to import
    2/3 (missing projects: 1)
    Done.
  • Calling the task with the file hosted somewhere, with an incorrect format – i.e. the PROJECT_ID header not present. As it turns out, the "missing projects: 1" from the earlier test was due a trailing empty newline. The header is very much required.

    root@omnibus-instance:~# gitlab-rake gitlab:refresh_project_statistics_build_artifacts_size[https://manuelgrabowski.de/bla.csv]
    Loaded 2 project ids to import
    rake aborted!
    NoMethodError: undefined method `red' for #<String:0x00007fa72643cf68>
    /opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/refresh_project_statistics_build_artifacts_size.rake:40:in `block (2 levels) in <top (required)>'
    /opt/gitlab/embedded/bin/bundle:23:in `load'
    /opt/gitlab/embedded/bin/bundle:23:in `<main>'
    Tasks: TOP => gitlab:refresh_project_statistics_build_artifacts_size
    (See full trace by running task with --trace)

Related issues

Author's checklist

If you are a GitLab team member and only adding documentation, do not add any of the following labels:

  • ~"frontend"
  • ~"backend"
  • ~"type::bug"
  • ~"database"

These labels cause the MR to be added to code verification QA issues.

Reviewer's checklist

Documentation-related MRs should be reviewed by a Technical Writer for a non-blocking review, based on Documentation Guidelines and the Style Guide.

If you aren't sure which tech writer to ask, use roulette or ask in the #docs Slack channel.

  • If the content requires it, ensure the information is reviewed by a subject matter expert.
  • Technical writer review items:
    • Ensure docs metadata is present and up-to-date.
    • Ensure the appropriate labels are added to this MR.
    • Ensure a release milestone is set.
    • If relevant to this MR, ensure content topic type principles are in use, including:
      • The headings should be something you'd do a Google search for. Instead of Default behavior, say something like Default behavior when you close an issue.
      • The headings (other than the page title) should be active. Instead of Configuring GDK, say something like Configure GDK.
      • Any task steps should be written as a numbered list.
      • If the content still needs to be edited for topic types, you can create a follow-up issue with the docs-technical-debt label.
  • Review by assigned maintainer, who can always request/require the reviews above. Maintainer's review can occur before or after a technical writer review.

Merge request reports