Skip to content

release: 1.7.12 - #56

Merged
AndrewSillifant merged 2 commits into
mainfrom
release/1.7.12
Oct 24, 2026
Merged

AndrewSillifant merged 2 commits into
mainfrom
release/1.7.12

Conversation

@AndrewSillifant

Copy link
Copy Markdown
Collaborator

Summary

1.7.12 adds config keys that set each Spark executor's scratch PVC. Before this, every job's scratch size was fixed by its built-in profile, so a job that outgrew its PVC could only fail. On a scale-20 AML continuous run, the scorer's 50Gi filled during the coverage aggregation's spill ("No space left on device" on both executors, 4 task failures, 3 app attempts) and the run went unscored.

Added (see CHANGELOG)

  • platform.compute.spark.executor_scratch sizes every Spark job's executors, including the scorer and time-travel reads.
  • bronze_executor_scratch, silver_executor_scratch and gold_executor_scratch size the stage's job in the run's mode, and win over the global key. A continuous run's bronze-verify preflight takes only the global key, the same rule as bronze_executors.
  • A set size is exact: whole Gi, not scaled by cores, scale or executor count.
  • One resolver (executor_scratch_size) feeds the manifest, the capacity check and scratch preflight, config_snapshot.scratch.size_per_job and the perf fingerprint, so runs with different scratch sizes do not compare as the same configuration.
  • Setting a size turns platform.storage.scratch.enabled on when it is unset. An explicit enabled: false with a size is refused by commands that change data, and teardown and read commands note it.
  • A size that is not whole Gi is refused by commands that change data and dropped with a note by teardown and read commands, the same as the executor memory keys.

A config that sets none of these keys requests the same PVCs as before, so results do not move.

Verification

  • Unit suite: 4094 passed, including 13 new tests in tests/test_executor_scratch.py. The new tests cannot be collected without the change.
  • ruff, ruff format, mypy, prose guard, and the generated docs check are clean (docs/configuration.md regenerated).
  • Release gate from a clean checkout: 14 of 15 pass (version, changelog, prose, examples, ruff, format, mypy, gitleaks tree and history, cargo fmt/clippy/test, package-guard). pre-push-hook is SKIP because the throwaway checkout has no local hook.
  • Spark tier not run: no file under src/lakebench/spark/scripts/ changed.
  • Not yet verified on a live cluster.

Every Spark job's scratch PVC was its built-in profile's size, with no key
to raise it: the AML scorer's 50Gi filled at scale 20 in the coverage
aggregation's spill and the run went unscored.

platform.compute.spark.executor_scratch sizes every job's executors, and
bronze_, silver_ and gold_executor_scratch size the stage's job in the
run's mode. A set size is exact. One resolver feeds the manifest, the
capacity check, config_snapshot.scratch.size_per_job and the perf
fingerprint. Setting a size turns scratch on when enabled is unset; an
explicit enabled: false with a size is refused by commands that change
data. A config that sets no size requests the same PVCs as before.
Version bump and CHANGELOG for the executor scratch size keys.
@AndrewSillifant
AndrewSillifant merged commit ab13f3b into main Oct 24, 2026
15 checks passed
@AndrewSillifant
AndrewSillifant deleted the release/1.7.12 branch October 24, 2026 02:03
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.

1 participant