I have a problem right now. I am developing somewith for windows with GRPC 
for C#. For that, I need name resolution in my GRPC application. To make it 
easy, the name server is also part of one instance of the program and 
implemented as GRPC service. So the application is mostly a container for 
GRPC services.

The channels should be resolved on the first RPC call. Therefore, I wanted 
to solve this by implementing a CallInvoker (since clients all can get 
Channel or CallInvoker, and Channel doesn't allow this kind of 
modification). My CallInvoker basically calls the ResolveName method from 
my GRPC name service in the CreateCall method. Sounds easy, but the problem 
is, that since my GRPC services are using that, this could be run from a 
GRPC thread (CompletionQueue). So to avoid the problems I had with 
https://github.com/grpc/grpc/issues/6948 I would have to call it async. But 
CallInvoker does not allow to run anything async, since all the Task stuff 
is done deeper in AsyncCall. And if I use Task.Run to make the call 
asynchronous in a worker thread, this works only for one level. In the next 
level, it would get stuck...

The best would be to avoid the CallInvoker all together and just use a 
resolver plugin as described in 
https://github.com/grpc/grpc/blob/master/doc/naming.md but it seems that 
the C# library is not supporting it, and my workaround is also not working 
reliable.

Any ideas on getting a resolver plugin to work with C# or to fix using GRPC 
calls in CallInvoker?

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to grpc-io+unsubscr...@googlegroups.com.
To post to this group, send email to grpc-io@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/15e7a575-f233-45a6-9280-5c0107ed88b8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to