-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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 ChannelFutures utility class to pulsar-common. #8137
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rearrange imports.
55da01a
to
54724b6
Compare
@rdhabalia can you please take a look? I will use this class to improve code committed in #8117 :-) |
/pulsarbot run-failure-checks |
3 similar comments
/pulsarbot run-failure-checks |
/pulsarbot run-failure-checks |
/pulsarbot run-failure-checks |
sijie
approved these changes
Oct 1, 2020
lbenc135
pushed a commit
to lbenc135/pulsar
that referenced
this pull request
Oct 3, 2020
### Motivation Pulsar code uses `CompletableFuture` to implement asynchronous execution paths. When interacting with Netty, a common pattern is to create a `CompletableFuture` and some glue code to listen for Netty `ChannelFuture` completions and then complete the `CompletableFuture`. Pulsar code would be more ease to write, read, and maintain if we add a static utility method for adapting a `io.netty.channel.ChannelFuture` to a `java.util.concurrent.CompletableFuture`. Example: ```java public CompletableFuture<Client> connect() { CompletableFuture<Client> clientFuture = new CompletableFuture<>(); bootstrap.connect().addListener((ChannelFuture cf) -> { if (cf.isSuccess()) { client.complete(new Client(cf.channel())); } else { client.completeExceptionally(cf.cause()); } }); return clientFuture; } ``` can be written as: ```java public CompletableFuture<Client> connect() { return ChannelFutures.toCompletableFuture(bootstrap.connect()).thenApply(channel -> new Client(channel)); } ``` ### Modifications - Added `org.apache.pulsar.common.util.netty.ChannelFutures` ### Verifying this change - Added test class `ChannelFuturesTest` ### Documentation - JavaDocs
Move this change to 2.6.2, because the #8177 depends on it. |
wolfstudy
pushed a commit
that referenced
this pull request
Oct 30, 2020
### Motivation Pulsar code uses `CompletableFuture` to implement asynchronous execution paths. When interacting with Netty, a common pattern is to create a `CompletableFuture` and some glue code to listen for Netty `ChannelFuture` completions and then complete the `CompletableFuture`. Pulsar code would be more ease to write, read, and maintain if we add a static utility method for adapting a `io.netty.channel.ChannelFuture` to a `java.util.concurrent.CompletableFuture`. Example: ```java public CompletableFuture<Client> connect() { CompletableFuture<Client> clientFuture = new CompletableFuture<>(); bootstrap.connect().addListener((ChannelFuture cf) -> { if (cf.isSuccess()) { client.complete(new Client(cf.channel())); } else { client.completeExceptionally(cf.cause()); } }); return clientFuture; } ``` can be written as: ```java public CompletableFuture<Client> connect() { return ChannelFutures.toCompletableFuture(bootstrap.connect()).thenApply(channel -> new Client(channel)); } ``` ### Modifications - Added `org.apache.pulsar.common.util.netty.ChannelFutures` ### Verifying this change - Added test class `ChannelFuturesTest` ### Documentation - JavaDocs (cherry picked from commit e2d5c05)
huangdx0726
pushed a commit
to huangdx0726/pulsar
that referenced
this pull request
Nov 13, 2020
### Motivation Pulsar code uses `CompletableFuture` to implement asynchronous execution paths. When interacting with Netty, a common pattern is to create a `CompletableFuture` and some glue code to listen for Netty `ChannelFuture` completions and then complete the `CompletableFuture`. Pulsar code would be more ease to write, read, and maintain if we add a static utility method for adapting a `io.netty.channel.ChannelFuture` to a `java.util.concurrent.CompletableFuture`. Example: ```java public CompletableFuture<Client> connect() { CompletableFuture<Client> clientFuture = new CompletableFuture<>(); bootstrap.connect().addListener((ChannelFuture cf) -> { if (cf.isSuccess()) { client.complete(new Client(cf.channel())); } else { client.completeExceptionally(cf.cause()); } }); return clientFuture; } ``` can be written as: ```java public CompletableFuture<Client> connect() { return ChannelFutures.toCompletableFuture(bootstrap.connect()).thenApply(channel -> new Client(channel)); } ``` ### Modifications - Added `org.apache.pulsar.common.util.netty.ChannelFutures` ### Verifying this change - Added test class `ChannelFuturesTest` ### Documentation - JavaDocs
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
release/2.6.2
type/enhancement
The enhancements for the existing features or docs. e.g. reduce memory usage of the delayed messages
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Pulsar code uses
CompletableFuture
to implement asynchronous execution paths. When interacting with Netty, a common pattern is to create aCompletableFuture
and some glue code to listen for NettyChannelFuture
completions and then complete theCompletableFuture
. Pulsar code would be more ease to write, read, and maintain if we add a static utility method for adapting aio.netty.channel.ChannelFuture
to ajava.util.concurrent.CompletableFuture
.Example:
can be written as:
Modifications
org.apache.pulsar.common.util.netty.ChannelFutures
Verifying this change
ChannelFuturesTest
Documentation