Skip to content
Switch branches/tags

Latest commit

* AccumulateWhileUnchanged: add tests which use backpressure

Demonstrate how elements can be dropped due to interaction between
`maxDuration` and a lack of downstream demand.

* AccumulateWhileUnchanged: stop pull() after onTimer()

If `onTimer()` is called when `buffer` is not empty, it will `push()`
results but the `pull(in)` request will not be canceled. If additional
upstream elements arrive with a different `nextState` which would cause
`pushResults()` to be called again before the downstream indicates demand
via `onPull()`, then `nextElement` would be dropped.

Avoid pushing again after push() from onTimer() until onPull() is called
again to indicate downstream demand. This avoids dropping elements when
pushResults() is called but `out` is not available.

In case a similar issue occurs again, add a `require()` check which will
throw if nextElement would be discarded.

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Akka Stream Contrib scaladex-badge travis-badge

This project provides a home to Akka Streams add-ons which does not fit into the core Akka Streams module. There can be several reasons for it to not be included in the core module, such as:

  • the functionality is not considered to match the purpose of the core module
  • it is an experiment or requires iterations with user feedback before including into the stable core module
  • it requires a faster release cycle

This repository is not released as a binary artifact and only shared as sources.

Caveat Emptor

A component in this project does not have to obey the rule of staying binary compatible between releases. Breaking API changes may be introduced without notice as we refine and simplify based on your feedback. A module may be dropped in any release without prior deprecation. The Lightbend subscription does not cover support for these modules.