The GitHub Actions job "Nightly Builds (1.7)" on pekko.git/main has failed.
Run started by GitHub user pjfanning (triggered by pjfanning).

Head commit for run:
a993c160836e96d8e29e49d10f54ed3588545bb3 / He-Pin(kerr) <[email protected]>
fix: add supervision strategy support for aggregateWithBoundary callbacks 
(#3187)

* fix: add supervision strategy support for aggregateWithBoundary callbacks

Motivation:
aggregateWithBoundary invokes multiple user callbacks (`allocate`, `aggregate`,
`harvest`, and timer predicate), but exceptions were not supervised and failed
the stream unconditionally.

Modification:
Add decider-based exception handling in AggregateWithBoundary for all callback
sites:
- allocate/aggregate in onPush
- timer predicate and harvest in onTimer
- harvest in onUpstreamFinish

Stop fails the stage. Resume/Restart drop failing element/aggregate and 
continue.
For aggregate callback failures, Resume now resets aggregate state to avoid
retaining partially-mutated mutable state.

Update Scala/Java API docs and operator docs to document supervision behavior.

Add directional regression tests in AggregateWithBoundarySpec covering:
- aggregate callback failures under Resume/Restart
- allocate callback failure under Resume
- harvest callback failure under Resume
- timer predicate failure under Resume (explicit scheduler)

Result:
aggregateWithBoundary now honors ActorAttributes.SupervisionStrategy across all
user callback failure points with deterministic regression coverage.

Tests:
- sbt "stream-tests/Test/testOnly 
org.apache.pekko.stream.scaladsl.AggregateWithBoundarySpec 
org.apache.pekko.stream.scaladsl.AggregateWithTimeBoundaryAndSimulatedTimeSpec" 
-- 11/11 passed
- sbt "stream/mimaReportBinaryIssues" -- clean
- sbt "docs/paradox" -- passed

References:
Refs #3110

* refactor: deduplicate harvest emission and add upstream-finish supervision 
test

Motivation:
The supervision handling introduced two near-identical harvest methods
(harvestAndEmitFromOnPush / harvestAndEmitOnTimer) differing only in whether
pullIfPossible is called after recovery, and the onUpstreamFinish harvest
recovery path lacked directional test coverage.

Modification:
- Unify the two harvest methods into a single harvestAndEmit(pullOnRecover)
  that conditionally pulls on recovery; onPush passes true, onTimer passes
  false to preserve the original timer semantics of not managing pull state.
- Add a directional test for harvest failure on upstream completion (Resume):
  the failing final aggregate is dropped and the stream completes normally.

Result:
Less duplication in the supervision recovery code and regression coverage
for the previously untested onUpstreamFinish harvest path.

Tests:
- sbt "stream-tests/Test/testOnly 
org.apache.pekko.stream.scaladsl.AggregateWithBoundarySpec 
org.apache.pekko.stream.scaladsl.AggregateWithTimeBoundaryAndSimulatedTimeSpec" 
-- 12/12 passed
- sbt "stream/mimaReportBinaryIssues" -- clean
- scalafmt --test --mode diff-ref=origin/main -- all formatted

References:
Refs #3110

Report URL: https://github.com/apache/pekko/actions/runs/28307363530

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to