Skip to content
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

3.x: Add onDropped callback to throttleLatest operator #7457

Merged
merged 2 commits into from
Aug 9, 2022
Merged

Conversation

akarnokd
Copy link
Member

@akarnokd akarnokd commented Aug 8, 2022

This PR adds an overload to the throttleLatest operator which takes an onDropped consumer.

This consumer is called when the latest known item is replaced by a newer item, or the sequence gets terminated with a latest known item. It should allow some per-item cleanup to happen.

If the onDropped crashes, the exception is either delivered to the downstream (if the sequence is still live at that point) or to the global error handler (sequence is stopped).

(Also fixed a bug in one of the test helpers regarding asserting composite exception members.)

@akarnokd akarnokd added this to the 3.1-support milestone Aug 8, 2022
@codecov
Copy link

codecov bot commented Aug 8, 2022

Codecov Report

Merging #7457 (f54fafa) into 3.x (ef51a90) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##                3.x    #7457      +/-   ##
============================================
+ Coverage     99.55%   99.56%   +0.01%     
- Complexity     6781     6784       +3     
============================================
  Files           751      751              
  Lines         47482    47579      +97     
  Branches       6378     6393      +15     
============================================
+ Hits          47271    47373     +102     
  Misses           93       93              
+ Partials        118      113       -5     
Impacted Files Coverage Δ
.../main/java/io/reactivex/rxjava3/core/Flowable.java 100.00% <100.00%> (ø)
...ain/java/io/reactivex/rxjava3/core/Observable.java 100.00% <100.00%> (ø)
...nal/operators/flowable/FlowableThrottleLatest.java 100.00% <100.00%> (ø)
...operators/observable/ObservableThrottleLatest.java 100.00% <100.00%> (ø)
...l/operators/observable/ObservableFlatMapMaybe.java 91.54% <0.00%> (-4.93%) ⬇️
.../operators/flowable/FlowableBlockingSubscribe.java 93.02% <0.00%> (-4.66%) ⬇️
...a/io/reactivex/rxjava3/subjects/ReplaySubject.java 99.16% <0.00%> (-0.42%) ⬇️
...rnal/operators/flowable/FlowableFlatMapSingle.java 95.34% <0.00%> (ø)
...nternal/operators/observable/ObservableWindow.java 100.00% <0.00%> (+1.78%) ⬆️
... and 5 more

📣 Codecov can now indicate which changes are the most critical in Pull Requests. Learn more

@akarnokd akarnokd merged commit 9d4631b into 3.x Aug 9, 2022
@akarnokd akarnokd deleted the OnDropCallbacks branch August 9, 2022 06:31
Goooler referenced this pull request in Goooler/DemoApp Jan 18, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [io.reactivex.rxjava3:rxjava](https://togithub.com/ReactiveX/RxJava) |
`3.1.5` -> `3.1.6` |
[![age](https://badges.renovateapi.com/packages/maven/io.reactivex.rxjava3:rxjava/3.1.6/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/maven/io.reactivex.rxjava3:rxjava/3.1.6/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/maven/io.reactivex.rxjava3:rxjava/3.1.6/compatibility-slim/3.1.5)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/maven/io.reactivex.rxjava3:rxjava/3.1.6/confidence-slim/3.1.5)](https://docs.renovatebot.com/merge-confidence/)
|

---

### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>ReactiveX/RxJava</summary>

###
[`v3.1.6`](https://togithub.com/ReactiveX/RxJava/releases/tag/v3.1.6)


[Maven](http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava3%7Crxjava%7C3.1.6%7C)
[JavaDocs](http://reactivex.io/RxJava/3.x/javadoc/3.1.6)

##### API changes

- Add an overload to `throttleLatest` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7457'>[#&#8203;7457](https://togithub.com/ReactiveX/RxJava/issues/7457)</a>)
- Add an overload to `throttleFirst` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7482'>[#&#8203;7482](https://togithub.com/ReactiveX/RxJava/issues/7482)</a>)
- Add an overload to `throttleLast` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7488'>[#&#8203;7488](https://togithub.com/ReactiveX/RxJava/issues/7488)</a>)
- Add an overload to `throttleWithTimeout` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7510'>[#&#8203;7510](https://togithub.com/ReactiveX/RxJava/issues/7510)</a>)

##### Bugfixes

- Fix a race condition in `Single.timeout` that prevented the timeout
signal from happening. (<a
href='https://github.com/ReactiveX/RxJava/issues/7515'>[#&#8203;7515](https://togithub.com/ReactiveX/RxJava/issues/7515)</a>)

##### Documentation

- Fix formatting in `TestObserver/Consumer/Subscriber` javadoc html. (<a
href='https://github.com/ReactiveX/RxJava/issues/7442'>[#&#8203;7442](https://togithub.com/ReactiveX/RxJava/issues/7442)</a>)
- Fix typo in `BehaviorSubject.java`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7452'>[#&#8203;7452](https://togithub.com/ReactiveX/RxJava/issues/7452)</a>)
- Fix grammar about cancellation in `Schedulers` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7453'>[#&#8203;7453](https://togithub.com/ReactiveX/RxJava/issues/7453)</a>)
- Change `@coded` tag to `@code` tag. (<a
href='https://github.com/ReactiveX/RxJava/issues/7463'>[#&#8203;7463](https://togithub.com/ReactiveX/RxJava/issues/7463)</a>)
- Fix `fromCompletionStage` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7508'>[#&#8203;7508](https://togithub.com/ReactiveX/RxJava/issues/7508)</a>)

##### Other

- Add missing `@NonNull` annotation to `Maybe` type argument. (<a
href='https://github.com/ReactiveX/RxJava/issues/7436'>[#&#8203;7436](https://togithub.com/ReactiveX/RxJava/issues/7436)</a>)
- Remove redundant interface declarations. (<a
href='https://github.com/ReactiveX/RxJava/issues/7438'>[#&#8203;7438](https://togithub.com/ReactiveX/RxJava/issues/7438)</a>)
- Standardize `MissingBackpressureException` message, introduce
`QueueOverflowException`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7459'>[#&#8203;7459](https://togithub.com/ReactiveX/RxJava/issues/7459)</a>)
- Update `Flowable.throttleLatest` `MissingBackpressureException`
message. (<a
href='https://github.com/ReactiveX/RxJava/issues/7460'>[#&#8203;7460](https://togithub.com/ReactiveX/RxJava/issues/7460)</a>)
- Fix cancellation order in `throttleFirst`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7484'>[#&#8203;7484](https://togithub.com/ReactiveX/RxJava/issues/7484)</a>)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/Goooler/DemoApp).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMDUuMyIsInVwZGF0ZWRJblZlciI6IjM0LjEwNS4zIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ZacSweers referenced this pull request in slackhq/circuit Jan 19, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [io.reactivex.rxjava3:rxjava](https://togithub.com/ReactiveX/RxJava) |
dependencies | patch | `3.1.5` -> `3.1.6` |

---

### Release Notes

<details>
<summary>ReactiveX/RxJava</summary>

###
[`v3.1.6`](https://togithub.com/ReactiveX/RxJava/releases/tag/v3.1.6)


[Maven](http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava3%7Crxjava%7C3.1.6%7C)
[JavaDocs](http://reactivex.io/RxJava/3.x/javadoc/3.1.6)

##### API changes

- Add an overload to `throttleLatest` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7457'>[#&#8203;7457](https://togithub.com/ReactiveX/RxJava/issues/7457)</a>)
- Add an overload to `throttleFirst` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7482'>[#&#8203;7482](https://togithub.com/ReactiveX/RxJava/issues/7482)</a>)
- Add an overload to `throttleLast` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7488'>[#&#8203;7488](https://togithub.com/ReactiveX/RxJava/issues/7488)</a>)
- Add an overload to `throttleWithTimeout` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7510'>[#&#8203;7510](https://togithub.com/ReactiveX/RxJava/issues/7510)</a>)

##### Bugfixes

- Fix a race condition in `Single.timeout` that prevented the timeout
signal from happening. (<a
href='https://github.com/ReactiveX/RxJava/issues/7515'>[#&#8203;7515](https://togithub.com/ReactiveX/RxJava/issues/7515)</a>)

##### Documentation

- Fix formatting in `TestObserver/Consumer/Subscriber` javadoc html. (<a
href='https://github.com/ReactiveX/RxJava/issues/7442'>[#&#8203;7442](https://togithub.com/ReactiveX/RxJava/issues/7442)</a>)
- Fix typo in `BehaviorSubject.java`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7452'>[#&#8203;7452](https://togithub.com/ReactiveX/RxJava/issues/7452)</a>)
- Fix grammar about cancellation in `Schedulers` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7453'>[#&#8203;7453](https://togithub.com/ReactiveX/RxJava/issues/7453)</a>)
- Change `@coded` tag to `@code` tag. (<a
href='https://github.com/ReactiveX/RxJava/issues/7463'>[#&#8203;7463](https://togithub.com/ReactiveX/RxJava/issues/7463)</a>)
- Fix `fromCompletionStage` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7508'>[#&#8203;7508](https://togithub.com/ReactiveX/RxJava/issues/7508)</a>)

##### Other

- Add missing `@NonNull` annotation to `Maybe` type argument. (<a
href='https://github.com/ReactiveX/RxJava/issues/7436'>[#&#8203;7436](https://togithub.com/ReactiveX/RxJava/issues/7436)</a>)
- Remove redundant interface declarations. (<a
href='https://github.com/ReactiveX/RxJava/issues/7438'>[#&#8203;7438](https://togithub.com/ReactiveX/RxJava/issues/7438)</a>)
- Standardize `MissingBackpressureException` message, introduce
`QueueOverflowException`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7459'>[#&#8203;7459](https://togithub.com/ReactiveX/RxJava/issues/7459)</a>)
- Update `Flowable.throttleLatest` `MissingBackpressureException`
message. (<a
href='https://github.com/ReactiveX/RxJava/issues/7460'>[#&#8203;7460](https://togithub.com/ReactiveX/RxJava/issues/7460)</a>)
- Fix cancellation order in `throttleFirst`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7484'>[#&#8203;7484](https://togithub.com/ReactiveX/RxJava/issues/7484)</a>)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click
this checkbox.

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xOTAuNiIsInVwZGF0ZWRJblZlciI6IjMyLjE5MC42In0=-->
ZacSweers referenced this pull request in slackhq/foundry Jan 19, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [io.reactivex.rxjava3:rxjava](https://togithub.com/ReactiveX/RxJava) |
dependencies | patch | `3.1.5` -> `3.1.6` |

---

### Release Notes

<details>
<summary>ReactiveX/RxJava</summary>

###
[`v3.1.6`](https://togithub.com/ReactiveX/RxJava/releases/tag/v3.1.6)


[Maven](http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava3%7Crxjava%7C3.1.6%7C)
[JavaDocs](http://reactivex.io/RxJava/3.x/javadoc/3.1.6)

##### API changes

- Add an overload to `throttleLatest` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7457'>[#&#8203;7457](https://togithub.com/ReactiveX/RxJava/issues/7457)</a>)
- Add an overload to `throttleFirst` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7482'>[#&#8203;7482](https://togithub.com/ReactiveX/RxJava/issues/7482)</a>)
- Add an overload to `throttleLast` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7488'>[#&#8203;7488](https://togithub.com/ReactiveX/RxJava/issues/7488)</a>)
- Add an overload to `throttleWithTimeout` operator with an `onDropped`
callback. (<a
href='https://github.com/ReactiveX/RxJava/issues/7510'>[#&#8203;7510](https://togithub.com/ReactiveX/RxJava/issues/7510)</a>)

##### Bugfixes

- Fix a race condition in `Single.timeout` that prevented the timeout
signal from happening. (<a
href='https://github.com/ReactiveX/RxJava/issues/7515'>[#&#8203;7515](https://togithub.com/ReactiveX/RxJava/issues/7515)</a>)

##### Documentation

- Fix formatting in `TestObserver/Consumer/Subscriber` javadoc html. (<a
href='https://github.com/ReactiveX/RxJava/issues/7442'>[#&#8203;7442](https://togithub.com/ReactiveX/RxJava/issues/7442)</a>)
- Fix typo in `BehaviorSubject.java`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7452'>[#&#8203;7452](https://togithub.com/ReactiveX/RxJava/issues/7452)</a>)
- Fix grammar about cancellation in `Schedulers` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7453'>[#&#8203;7453](https://togithub.com/ReactiveX/RxJava/issues/7453)</a>)
- Change `@coded` tag to `@code` tag. (<a
href='https://github.com/ReactiveX/RxJava/issues/7463'>[#&#8203;7463](https://togithub.com/ReactiveX/RxJava/issues/7463)</a>)
- Fix `fromCompletionStage` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7508'>[#&#8203;7508](https://togithub.com/ReactiveX/RxJava/issues/7508)</a>)

##### Other

- Add missing `@NonNull` annotation to `Maybe` type argument. (<a
href='https://github.com/ReactiveX/RxJava/issues/7436'>[#&#8203;7436](https://togithub.com/ReactiveX/RxJava/issues/7436)</a>)
- Remove redundant interface declarations. (<a
href='https://github.com/ReactiveX/RxJava/issues/7438'>[#&#8203;7438](https://togithub.com/ReactiveX/RxJava/issues/7438)</a>)
- Standardize `MissingBackpressureException` message, introduce
`QueueOverflowException`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7459'>[#&#8203;7459](https://togithub.com/ReactiveX/RxJava/issues/7459)</a>)
- Update `Flowable.throttleLatest` `MissingBackpressureException`
message. (<a
href='https://github.com/ReactiveX/RxJava/issues/7460'>[#&#8203;7460](https://togithub.com/ReactiveX/RxJava/issues/7460)</a>)
- Fix cancellation order in `throttleFirst`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7484'>[#&#8203;7484](https://togithub.com/ReactiveX/RxJava/issues/7484)</a>)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click
this checkbox.

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xOTAuNiIsInVwZGF0ZWRJblZlciI6IjMyLjE5MC42In0=-->
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