RWX is the only CI/CD platform that has intelligent, automatic caching. Specify a filter, and RWX takes care of the rest. Other platforms will spend lots of time and compute running redundant tasks – the same commands, on the same files, as has previously been executed.
With a recent change, RWX caches even more effectively by preventing cache races.
Cache Races
Previously, it was possible for two tasks with the same cache key to execute at the same time.
- Task 1 checks the cache, gets a cache miss, and starts executing.
- Task 2 checks the cache, gets a cache miss, and starts executing.
- Task 1 writes its result to the cache.
- Task 2 writes its result to the cache.
Preventing Races
Running into this race is especially common for engineering teams using a monorepo. With an embedded run per package in a monorepo, it's possible to have a very large number of redundant tasks.
In an effort to reduce compute, maximize cache hits, and make builds more reliable, RWX will now prevent cache races. When two tasks have the same cache key, the second task will wait for the first one to finish executing so that it can be a cache hit.
When this scenario occurs, you'll see a message in the UI:
This task has the same cache key as another in-progress task in this run. This task will start once that task finishes.
Demo
Related posts
Read more on updates and advice from the RWX engineering team