Skip to content

Conversation

@thelvis4
Copy link

The action key for AppIntentsMetadataProcessor is unstable because its _app_intents_stub_binary input is non-deterministic. This causes frequent remote cache misses, causing the action to run locally.

…mote cache and build execution

The action key for `AppIntentsMetadataProcessor` is unstable because its _app_intents_stub_binary input is non-deterministic. This causes frequent remote cache misses, causing the action to run locally.
@brentleyjones
Copy link
Collaborator

But is it's outputs deterministic? Because this more cares about the outputs. The AC for this being unstable just results in a new AC entry (which is small), but if the outputs are deterministic, it's worth caching them, right?

@thelvis4
Copy link
Author

But is it's outputs deterministic? Because this more cares about the outputs. The AC for this being unstable just results in a new AC entry (which is small), but if the outputs are deterministic, it's worth caching them, right?

Currently, the json outputs from AppIntentsMetadataProcessor are also non-deterministic because the key order is unstable. There's #2761 to sort the keys. If that lands, it might be fine to keep remote caching.

In our case, we also noticed that ld64 produces non-deterministic linked debug binaries even for consecutive builds on the same repo path and commit, due to an unstable memory layout for .swiftmodule entries. As a result, the action runs locally every time because it never gets a remote AC hit.

For context, we disabled remote caching also to rule out these unstable AC keys as a cause of some cache replication issues we were investigating. I suspect this isn't an issue for folks using a deterministic linker like lld or for those with different remote cache configurations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants