Skip to content

Retry CI trace archive if left in incomplete state

What does this MR do?

This aims to remove fix some of the cases that could allow Ci::Builds to have both a live trace & and archived trace.

What is changing?

The code change here allows an archived_trace that is incomplete to be removed, and rebuilt in a single run of Ci::Trace#unsafe_archive!. Previously, we would remove the archived_trace and raise an AlreadyArchivedError without rebuilding the archive file.

Scenario Previous New
trace_artifact exists, with file trace chunks removed, AlreadyArchivedError raised Same as previous
trace_artifact exists, no file trace_artifact destroyed, AlreadyArchivedError raised trace_artifact destroyed, archive process runs
trace_artifact does not exist archive process runs Same as previous

In what scenarios does this help?

Ci::ArchiveTracesCronWorker

  1. Archive fails
  2. The worker will retry.
  3. Ci::ArchiveTraceService will be able to remove the old archive and attempt to create a new one in the same run.

Previous behaviour:

  1. Archive fails
  2. The worker will retry.
  3. Ci::ArchiveTraceService will remove the archive, and raise AlreadyArchivedError which the Ci::ArchiveTraceService treats as success.
  4. Will not be retried until Ci::ArchiveTracesCronWorker runs again (every 17 mins)

Screenshots or Screencasts (strongly suggested)

How to setup and validate locally (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #296616 (closed)

Edited by Sean Arnold

Merge request reports