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 NameResolution being Experimental. #1770

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

Tracking Issue for NameResolution being Experimental. #1770

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

Comments

@carl-mastrangelo
Copy link
Contributor

carl-mastrangelo commented May 3, 2016

Specific usages:

  • EquivalentAddressGroup
  • ManagedChannelBuilder.nameResolverFactory
  • NameResolver
  • NameResolverRegistry
  • ResolvedServerInfo
@carl-mastrangelo carl-mastrangelo changed the title Tracking Issue for NameResolution being experimental. Tracking Issue for NameResolution being Experimental. May 3, 2016
@ejona86 ejona86 added this to the Unscheduled milestone Jun 9, 2016
@ejona86 ejona86 added the experimental API Issue tracks stabilizing an experimental API label Aug 22, 2016
@b-hoyt
Copy link

b-hoyt commented Nov 7, 2016

I'm interested Context-aware name resolution. This doesn't seem obviously possible with the current NameResolver API and usage, but I'm not familiar with the broader set of APIs. Thoughts?

@ejona86
Copy link
Member

ejona86 commented Nov 9, 2016

@b-hoyt I don't know what you mean. Context-aware in what way? Why is it not possible with the current API?

@b-hoyt
Copy link

b-hoyt commented Nov 10, 2016

Say for example each client making an RPC call wants to provide hints to name resolution for how the NameResolver might resolve some targetUri that represents an abstract destination "||map_service||". The clients provide these hints, which may vary between requests, as value in the current context.

I can picture how an interceptor, which has access to the Context, may have a reference to the NameResolver in order to supply it with the hints. The NameResolver could do its thing using those hints and updated the associated Listener with the fully ResolvedServerInfos.

But there is no distinction between the ResolvedServerInfos for in-flight-request-A vs. in-flight-request-B, in other words Context scope < ResolvedServerInfos scope

@zhangkun83
Copy link
Contributor

@b-hoyt Name resolution is in the Channel scope, which outlives the Call scope. Allowing individual RPC calls to influence name resolution simply doesn't fit in our architecture.

@ejona86
Copy link
Member

ejona86 commented Apr 5, 2017

@b-hoyt, I'd suggest writing a Channel (not even interrceptor) that creates Channels on-the-fly based on the Context, and re-uses them as appropriate. The other option is to plug into the LB API some, since in some ways GRPCLB does something similar to this.

But I don't see NameResolver supporting this case. As @zhangkun83 mentioned, it is pretty incompatible with the architecture.

@carl-mastrangelo
Copy link
Contributor Author

carl-mastrangelo commented Apr 11, 2019

API meeting notes:

  • Make UNKNOWN_CONFIG package private
  • Make ResolutionResults and ResolvedAddress servers field addresses
  • Modify parseLoadbalancingPolicyConfig should not suggest implementing equals or hashCode.

@ejona86
Copy link
Member

ejona86 commented Apr 11, 2019

Actually, it was that UNKNOWN_CONFIG would be private, within LoadBalancerProvider.

@ejona86
Copy link
Member

ejona86 commented Jun 16, 2020

#7133 is for removing NameResolver.Factory.

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

4 participants