Skip to content

fix: DH-22012: implement barrage bug fixes#7800

Open
lbooker42 wants to merge 6 commits intodeephaven:mainfrom
lbooker42:nightly/lab-barrage-mem-use
Open

fix: DH-22012: implement barrage bug fixes#7800
lbooker42 wants to merge 6 commits intodeephaven:mainfrom
lbooker42:nightly/lab-barrage-mem-use

Conversation

@lbooker42
Copy link
Contributor

@lbooker42 lbooker42 commented Mar 17, 2026

Implements targeted Barrage-related bug fixes across server propagation scheduling, client redirected table update handling, and test infrastructure to surface delayed error notifications.

Changes:

  • Fix propagation rescheduling condition in BarrageMessageProducer to use the configured update interval.
  • Adjust BarrageRedirectedTable update processing to skip coalescing when the downstream TableUpdate is empty (and remove a snapshot-specific early-return path).
  • Extend RefreshingTableTestCase to build a custom UpdateGraph that detects DelayedErrorNotifier scheduling and fails tests if any are generated.

@lbooker42 lbooker42 requested a review from Copilot March 17, 2026 20:02
@github-actions
Copy link
Contributor

github-actions bot commented Mar 17, 2026

No docs changes detected for 502c7dd

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Implements targeted Barrage-related bug fixes across server propagation scheduling, client redirected table update handling, and test infrastructure to surface delayed error notifications.

Changes:

  • Fix propagation rescheduling condition in BarrageMessageProducer to use the configured update interval.
  • Adjust BarrageRedirectedTable update processing to skip coalescing when the downstream TableUpdate is empty (and remove a snapshot-specific early-return path).
  • Extend RefreshingTableTestCase to build a custom UpdateGraph that detects DelayedErrorNotifier scheduling and fails tests if any are generated.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
server/src/main/java/io/deephaven/server/barrage/BarrageMessageProducer.java Corrects the time-gap comparison used when deciding whether to delay propagation scheduling.
extensions/barrage/src/main/java/io/deephaven/extensions/barrage/table/BarrageRedirectedTable.java Changes snapshot/update handling and adds an early return when the computed downstream update is empty.
engine/test-utils/src/main/java/io/deephaven/engine/testutil/testcase/RefreshingTableTestCase.java Introduces a custom execution context/update graph to count delayed error notifier registrations and fail in tearDown().

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines 268 to 272
return coalescer;
}

return (coalescer == null) ? new UpdateCoalescer(currRowsFromPrev, downstream)
: coalescer.update(downstream);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Agree, totalMods can leak.

Copy link
Contributor

Choose a reason for hiding this comment

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

It would be preferable to try w/ resources for it. Downstream owns it once we pass it in; but the downstream is going to be maybe not relevant and the coalescer copies that. So I think a better pattern might be to close downstream, but we need to make sure it actually owns the things that it was passed.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

looked into having the coalescer auto-release the downstream update, but another bit of code in BMP uses this class to process delta updates and requires the passed-in update rowsets to be available after these calls (constructor / update() ).

Decided to try-with-resources to clean up this call-site and not re-write the UpdateCoalescer code.

Comment on lines 268 to 272
return coalescer;
}

return (coalescer == null) ? new UpdateCoalescer(currRowsFromPrev, downstream)
: coalescer.update(downstream);
Copy link
Contributor

Choose a reason for hiding this comment

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

It would be preferable to try w/ resources for it. Downstream owns it once we pass it in; but the downstream is going to be maybe not relevant and the coalescer copies that. So I think a better pattern might be to close downstream, but we need to make sure it actually owns the things that it was passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants