Skip to content

Set hail!=0.2.139 in requirements.txt to avoid array-literal contains memory regression - #845

Merged
mike-w-wilson merged 1 commit into
mainfrom
mw/pin_hail_below_0.2.139
Sep 11, 2026
Merged

mike-w-wilson merged 1 commit into
mainfrom
mw/pin_hail_below_0.2.139

Conversation

@mike-w-wilson

@mike-w-wilson mike-w-wilson commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Hail 0.2.139 leaks region memory when an array literal's .contains() is used inside a Table filter (e.g. filter_gencode_ht's hl.literal(feature).contains(...). In CI the 1 GB driver JVM runs out of heap during test_filter_to_cds, dies, and pytest hangs on the dead py4j connection until the job is cancelled. Set-based membership and Hail 0.2.138 are unaffected.

setup.py has excluded hail from install_requires since 2020 by matching the exact string hail, the edits to set up now get around the < version bit. We will revert to an unpinned version once the 139 bugs are fixed.

I chose to update requirements since the test suite will fail locally for anyone trying to run it on 0.2.139 as opposed to updating just the way git actions was installing hail.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are small, self-contained, and correctly prevent setup.py from ingesting the newly added comment/pinned Hail line while keeping Hail excluded from install_requires.

Pull request overview

This PR updates the development/test dependency set to avoid a known Hail 0.2.139 region-memory regression triggered by using array-literal .contains() inside hl.Table.filter, and adjusts packaging logic so setup.py continues to exclude Hail from install_requires even when the requirements entry includes a version specifier.

Changes:

  • Add an upper bound (hail<0.2.139) in requirements.txt with context on the regression and removal criteria.
  • Update setup.py requirements parsing to (a) skip blank/comment lines and (b) exclude hail by package name rather than exact-line match, keeping Hail out of install_requires even when pinned.
File summaries
File Description
setup.py Improves requirements parsing so comment/blank lines don’t break install_requires, and excludes Hail by name even when version-spec’d.
requirements.txt Pins Hail below 0.2.139 and documents the rationale/exit criteria for the temporary constraint.
Review details
  • Files reviewed: 1/2 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Hail 0.2.139 leaks region memory when an array literal's .contains() is
used inside a Table filter (e.g. filter_gencode_ht's
hl.literal(feature).contains(...). In CI the 1 GB driver JVM runs out of
heap during test_filter_to_cds, dies, and pytest hangs on the dead py4j
connection until the job is cancelled. Set-based membership and Hail
0.2.138 are unaffected. The exclusion lifts itself on 0.2.140.

setup.py has excluded hail from install_requires since 2020 by matching
the exact string hail; match on the package name instead, and skip
blank and comment lines, so the versioned requirements.txt line stays
excluded.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
EOF
)
@mike-w-wilson
mike-w-wilson force-pushed the mw/pin_hail_below_0.2.139 branch from efcf091 to e5a90e9 Compare September 10, 2026 18:19
@mike-w-wilson mike-w-wilson changed the title Pin hail<0.2.139 to avoid array-literal contains memory regression Set hail!=0.2.139 in requirements.txt to avoid array-literal contains memory regression Sep 10, 2026
@mike-w-wilson
mike-w-wilson merged commit d0c014b into main Sep 11, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants