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

Tracking Issue for Netty being Experimental. #1784

Open
carl-mastrangelo opened this issue May 3, 2016 · 6 comments
Open

Tracking Issue for Netty being Experimental. #1784

carl-mastrangelo opened this issue May 3, 2016 · 6 comments
Labels
experimental API Issue tracks stabilizing an experimental API
Milestone

Comments

@carl-mastrangelo
Copy link
Contributor

carl-mastrangelo commented May 3, 2016

Despite Netty being the default and recommended transport, we mark is as experimental, implying it is not stable. Once the transport layer is stable, this should be promoted.

Either we should commit to supporting it, or commit to a subset of the methods exposed.

Specific usages:

  • GrpcSslContexts
  • GrpcSslContexts.configure
  • NegotiationType
  • NettyChannelBuilder
  • NettyServerBuilder
@email2liyang
Copy link

Hi, @carl-mastrangelo

  1. Do you have any data shows that how unstable it is for NettyChannelBuilder?
  2. Is the instance of ManagedChannel build by NettyChannelBuilder thread safe
  3. what's the recommended channel lifecycle management strategy
  4. can it be shared between different stubs for a same gRPC #server?

@carl-mastrangelo
Copy link
Contributor Author

  1. NettyChannelBuilder is pretty stable, and likely to be around for a long time, but we reserve the right to change its interface at any time. We try to avoid such changes, but it is not held to the same level of API stability.
  2. I believe it is thread safe, but you should be interacting with the channel very rarely.
  3. You should make a channel, and wrap it in a stub. Use the stub as the entry point. When you are ready to shutdown the channel, just call shutdown and then awaitTermination to wait for all RPCs to finish.
  4. Yes.

In the future, these kinds of questions would be better answered on the user forum here: https://groups.google.com/forum/#!forum/grpc-io

@ejona86 ejona86 added this to the Unscheduled milestone Aug 22, 2016
@ejona86 ejona86 added the experimental API Issue tracks stabilizing an experimental API label Aug 22, 2016
@hcoona
Copy link

hcoona commented Jan 4, 2019

I've got some questions:

  1. The buildTransportServer & buildTransportFactory method are protected, how could I use the NettyServerBuilder & NettyChannelBuilder?
  2. I'd like to leverage netty resolver mechanism for service discovery, how could I build the netty channal with it? (For example, the DnsNameResolver)

@carl-mastrangelo
Copy link
Contributor Author

@hcoona

  1. Those are protected as they are called by the super class. They don't have a use outside of NCB.
  2. You can use the same event loop with each, but not the same channel. DnsNameResolver is not public API, and isn't specific to netty (okhttp uses it too).

@savannahar68
Copy link

@carl-mastrangelo
On using NettyChannelBuilder for a GRPC Client and using it

.withOption(ChannelOption.SO_TIMEOUT, timeout.getSocketTimeoutInMillis())

gives this error.

WARN i.g.n.s.i.n.b.Bootstrap - Unknown channel option 'SO_TIMEOUT' for channel

Does this mean SO_TIMEOUT is not allowed with NettyChannelBuilder with Grpc and the client service should use withDeadline on stub?

@ejona86
Copy link
Member

ejona86 commented Aug 16, 2023

There are no plans to ever stabilize this API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
experimental API Issue tracks stabilizing an experimental API
Projects
None yet
Development

No branches or pull requests

5 participants