You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by "poorbarcode (via GitHub)" <gi...@apache.org> on 2025/08/05 14:51:40 UTC
[PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
poorbarcode opened a new pull request, #24606:
URL: https://github.com/apache/pulsar/pull/24606
### Motivation
Broker checks TTL policies in the background per 5 minutes in a single thread. It calls a block method named `topic.isOldestMessageExpired`, which causes a prolonged thread blockage.
### Modifications
Instead of calling a block method, call a non-blocked method
### Documentation
<!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
- [ ] `doc` <!-- Your PR contains doc changes. -->
- [ ] `doc-required` <!-- Your PR changes impact docs and you will update later -->
- [x] `doc-not-needed` <!-- Your PR changes do not impact docs -->
- [ ] `doc-complete` <!-- Docs have been already added -->
### Matching PR in forked repository
PR in forked repository: x
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "poorbarcode (via GitHub)" <gi...@apache.org>.
poorbarcode commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2258718903
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,12 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.supplyAsync(() -> expireMessages(messageTTLInSeconds),
+ cursor.getManagedLedger().asyncMigrate().defaultExecutor());
Review Comment:
Sorry, the IDE mistakenly completed auto-filling. The question has been modified to `topic.getOrderedExecutor()`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "lhotari (via GitHub)" <gi...@apache.org>.
lhotari commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2256411670
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,12 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.supplyAsync(() -> expireMessages(messageTTLInSeconds),
+ cursor.getManagedLedger().asyncMigrate().defaultExecutor());
Review Comment:
`asyncMigrate().defaultExecutor()` doesn't seem to make sense.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#issuecomment-3163316130
## [Codecov](https://app.codecov.io/gh/apache/pulsar/pull/24606?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:x: Patch coverage is `58.53659%` with `17 lines` in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 74.32%. Comparing base ([`d272825`](https://app.codecov.io/gh/apache/pulsar/commit/d2728253c666f7d4bd4f111356f3b97663603b6a?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`9c8f732`](https://app.codecov.io/gh/apache/pulsar/commit/9c8f732f2c589c6d0b33758df6e5f18366bd99c6?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
:warning: Report is 4 commits behind head on master.
| [Files with missing lines](https://app.codecov.io/gh/apache/pulsar/pull/24606?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines |
|---|---|---|
| [...sar/broker/service/persistent/PersistentTopic.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fpersistent%2FPersistentTopic.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL3BlcnNpc3RlbnQvUGVyc2lzdGVudFRvcGljLmphdmE=) | 52.63% | [9 Missing :warning: ](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...roker/service/persistent/PersistentReplicator.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fpersistent%2FPersistentReplicator.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL3BlcnNpc3RlbnQvUGVyc2lzdGVudFJlcGxpY2F0b3IuamF2YQ==) | 22.22% | [6 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...rvice/nonpersistent/NonPersistentSubscription.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fnonpersistent%2FNonPersistentSubscription.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL25vbnBlcnNpc3RlbnQvTm9uUGVyc2lzdGVudFN1YnNjcmlwdGlvbi5qYXZh) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
<details><summary>Additional details and impacted files</summary>
[](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
```diff
@@ Coverage Diff @@
## master #24606 +/- ##
============================================
+ Coverage 74.21% 74.32% +0.11%
+ Complexity 33142 32789 -353
============================================
Files 1881 1881
Lines 146770 146814 +44
Branches 16859 16862 +3
============================================
+ Hits 108922 109125 +203
+ Misses 29181 29022 -159
Partials 8667 8667
```
| [Flag](https://app.codecov.io/gh/apache/pulsar/pull/24606/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | |
|---|---|---|
| [inttests](https://app.codecov.io/gh/apache/pulsar/pull/24606/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `26.87% <0.00%> (?)` | |
| [systests](https://app.codecov.io/gh/apache/pulsar/pull/24606/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `23.27% <0.00%> (-0.09%)` | :arrow_down: |
| [unittests](https://app.codecov.io/gh/apache/pulsar/pull/24606/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `73.82% <58.53%> (+0.03%)` | :arrow_up: |
Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#carryforward-flags-in-the-pull-request-comment) to find out more.
| [Files with missing lines](https://app.codecov.io/gh/apache/pulsar/pull/24606?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | |
|---|---|---|
| [...ice/persistent/PersistentMessageExpiryMonitor.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fpersistent%2FPersistentMessageExpiryMonitor.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL3BlcnNpc3RlbnQvUGVyc2lzdGVudE1lc3NhZ2VFeHBpcnlNb25pdG9yLmphdmE=) | `61.34% <100.00%> (+0.32%)` | :arrow_up: |
| [...ker/service/persistent/PersistentSubscription.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fpersistent%2FPersistentSubscription.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL3BlcnNpc3RlbnQvUGVyc2lzdGVudFN1YnNjcmlwdGlvbi5qYXZh) | `77.50% <100.00%> (+0.98%)` | :arrow_up: |
| [...rvice/nonpersistent/NonPersistentSubscription.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fnonpersistent%2FNonPersistentSubscription.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL25vbnBlcnNpc3RlbnQvTm9uUGVyc2lzdGVudFN1YnNjcmlwdGlvbi5qYXZh) | `57.64% <0.00%> (-0.26%)` | :arrow_down: |
| [...roker/service/persistent/PersistentReplicator.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fpersistent%2FPersistentReplicator.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL3BlcnNpc3RlbnQvUGVyc2lzdGVudFJlcGxpY2F0b3IuamF2YQ==) | `72.64% <22.22%> (-2.01%)` | :arrow_down: |
| [...sar/broker/service/persistent/PersistentTopic.java](https://app.codecov.io/gh/apache/pulsar/pull/24606?src=pr&el=tree&filepath=pulsar-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpulsar%2Fbroker%2Fservice%2Fpersistent%2FPersistentTopic.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cHVsc2FyLWJyb2tlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcHVsc2FyL2Jyb2tlci9zZXJ2aWNlL3BlcnNpc3RlbnQvUGVyc2lzdGVudFRvcGljLmphdmE=) | `80.05% <52.63%> (-0.37%)` | :arrow_down: |
... and [108 files with indirect coverage changes](https://app.codecov.io/gh/apache/pulsar/pull/24606/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
</details>
<details><summary> :rocket: New features to boost your workflow: </summary>
- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "poorbarcode (via GitHub)" <gi...@apache.org>.
poorbarcode commented on PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#issuecomment-3156975044
> I‘m +1 with the change, but do we need to add tests for the new methods?
I have added the same test cases that call `expireMessages` directly. The other case that does not call `expireMessages` directly should be covered by the old tests, such as `testDefaultBacklogTTL`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "lhotari (via GitHub)" <gi...@apache.org>.
lhotari commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2256232111
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,11 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.supplyAsync(() -> expireMessages(messageTTLInSeconds));
Review Comment:
Plain `supplyAsync` would use the default ForkJoinPool for execution. I guess that would be fine since ForkJoinPool can handle blocking methods by spanning more threads when needed (and shrink the number of threads later). However, we might want to choose the thread pool which is used for execution.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "poorbarcode (via GitHub)" <gi...@apache.org>.
poorbarcode commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2256253527
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,11 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.supplyAsync(() -> expireMessages(messageTTLInSeconds));
Review Comment:
Added the managed ledger executor
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "Technoboy- (via GitHub)" <gi...@apache.org>.
Technoboy- merged PR #24606:
URL: https://github.com/apache/pulsar/pull/24606
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "lhotari (via GitHub)" <gi...@apache.org>.
lhotari commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2257458487
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,12 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.supplyAsync(() -> expireMessages(messageTTLInSeconds),
+ cursor.getManagedLedger().asyncMigrate().defaultExecutor());
Review Comment:
In https://github.com/apache/pulsar/pull/24606#discussion_r2256253527 you mentioned using managed ledger executor. calling the `asyncMigration()` method doesn't return an executor. It runs the `asyncMigration()` method and returns a `CompletableFuture`. The `CompletableFuture` has a `defaultExecutor` which returns the default ForkJoinPool by default.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "lhotari (via GitHub)" <gi...@apache.org>.
lhotari commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2257458487
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,12 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.supplyAsync(() -> expireMessages(messageTTLInSeconds),
+ cursor.getManagedLedger().asyncMigrate().defaultExecutor());
Review Comment:
In https://github.com/apache/pulsar/pull/24606#discussion_r2256253527 you mentioned using managed ledger executor. calling the `asyncMigration()` method doesn't return an executor. It runs the `asyncMigration()` method and returns a `CompletableFuture`. The `CompletableFuture` has a `defaultExecutor` which returns the default ForkJoinPool by default. This is why this doesn't make sense to me.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "poorbarcode (via GitHub)" <gi...@apache.org>.
poorbarcode commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2256132153
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java:
##########
@@ -1236,6 +1236,25 @@ public boolean expireMessages(int messageTTLInSeconds) {
return expiryMonitor.expireMessages(messageTTLInSeconds);
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ long backlog = getNumberOfEntriesInBacklog(false);
+ if (backlog == 0) {
+ return CompletableFuture.completedFuture(false);
+ }
+ if (dispatcher != null && dispatcher.isConsumerConnected() && backlog < MINIMUM_BACKLOG_FOR_EXPIRY_CHECK) {
+ return topic.isOldestMessageExpiredAsync(cursor, messageTTLInSeconds).thenCompose(bool -> {
+ if (bool) {
Review Comment:
Renamed
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,11 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.completedFuture(expireMessages(messageTTLInSeconds));
Review Comment:
Changed to `CompletableFuture.supplyAsync`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "poorbarcode (via GitHub)" <gi...@apache.org>.
poorbarcode commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2256132455
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,11 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.completedFuture(expireMessages(messageTTLInSeconds));
Review Comment:
Changed to `CompletableFuture.supplyAsync`.
BTW, the other child classes need to add a new method, such as PersistentSubscription
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "lhotari (via GitHub)" <gi...@apache.org>.
lhotari commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2256093127
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,11 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.completedFuture(expireMessages(messageTTLInSeconds));
Review Comment:
`expireMessages` is a blocking implementation.
This could be made to run asynchronously in a separate thread (Executor) with `CompletableFuture.supplyAsync` without having to rewrite the existing blocking implementation.
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java:
##########
@@ -1236,6 +1236,25 @@ public boolean expireMessages(int messageTTLInSeconds) {
return expiryMonitor.expireMessages(messageTTLInSeconds);
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ long backlog = getNumberOfEntriesInBacklog(false);
+ if (backlog == 0) {
+ return CompletableFuture.completedFuture(false);
+ }
+ if (dispatcher != null && dispatcher.isConsumerConnected() && backlog < MINIMUM_BACKLOG_FOR_EXPIRY_CHECK) {
+ return topic.isOldestMessageExpiredAsync(cursor, messageTTLInSeconds).thenCompose(bool -> {
+ if (bool) {
Review Comment:
use a proper variable name instead of `bool`. For example `oldestMsgExpired`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "Technoboy- (via GitHub)" <gi...@apache.org>.
Technoboy- closed pull request #24606: [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages
URL: https://github.com/apache/pulsar/pull/24606
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] [improve][broker]Remove block calling that named cursor.asyncGetNth when expiring messages [pulsar]
Posted by "poorbarcode (via GitHub)" <gi...@apache.org>.
poorbarcode commented on code in PR #24606:
URL: https://github.com/apache/pulsar/pull/24606#discussion_r2257143829
##########
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java:
##########
@@ -84,6 +85,12 @@ public boolean isAutoSkipNonRecoverableData() {
&& this.cursor.getManagedLedger().getConfig().isAutoSkipNonRecoverableData();
}
+ @Override
+ public CompletableFuture<Boolean> expireMessagesAsync(int messageTTLInSeconds) {
+ return CompletableFuture.supplyAsync(() -> expireMessages(messageTTLInSeconds),
+ cursor.getManagedLedger().asyncMigrate().defaultExecutor());
Review Comment:
Could you explain the reason?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org