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

Remove @Beta from remaining FluentFuture APIs #3419

Closed
cpovirk opened this issue Mar 25, 2019 · 3 comments
Closed

Remove @Beta from remaining FluentFuture APIs #3419

cpovirk opened this issue Mar 25, 2019 · 3 comments
Labels
P3 package=concurrent status=triaged type=debeta Request to remove something from @Beta

Comments

@cpovirk
Copy link
Member

cpovirk commented Mar 25, 2019

Now that we changed the type hierarchy, I think there's not much blocking this, except:

  • Remove @Beta from Futures.transform, catching, and *Async variants #3403 lists concerns about specific methods.
  • If we got very ambitious, we could try to make it not actually be a Future, more of a "builder." But it's hard to imagine that that would be a priority. [Edit: Part of the motivation here is that that would be a better model for attaching "interceptors," like for tracing.]
@cpovirk cpovirk added package=concurrent status=triaged P2 type=debeta Request to remove something from @Beta labels Mar 25, 2019
@cpovirk cpovirk added P3 and removed P2 labels Jan 13, 2020
copybara-service bot pushed a commit that referenced this issue Dec 13, 2021
… `addCallback`.

This leaves `@Beta` only for the methods that remain `@Beta` in `Futures` itself, which I'm hoping to make some effort toward later this week.

This CL is an admission that we're never going to get around to reworking `FluentFuture` to be more of a "builder," as discussed in #3419. Maybe there's still a place for something more builder-like, but there's no chance that we'll try to change `FluentFuture` in place. And probably we'll never do anything.

RELNOTES=`util.concurrent`: Removed `@Beta` from the `FluentFuture` type, its factory methods, and `addCallback`.
PiperOrigin-RevId: 416116755
copybara-service bot pushed a commit that referenced this issue Dec 13, 2021
… `addCallback`.

This leaves `@Beta` only for the methods that remain `@Beta` in `Futures` itself, which I'm hoping to make some effort toward later this week.

This CL is an admission that we're never going to get around to reworking `FluentFuture` to be more of a "builder," as discussed in #3419. Maybe there's still a place for something more builder-like, but there's no chance that we'll try to change `FluentFuture` in place. And probably we'll never do anything.

RELNOTES=`util.concurrent`: Removed `@Beta` from the `FluentFuture` type, its factory methods, and `addCallback`.
PiperOrigin-RevId: 416122526
@kluever
Copy link
Member

kluever commented Apr 11, 2023

Looks like most of this happened, The only remaining @Beta APIs in FluentFuture are:

  • public final <X extends Throwable> FluentFuture<V> catching(Class<X> exceptionType, Function<? super X, ? extends V> fallback, Executor executor)
  • public final <X extends Throwable> FluentFuture<V> catchingAsync(Class<X> exceptionType, AsyncFunction<? super X, ? extends V> fallback, Executor executor)
  • public final <X extends Throwable> FluentFuture<V> catchingAsync(Class<X> exceptionType, AsyncFunction<? super X, ? extends V> fallback, Executor executor)
  • public final FluentFuture<V> withTimeout(Duration timeout, ScheduledExecutorService scheduledExecutor)
  • public final FluentFuture<V> withTimeout(long timeout, TimeUnit unit, ScheduledExecutorService scheduledExecutor)
  • public final <T extends @Nullable Object> FluentFuture<T> transformAsync(AsyncFunction<? super V, T> function, Executor executor)
  • public final <T extends @Nullable Object> FluentFuture<T> transform(Function<? super V, T> function, Executor executor)

What do we think about these, @cpovirk ?

@kluever kluever changed the title Remove @Beta from FluentFuture Remove @Beta from remaining FluentFuture APIs Apr 11, 2023
@cpovirk
Copy link
Member Author

cpovirk commented Apr 11, 2023

We can probably just remove @Beta, given that changes even to @Beta APIs would likely be disruptive to users and given that we're pretty clearly not going to prioritize changes in any case.

  • We could still theoretically want to change the cancellation behavior of catching*, but it's somewhat unlikely that we'd ever do it.
  • We've talked about moving off c.g.c.base.Function, but that's still not imminent.
  • "withTimeout" isn't a great name, but we're not likely to change it.
  • At least we're reasonably confident that we're not going to change interruption behavior nowadays.

copybara-service bot pushed a commit that referenced this issue Apr 11, 2023
Fixes #3419

RELNOTES=`concurrent`: Remove `@Beta` from `FluentFuture`.
PiperOrigin-RevId: 523456254
@kluever
Copy link
Member

kluever commented Apr 11, 2023

This is now fixed.

@kluever kluever closed this as completed Apr 11, 2023
copybara-service bot pushed a commit that referenced this issue Apr 11, 2023
Fixes #3419

RELNOTES=`concurrent`: Remove `@Beta` from `FluentFuture`.
PiperOrigin-RevId: 523466140
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P3 package=concurrent status=triaged type=debeta Request to remove something from @Beta
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants