Skip to content

[SPARK-52409][SDP] Only use PipelineRunEventBuffer in tests #51352

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

sryza
Copy link
Contributor

@sryza sryza commented Jul 2, 2025

What changes were proposed in this pull request?

This PR inverts the relationship between event callbacks and PipelineRunEventBuffer.

Prior to this PR:

  • PipelineUpdateContext had a PipelineRunEventBuffer, that all events from the run were written to.
  • This PipelineRunEventBuffer contained an eventCallback val which the Connect backend used to forward events to the client
  • The only code that reads from the buffer is test code

After this PR:

  • PipelineUpdateContext has an eventCallback, which is invoked on all events.
  • The test harness constructs a PipelineRunEventBuffer and passes its addEvent method to the eventCallback

Why are the changes needed?

With the prior code, there was a risk of memory pressure from the event buffer for long-running pipelines.

Does this PR introduce any user-facing change?

No

How was this patch tested?

Existing tests

Was this patch authored or co-authored using generative AI tooling?

No

@sryza
Copy link
Contributor Author

sryza commented Jul 2, 2025

@jonmio – I'm not sure how to add you as a reviewer, but heads up about this PR.

Copy link
Contributor

@hvanhovell hvanhovell left a comment

Choose a reason for hiding this comment

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

LGTM

@sryza sryza closed this in 55bbe5a Jul 9, 2025
@sryza
Copy link
Contributor Author

sryza commented Jul 9, 2025

Merged to master

asl3 pushed a commit to asl3/spark that referenced this pull request Jul 14, 2025
### What changes were proposed in this pull request?

This PR inverts the relationship between event callbacks and `PipelineRunEventBuffer`.

Prior to this PR:
- `PipelineUpdateContext` had a `PipelineRunEventBuffer`, that all events from the run were written to.
- This `PipelineRunEventBuffer` contained an `eventCallback` val which the Connect backend used to forward events to the client
- The only code that reads from the buffer is test code

After this PR:
- `PipelineUpdateContext` has an `eventCallback`, which is invoked on all events.
- The test harness constructs a `PipelineRunEventBuffer` and passes its `addEvent` method to the `eventCallback`

### Why are the changes needed?

With the prior code, there was a risk of memory pressure from the event buffer for long-running pipelines.

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Existing tests

### Was this patch authored or co-authored using generative AI tooling?

No

This patch had conflicts when merged, resolved by
Committer: Sandy Ryza <sandy.ryza@databricks.com>

Closes apache#51352 from sryza/pipeline-run-event-buffer.

Lead-authored-by: Sandy Ryza <sandyryza@gmail.com>
Co-authored-by: Sandy Ryza <sandy.ryza@databricks.com>
Signed-off-by: Sandy Ryza <sandy.ryza@databricks.com>
ksbeyer pushed a commit to ksbeyer/spark that referenced this pull request Jul 14, 2025
### What changes were proposed in this pull request?

This PR inverts the relationship between event callbacks and `PipelineRunEventBuffer`.

Prior to this PR:
- `PipelineUpdateContext` had a `PipelineRunEventBuffer`, that all events from the run were written to.
- This `PipelineRunEventBuffer` contained an `eventCallback` val which the Connect backend used to forward events to the client
- The only code that reads from the buffer is test code

After this PR:
- `PipelineUpdateContext` has an `eventCallback`, which is invoked on all events.
- The test harness constructs a `PipelineRunEventBuffer` and passes its `addEvent` method to the `eventCallback`

### Why are the changes needed?

With the prior code, there was a risk of memory pressure from the event buffer for long-running pipelines.

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Existing tests

### Was this patch authored or co-authored using generative AI tooling?

No

This patch had conflicts when merged, resolved by
Committer: Sandy Ryza <sandy.ryza@databricks.com>

Closes apache#51352 from sryza/pipeline-run-event-buffer.

Lead-authored-by: Sandy Ryza <sandyryza@gmail.com>
Co-authored-by: Sandy Ryza <sandy.ryza@databricks.com>
Signed-off-by: Sandy Ryza <sandy.ryza@databricks.com>
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.

2 participants