Skip to content

Rethink spawn strategies #19904

@tjgq

Description

@tjgq

We've seen a lot of reported issues that, one way or another, reflect a lack of flexibility in the way we apply spawn strategies.

We believe it's time to rethink how spawn strategies are implemented and what the right API to choose among them should look like. In particular, it would be nice to:

  • Reimplement the disk/remote cache lookup as a strategy (instead of as part of the spawn runner)
  • Generalize dynamic execution to an arbitrary number of strategies (or combinations of strategies) to be tried in parallel
  • Generalize local fallback to an arbitrary number of strategies (or combinations of strategies) to be tried in series
  • Have a way to distinguish "permanent" from "transient" failures (permanent are not worth retrying with a different strategy, transient might be)
  • Make it possible to toggle strategies along dimensions other than mnemonic (e.g. based on the execution platform, selected toolchain, or estimated resource consumption)

This would make it possible to provide solutions to the following issues:

In particular, #11432 references https://docs.google.com/document/d/1U9HzdDmtRnm244CaRM6JV-q2408mbNODAMewcGjnnbM/edit#heading=h.5mcn15i0e1ch which contains many interesting ideas we should revisit in light of this set of requirements.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions