You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When upgrading the dependency in score_communication to 0.0.12 we get a persistent lockfile error that is unrecoverable in our downstream module.
The investigation points to the release 0.0.12 being done with an outdated lockfile.
Analysis results
Error:
ERROR: /home/q536648/.cache/bazel/_bazel_q536648/e5ca210826d4a557c2389a5d3cc48128/external/rules_rust+/crate_universe/private/generate_utils.bzl:428:13: Traceback (most recent call last):
File "/home/q536648/.cache/bazel/_bazel_q536648/e5ca210826d4a557c2389a5d3cc48128/external/rules_rust+/crate_universe/extensions.bzl", line 1167, column 37, in _crate_impl
_generate_hub_and_spokes(
File "/home/q536648/.cache/bazel/_bazel_q536648/e5ca210826d4a557c2389a5d3cc48128/external/rules_rust+/crate_universe/extensions.bzl", line 628, column 44, in _generate_hub_and_spokes
repin = not lockfile or determine_repin(
File "/home/q536648/.cache/bazel/_bazel_q536648/e5ca210826d4a557c2389a5d3cc48128/external/rules_rust+/crate_universe/private/generate_utils.bzl", line 428, column 13, in determine_repin
fail(msg)
Error in fail: Error: Digests do not match: Current Digest("b3987846afd9d77626eb292c5e15da1921775911b0ea5577deb6ddba25dec68f") != Expected Digest("9d4b34c145951528c4194bf942c5c847cc040e74234d234eaa9ab404cf2fde08")
Solution
Potential solution is to update the lockfile and create a new release.
Error Occurrence Rate
None
How to reproduce
In a downstream module update to 0.0.12.
Then update the lockfile with bazel mod deps --lockfile_mode=update
Error is emitted.
⚠️bazel clean --expunge is important to ensure clean starting point. It's possible to workaround the issue locally, but it's not a solution.
Error message:
ERROR: Analysis of target '//score/kvs/rust_kvs_tool:kvs_tool' failed; build aborted: MODULE.bazel.lock is no longer up-to-date because: One or more files the extension '@@rules_rust+//crate_universe:extensions.bzl%crate' is using have changed. Please run `bazel mod deps --lockfile_mode=update` to update your lockfile.
This is the outcome of #69 . So the problem is that when we use these modules from different one, the hash digests differ because some labels change from @@// to score_creates+//.
Since we will probably update to the new rules_rust removing lockfiles from spec will not help and will make the other consumers fail if they use 0.71+ (@ian-harmon-traton ).
Proposal: Use CARGO_BAZEL_REPIN=true bazel mod deps --lockfile_mode=update to regenerate lockfile within your modules until updates will not be done. @arkjedrz@LittleHuba ?
I reverted the above; this works but requires every later command to use the specified env var so let me look into it more what we can do ;(
@pawelrutkaq
What You proposed is what I meant by "It's possible to workaround the issue locally, but it's not a solution.". For CI it remains broken.
Here's a new PR for Persistency after those commands: eclipse-score/persistency#465
Okey, above description was how to solve it localy only due to the fact that external modules are cached in seperate cache and expunge does not clear them (depends on your cache settings too for bazel). I have updated score_creates and now it works in CI too. When we use rules_ruse 0.71 we can see if the problem is fixed, but generallt looks like edge case issue with crates patching
Activity
arkjedrz commentedon Sep 9, 2026
List of failing PRs:
Reproduction steps for
persistency:bazel clean --expungeis important to ensure clean starting point. It's possible to workaround the issue locally, but it's not a solution.Error message:
pawelrutkaq commentedon Oct 5, 2026
This is the outcome of #69 . So the problem is that when we use these modules from different one, the hash digests differ because some labels change from @@// to score_creates+//.
Since we will probably update to the new
rules_rustremoving lockfiles from spec will not help and will make the other consumers fail if they use 0.71+ (@ian-harmon-traton ).I reverted the above; this works but requires every later command to use the specified env var so let me look into it more what we can do ;(
pawelrutkaq commentedon Oct 5, 2026
Okay, retested again, and the correct procedure when changing
score_crateswould be:bazel clean --expunge(may be needed)CARGO_BAZEL_REPIN=true bazel mod deps --lockfile_mode=updatebazel mod deps --lockfile_mode=updateCan You try that @arkjedrz @LittleHuba ?
arkjedrz commentedon Oct 5, 2026
@pawelrutkaq
What You proposed is what I meant by "It's possible to workaround the issue locally, but it's not a solution.". For CI it remains broken.
Here's a new PR for Persistency after those commands: eclipse-score/persistency#465
pawelrutkaq commentedon Oct 6, 2026
#78
pawelrutkaq commentedon Oct 6, 2026
Okey, above description was how to solve it localy only due to the fact that external modules are cached in seperate cache and
expungedoes not clear them (depends on your cache settings too for bazel). I have updated score_creates and now it works in CI too. When we use rules_ruse 0.71 we can see if the problem is fixed, but generallt looks like edge case issue with crates patchingpawelrutkaq commentedon Oct 8, 2026
eclipse-score/baselibs#532