Skip to content

Remove bloom prefilter application in cudf-polars streaming - #23523

Merged
rapids-bot[bot] merged 1 commit into
NVIDIA:mainfrom
wence-:wence/fea/remove-bloom-prefilter
Aug 6, 2026
Merged

Remove bloom prefilter application in cudf-polars streaming#23523
rapids-bot[bot] merged 1 commit into
NVIDIA:mainfrom
wence-:wence/fea/remove-bloom-prefilter

Conversation

@wence-

@wence- wence- commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Description

If join filter pushdown is applied, additionally applying a bloom filter does additional work for no benefit. Bloom filters are also only on immediate local inputs to a join.

In an upcoming change we will change the join filter pushdown to be a hint that can at runtime decide how to apply itself. To prepare for that, remove the special case code that just applies bloom filters: it will be subsumed by the upcoming changes.

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@wence-
wence- requested a review from a team as a code owner August 4, 2026 08:49
@wence-
wence- requested a review from TomAugspurger August 4, 2026 08:49
@github-actions github-actions Bot added Python Affects Python cuDF API. cudf-polars Issues specific to cudf-polars labels Aug 4, 2026
@GPUtester GPUtester moved this to In Progress in cuDF Python Aug 4, 2026
We are going to use the new filterpushdown hint nodes to handle this more coherently.
@wence-
wence- force-pushed the wence/fea/remove-bloom-prefilter branch from 72a96a8 to 4dff822 Compare August 4, 2026 08:55
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 99e85c69-aadb-48af-93ac-4a7ad633d3d9

📥 Commits

Reviewing files that changed from the base of the PR and between 777fcd5 and 4dff822.

📒 Files selected for processing (7)
  • python/cudf_polars/cudf_polars/streaming/actor_graph/collectives/common.py
  • python/cudf_polars/cudf_polars/streaming/actor_graph/join.py
  • python/cudf_polars/cudf_polars/streaming/actor_graph/utils.py
  • python/cudf_polars/cudf_polars/utils/config.py
  • python/cudf_polars/tests/streaming/test_join.py
  • python/cudf_polars/tests/streaming/test_tracing.py
  • python/cudf_polars/tests/test_config.py
💤 Files with no reviewable changes (4)
  • python/cudf_polars/cudf_polars/streaming/actor_graph/utils.py
  • python/cudf_polars/tests/streaming/test_tracing.py
  • python/cudf_polars/cudf_polars/utils/config.py
  • python/cudf_polars/tests/test_config.py

📝 Walkthrough

Summary by CodeRabbit

  • Removed Features

    • Removed the dynamic join bloom-filter prefiltering step.
    • Removed configuration options for join prefilter thresholds, key limits, and tracing.
    • Dynamic joins now use three collective operations for allgather and left/right shuffles.
  • Behavior Changes

    • Shuffle joins now proceed directly through both shuffles and chunkwise joining.
    • Simplified dynamic-planning validation and configuration behavior.
  • Tests

    • Removed obsolete prefilter and tracing coverage.
    • Added coverage for join filter pushdown configuration and validation.

Walkthrough

Dynamic-planning joins no longer allocate or execute Bloom-filter prefiltering. Related configuration, tracing metadata propagation, and tests were removed or updated.

Changes

Dynamic join prefilter removal

Layer / File(s) Summary
Simplify dynamic shuffle joins
python/cudf_polars/cudf_polars/streaming/actor_graph/collectives/common.py, python/cudf_polars/cudf_polars/streaming/actor_graph/join.py, python/cudf_polars/tests/streaming/test_join.py
Shuffle joins now use two shuffle channels and three collective IDs. Prefilter decisions, filter tasks, and related parameters were removed.
Remove prefilter configuration
python/cudf_polars/cudf_polars/utils/config.py, python/cudf_polars/tests/test_config.py
Dynamic-planning options no longer expose or validate join-prefilter settings. Configuration tests now cover join-filter-pushdown settings.
Update tracing and test coverage
python/cudf_polars/cudf_polars/streaming/actor_graph/utils.py
Actor shutdown logging no longer copies tracer.extra metadata into the record.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

  • rapidsai/cudf#22996: Introduces related dynamic join-prefilter functionality that this PR removes.

Suggested labels: improvement, non-breaking

Suggested reviewers: tomaugspurger, vyasr, matt711

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the removal of bloom prefilter application from cudf-polars streaming.
Description check ✅ Passed The description explains why bloom prefilter application is removed and how the change supports future join filter pushdown behavior.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@wence- wence- added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Aug 4, 2026
sample_chunk_count
The maximum number of chunks to sample before making
dynamic-planning decisions. Default is 2.
join_prefilter_threshold

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.

I think this is fine, but just flagging that this configuration change is breaking (at least currently, perhaps the subsequent PR will restore this though I'd guess it'll use different names).

@wence-

wence- commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit 89de7b4 into NVIDIA:main Aug 6, 2026
113 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in cuDF Python Aug 6, 2026
@wence-
wence- deleted the wence/fea/remove-bloom-prefilter branch August 7, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cudf-polars Issues specific to cudf-polars improvement Improvement / enhancement to an existing function non-breaking Non-breaking change Python Affects Python cuDF API.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants