Closed Bug 1460943 Opened 8 years ago Closed 8 years ago

Allow expiration of artifacts to be updated

Categories

(Taskcluster :: Services, enhancement)

enhancement
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: gps, Unassigned)

References

(Blocks 1 open bug)

Details

Artifacts are commonly used as a cache to avoid repeating previous work. For example, in bug 1460777, I'm implementing "fetch" tasks that download externally-hosted content and re-expose it as task artifacts so we eliminate a run-time dependency on 3rd party services. For scenarios like these, we would very much like some artifacts to be persisted for as long as they are used. The way it works today, artifacts have an expiration time. When an artifact being used as a cached object expires, it must be rebuilt. Without a store that is guaranteed to hold on to data for all of time, there's no guarantee that an artifact can be rematerialized in the future after it has expired. In other words, even if Firefox builds and CI are deterministic, we may not be able to reconstruct all the inputs required to rebuild a specific Firefox revision N years from now. One solution to this is to provide a content store that never expires its data. Tooltool is arguably one such store. Another potential solution to this problem is allowing the expiration of artifacts to be extended. We could, for example, perpetually renew the expiration of certain artifacts - say all artifacts that represent content retrieved from 3rd party services we can't rely on being available for eternity. Another benefit of extending artifact expiration is it allows us to be much more aggressive about limiting the default artifact lifespan. *If* tasks are deterministic and reproducible over time, task artifacts are conceptually a cache and can be repopulated whenever. This means we can make the default artifact retention much lower - say 30 days - and have tasks that use old artifacts continuously bump their expiration so they never disappear. Frequently used artifacts will linger around. Unused artifacts will expire and not consume space.
I think that the approximation to this is to set an artifact expiration impossibly futuristic, e.g., 01-01-3000. As long as we don't produce a massive quantity of such perma-artifacts, that's a great solution. If that's the set of "fetched" artifacts then it is certainly not going to grow too quickly.
An impossibly futuristic expiration sounds like a reasonable solution to this problem! Do we need any scopes to set such an expiration? Should we have scopes to control this to mitigate potential for abuse? Please feel free to close this out WORKSFORME or some such.
No scopes required :)
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WORKSFORME
Chaining this up so the discussion can be more discoverable.
Component: Queue → Services
You need to log in before you can comment on or make changes to this bug.