Skip to content

[8.19] Fix Moon webpack dependency cache invalidation (#258940)#259475

Merged
kibanamachine merged 5 commits intoelastic:8.19from
kibanamachine:backport/8.19/pr-258940
Mar 27, 2026
Merged

[8.19] Fix Moon webpack dependency cache invalidation (#258940)#259475
kibanamachine merged 5 commits intoelastic:8.19from
kibanamachine:backport/8.19/pr-258940

Conversation

@kibanamachine
Copy link
Copy Markdown
Contributor

@kibanamachine kibanamachine commented Mar 25, 2026

@kibanamachine kibanamachine added the backport This PR is a backport of another PR label Mar 25, 2026
@kibanamachine kibanamachine enabled auto-merge (squash) March 25, 2026 00:05
tylersmalley and others added 4 commits March 27, 2026 11:26
Moon cached webpack-built shared dependency bundles using only local source files and webpack config as inputs. When a dependency like `@elastic/eui` changed after bootstrap, Moon did not see any relevant
input change for `@kbn/ui-shared-deps-npm`, so it could restore a stale cached bundle. That left the installed dependency tree newer than the built artifact, which is why code present under
`node_modules/@elastic/eui` was missing from the emitted shared deps bundle.

This change makes Moon invalidate those webpack bundle caches when, and only when, the actual resolved dependency graph for the bundle changes. Instead of keying off the entire workspace yarn.lock, it adds an exact
transitive dependency fingerprint for each affected webpack-built package. That gives correct rebuilds for updated dependencies, including transitive ones, without broadly uncaching on unrelated lockfile churn.

---------

Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
(cherry picked from commit 41b1f04)
…59640)

## Summary

Fixes `extract-version-dependencies` failing with `Unable to resolve
d3-color@1 - 2 from yarn.lock dependency graph` when Yarn merges
multiple lockfile descriptors (aliases) into a single block.

## Changes

- **`yarn_lock_v1.ts`**: Parse each comma-separated header descriptor
with correct scoped vs unscoped `@` splitting; register `PackageInfo`
per alias; merge `requestedVersions` for duplicate
`name@resolvedVersion` keys. In `focus` mode, include a block if any
alias matches.
- **`yarn_lock_v1.test.ts`**: Regression test for compound headers.
- **`yarn.lock`**: Refreshed merged descriptor lines (e.g. `d3-color` /
`@elastic/kibana-d3-color`, `ajv` / `@redocly/ajv`).
- **`version_dependencies.txt`**: Regenerated via
`extract-version-dependencies`.

## Testing

- `node scripts/jest src/dev/yarn/yarn_lock_v1.test.ts`
- `moon run @kbn/ui-shared-deps-npm:extract-version-dependencies`
- `node scripts/check_changes.ts`

Made with [Cursor](https://cursor.com)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
## Summary
Test clearing the moon cache before trying to store one for the job.
@tylersmalley tylersmalley force-pushed the backport/8.19/pr-258940 branch from 9adf7d3 to 05e87d3 Compare March 27, 2026 18:27
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
@kibanamachine kibanamachine merged commit 2b9040c into elastic:8.19 Mar 27, 2026
14 checks passed
@elasticmachine
Copy link
Copy Markdown
Contributor

💚 Build Succeeded

Metrics [docs]

✅ unchanged

History

cc @tylersmalley

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

Labels

backport This PR is a backport of another PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants