Skip to content

[infra] race condition in fuchsia upload of content hash #173137

@jtmcdole

Description

@jtmcdole

Background: Fuchsia and Android artifacts with content hashing require some extra work from scripts in the flutter repository. These do not have access to LUCI's "content_hash" variable. Fuchsia in particular handles the complete upload via build_fuchsia_artifacts.py

Problem: If two builds are in the merge queue with the same content hash; they can race to build and upload the fuchsia artifacts and tag them with the same content_hash:[a-f0-9]{40} tag. We tried to handle this here:

  already_exists = CheckCIPDPackageExists('flutter/fuchsia', content_tag)
  if already_exists:
    print('CIPD package flutter/fuchsia tag %s already exists!' % content_tag)
    # do not return; content hash can match multiple PRs (reverts, framework only)
  else:
    command.extend(['-tag', content_tag])

Instead we should upload the artifact and tag with the git_revision, and then check if the content_hash exists before tagging with a different call to RunCIPDCommandWithRetries

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work list

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions