Repository navigation
Closed
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
This is the workflow I caught red-handed: https://github.com/andreasabel/hasktorch/actions/runs/6536754694/job/17749144021
- Version:
actions/cache@v3SHA:704facf57e6136b1bc63b828d79edcd491f0ee84 https://github.com/andreasabel/hasktorch/actions/runs/6536754694/job/17749144021 - Cache restored from
restore-keyhttps://github.com/andreasabel/hasktorch/actions/runs/6536754694/job/17749144021#step:7:4Note that this key is not the primary key, which has an additionalRun actions/cache/restore@v3 with: path: ~/.cabal/store key: macOS-cabal-3.6.2.0-ghc-9.2.8-plan-813f23bfbcb4c800c8178d743c3df6e501ec38580a651c180dcd99b0abc9319d restore-keys: macOS-cabal-3.6.2.0-ghc-9.2.8- ... Cache restored from key: macOS-cabal-3.6.2.0-ghc-9.2.8-813f23bfbcb4c800c8178d743c3df6e501ec38580a651c180dcd99b0abc9319d-planbefore the SHA. - The step "Cache dependencies" (
if: !steps.cache.outputs.cache-hit) is skipped", it's code is https://github.com/andreasabel/hasktorch/actions/runs/6536754694/workflow- name: Cache dependencies if: ${{ !steps.cache.outputs.cache-hit }} uses: actions/cache/save@v3 with: path: ~/.cabal/store key: ${{ steps.cache.outputs.cache-primary-key }}
According to the docs, outputs.cache-hit should not be true if the cache was restored with a fallback key.
This is stressed here:
Lines 63 to 65 in 704facf
| * `cache-hit` - A boolean value to indicate an exact match was found for the key. | |
| > **Note** `cache-hit` will only be set to `true` when a cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`. |
And again for the
restore action:Lines 15 to 22 in 704facf
| ### Outputs | |
| * `cache-hit` - A boolean value to indicate an exact match was found for the key. | |
| * `cache-primary-key` - Cache primary key passed in the input to use in subsequent steps of the workflow. | |
| * `cache-matched-key` - Key of the cache that was restored, it could either be the primary key on cache-hit or a partial/complete match of one of the restore keys. | |
| > **Note** | |
| `cache-hit` will be set to `true` only when cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`. |
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Activity
andreasabel commentedon Oct 16, 2023
Update: Debug printing shows that actually, it is not that
cache-hitistrue:https://github.com/andreasabel/hasktorch/actions/runs/6537791407/job/17757232711#step:7:8229
However,
! cache-hitis neverthelessfalse: https://github.com/andreasabel/hasktorch/actions/runs/6537791407/job/17757232711#step:9:2So
cache-hitisn't a proper boolean, it is aString, and negation isn't boolean negation, but something abstruse.π€£
When have type systems be invented? 1970s? Earlier than that?
And when is now? 21th century? I actually doubt it... π’
[-]`cache-hit` is `true` even though `restore-keys` was used (non-exact key match)[/-][+]`!cache-hit` is `false` when `cache-hit` is `false`[/+]andreasabel commentedon Oct 16, 2023
This must be a regression, because I have used the pattern
!steps.cache.outputs.cache-hitin the past and it worked as expected.Here is evidence where it works:
https://github.com/andreasabel/bnfc3/actions/runs/6539942580/job/17758962129#step:3:25
What happens here is that a cache is not found, and thus the following download step is executed. This download step is guarded by
!steps.CACHE_STEP_ID.outputs.cache-hit, as can be seen here:https://github.com/andreasabel/fix-whitespace-action/blob/e60f45943b1dfbd36fbc0412a4783945de29102b/action.yml#L47-L55
I am totally confused now...
Re #6746: bump CI to GHC 9.8.1; treat `cache-hit` as string
README: clarify that `cache-hit` returns a string and not a boolean
CI: fix malfunctioning `!cache-hit`
Merge macOS and windows workflows
Merge macOS and windows workflows
jenseng commentedon Oct 25, 2023
I'm not sure how this would have worked before, unless
cache-hitwas an empty string. Unfortunately your workflow run where it worked correctly now gives a 404, so we can't see the details any more.Action outputs are always strings, see the docs here. So this is a limitation of GitHub Actions generally, and isn't specific to this one. That said, I do agree that the docs for this action should be clarified around this π
andreasabel commentedon Oct 25, 2023
Yes, I looked at the source code and there wasn't a recent regression. A clarification proposal of the docs has been submitted here:
cache-hitreturns a string and not a booleanΒ #1263README: clarify that `cache-hit` returns a string and not a boolean
Re agda#6746: bump CI to GHC 9.8.1; treat `cache-hit` as string
github-actions commentedon May 13, 2024
This issue is stale because it has been open for 200 days with no activity. Leave a comment to avoid closing this issue in 5 days.
andreasabel commentedon May 13, 2024
I'd be happy to get my PR merged.
joshmgross commentedon Oct 8, 2024
Clarified this behavior in #1467