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

Add onDropped callback for throttleFirst - addresses #7481 #7482

Merged
merged 1 commit into from
Nov 7, 2022

Conversation

Desislav-Petrov
Copy link
Contributor

@Desislav-Petrov Desislav-Petrov commented Nov 4, 2022

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

This consumer is called when we're still within the gated time window when any new item isn't passed to downstream.

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).

Related: #7458

src/main/java/io/reactivex/rxjava3/core/Observable.java Outdated Show resolved Hide resolved
onDropped.accept(t);
} catch (Throwable ex) {
Exceptions.throwIfFatal(ex);
upstream.dispose();
Copy link
Member

Choose a reason for hiding this comment

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

This will hang the sequence because the error is swallowed. Also there is no cleanup of the worker.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

So we have to do downstream.onError(t) to propagate this, right? And .dispose() of the worker too?

Copy link
Member

Choose a reason for hiding this comment

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

Yes.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Should be addressed now, thx for the review

@codecov
Copy link

codecov bot commented Nov 4, 2022

Codecov Report

Merging #7482 (4e79c22) into 3.x (159ae3b) will increase coverage by 0.02%.
The diff coverage is 77.41%.

❗ Current head 4e79c22 differs from pull request most recent head 7a2792a. Consider uploading reports for the commit 7a2792a to get more accurate results

@@             Coverage Diff              @@
##                3.x    #7482      +/-   ##
============================================
+ Coverage     99.52%   99.55%   +0.02%     
- Complexity     6788     6790       +2     
============================================
  Files           752      752              
  Lines         47586    47611      +25     
  Branches       6394     6396       +2     
============================================
+ Hits          47359    47398      +39     
+ Misses          107      104       -3     
+ Partials        120      109      -11     
Impacted Files Coverage Δ
...operators/flowable/FlowableThrottleFirstTimed.java 94.02% <63.63%> (-5.98%) ⬇️
...ators/observable/ObservableThrottleFirstTimed.java 93.47% <70.00%> (-6.53%) ⬇️
.../main/java/io/reactivex/rxjava3/core/Flowable.java 100.00% <100.00%> (ø)
...ain/java/io/reactivex/rxjava3/core/Observable.java 100.00% <100.00%> (ø)
.../operators/flowable/FlowableBlockingSubscribe.java 93.02% <0.00%> (-4.66%) ⬇️
...nternal/operators/observable/ObservableCreate.java 97.43% <0.00%> (-1.71%) ⬇️
...nternal/operators/parallel/ParallelSortedJoin.java 98.49% <0.00%> (-1.51%) ⬇️
...internal/operators/flowable/FlowableSwitchMap.java 98.58% <0.00%> (-1.42%) ⬇️
...a3/internal/operators/flowable/FlowableCreate.java 99.35% <0.00%> (+0.32%) ⬆️
...a/io/reactivex/rxjava3/subjects/ReplaySubject.java 99.58% <0.00%> (+0.62%) ⬆️
... and 6 more

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@akarnokd akarnokd merged commit 3b0d948 into ReactiveX:3.x Nov 7, 2022
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://github.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://github.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://github.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://github.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://github.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://github.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://github.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://github.com/ReactiveX/RxJava/issues/7442)</a>)
- Fix typo in `BehaviorSubject.java`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7452'>[#&#8203;7452](https://github.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://github.com/ReactiveX/RxJava/issues/7453)</a>)
- Change `@coded` tag to `@code` tag. (<a
href='https://github.com/ReactiveX/RxJava/issues/7463'>[#&#8203;7463](https://github.com/ReactiveX/RxJava/issues/7463)</a>)
- Fix `fromCompletionStage` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7508'>[#&#8203;7508](https://github.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://github.com/ReactiveX/RxJava/issues/7436)</a>)
- Remove redundant interface declarations. (<a
href='https://github.com/ReactiveX/RxJava/issues/7438'>[#&#8203;7438](https://github.com/ReactiveX/RxJava/issues/7438)</a>)
- Standardize `MissingBackpressureException` message, introduce
`QueueOverflowException`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7459'>[#&#8203;7459](https://github.com/ReactiveX/RxJava/issues/7459)</a>)
- Update `Flowable.throttleLatest` `MissingBackpressureException`
message. (<a
href='https://github.com/ReactiveX/RxJava/issues/7460'>[#&#8203;7460](https://github.com/ReactiveX/RxJava/issues/7460)</a>)
- Fix cancellation order in `throttleFirst`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7484'>[#&#8203;7484](https://github.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://github.com/ReactiveX/RxJava) |
dependencies | patch | `3.1.5` -> `3.1.6` |

---

### Release Notes

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

###
[`v3.1.6`](https://github.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://github.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://github.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://github.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://github.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://github.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://github.com/ReactiveX/RxJava/issues/7442)</a>)
- Fix typo in `BehaviorSubject.java`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7452'>[#&#8203;7452](https://github.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://github.com/ReactiveX/RxJava/issues/7453)</a>)
- Change `@coded` tag to `@code` tag. (<a
href='https://github.com/ReactiveX/RxJava/issues/7463'>[#&#8203;7463](https://github.com/ReactiveX/RxJava/issues/7463)</a>)
- Fix `fromCompletionStage` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7508'>[#&#8203;7508](https://github.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://github.com/ReactiveX/RxJava/issues/7436)</a>)
- Remove redundant interface declarations. (<a
href='https://github.com/ReactiveX/RxJava/issues/7438'>[#&#8203;7438](https://github.com/ReactiveX/RxJava/issues/7438)</a>)
- Standardize `MissingBackpressureException` message, introduce
`QueueOverflowException`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7459'>[#&#8203;7459](https://github.com/ReactiveX/RxJava/issues/7459)</a>)
- Update `Flowable.throttleLatest` `MissingBackpressureException`
message. (<a
href='https://github.com/ReactiveX/RxJava/issues/7460'>[#&#8203;7460](https://github.com/ReactiveX/RxJava/issues/7460)</a>)
- Fix cancellation order in `throttleFirst`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7484'>[#&#8203;7484](https://github.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://github.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://github.com/ReactiveX/RxJava) |
dependencies | patch | `3.1.5` -> `3.1.6` |

---

### Release Notes

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

###
[`v3.1.6`](https://github.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://github.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://github.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://github.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://github.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://github.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://github.com/ReactiveX/RxJava/issues/7442)</a>)
- Fix typo in `BehaviorSubject.java`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7452'>[#&#8203;7452](https://github.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://github.com/ReactiveX/RxJava/issues/7453)</a>)
- Change `@coded` tag to `@code` tag. (<a
href='https://github.com/ReactiveX/RxJava/issues/7463'>[#&#8203;7463](https://github.com/ReactiveX/RxJava/issues/7463)</a>)
- Fix `fromCompletionStage` javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7508'>[#&#8203;7508](https://github.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://github.com/ReactiveX/RxJava/issues/7436)</a>)
- Remove redundant interface declarations. (<a
href='https://github.com/ReactiveX/RxJava/issues/7438'>[#&#8203;7438](https://github.com/ReactiveX/RxJava/issues/7438)</a>)
- Standardize `MissingBackpressureException` message, introduce
`QueueOverflowException`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7459'>[#&#8203;7459](https://github.com/ReactiveX/RxJava/issues/7459)</a>)
- Update `Flowable.throttleLatest` `MissingBackpressureException`
message. (<a
href='https://github.com/ReactiveX/RxJava/issues/7460'>[#&#8203;7460](https://github.com/ReactiveX/RxJava/issues/7460)</a>)
- Fix cancellation order in `throttleFirst`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7484'>[#&#8203;7484](https://github.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://github.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