riok/Kreya

No address resolver configured for the scheme 'grpc'

iancullinane opened this issue · 2 comments

Describe the bug

When attempting gRPC to a local VM running at address 172.17.8.101:8080 I get the above error and stacktrace (in the context below).

To Reproduce

Steps to reproduce the behavior:

  1. Have a VM (in my case vagrant with flatcar OS, which also has an envoy container for service mesh)
  2. Attempt to hit IP address with gRPC mode, everything else the same.

Expected behavior

A successful gRPC request.

From the stacktrace below

{
  "kreyaVersion": "1.13.0",
  "releaseChannel": "stable",
  "osDescription": "Darwin 21.6.0 Darwin Kernel Version 21.6.0: Thu Jun  8 23:57:12 PDT 2023; root:xnu-8020.240.18.701.6~1/RELEASE_X86_64",
  "osVersion": "Unix 12.6.7",
  "osArch": "X64",
  "processArch": "X64",
  "runtimeIdentifier": "osx-x64",
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)"
}

Environment (if possible, copy the information from the error dialog or the About menu):

From the stacktrace below.

{
  "kreyaVersion": "1.13.0",
  "releaseChannel": "stable",
  "osDescription": "Darwin 21.6.0 Darwin Kernel Version 21.6.0: Thu Jun  8 23:57:12 PDT 2023; root:xnu-8020.240.18.701.6~1/RELEASE_X86_64",
  "osVersion": "Unix 12.6.7",
  "osArch": "X64",
  "processArch": "X64",
  "runtimeIdentifier": "osx-x64",
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)"
}

VM is flatcar running on vagrant:

==> vagrant: A new version of Vagrant is available: 2.4.1 (installed version: 2.3.4)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

Last login: Mon Feb  5 22:20:13 UTC 2024 from 10.0.2.2 on pts/2
Flatcar Container Linux by Kinvolk stable (2512.2.0)

Additional context

System.InvalidOperationException: No address resolver configured for the scheme 'grpc'.
   at Grpc.Net.Client.GrpcChannel.GetResolverFactory(GrpcChannelOptions options)
   at Grpc.Net.Client.GrpcChannel..ctor(Uri address, GrpcChannelOptions channelOptions)
   at Grpc.Net.Client.GrpcChannel.ForAddress(Uri address, GrpcChannelOptions channelOptions)
   at Kreya.Grpc.Core.Utils.GrpcChannelBuilder.NewChannel(IGrpcChannelOptions options, IOperationAuthState authState, Nullable`1 clientCertId, Boolean infiniteTimeout)
   at Kreya.Grpc.Core.Invoker.GrpcInvokerFactory.GetInstance(MethodDescriptor methodDescriptor, GrpcInvokerOptions options, GrpcInvokerTracer tracer)
   at Kreya.Grpc.Core.Invoker.GrpcInvokerFactory.NewInvoker(IOperationWithDetail`2 operation, GrpcInvokerTracer tracer, CancellationToken cancellationToken)
   at Kreya.Core.Api.Invoker.OperationInvokerFactoryAdapter`4.NewInvoker(IOperationWithDetail operationContent, InvokerEventTracer invokerEventTracer, CancellationToken cancellationToken)
   at Kreya.Core.Invoker.InvokerService.InitializeInvokerAdapter(OperationInvoker invoker, IOperationWithDetail operation, EventTracer eventTracer, CancellationToken cancellationToken)
   at Kreya.Core.Invoker.InvokerScope.<>c__DisplayClass30_0.<<Initialize>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Kreya.Core.Invoker.InvokerScope.Initialize()
   at Kreya.UI.Invoker.InvokerUiService.<>c.<<Start>b__7_0>d.MoveNext()
--- End of stack trace from previous location ---
   at Kreya.UI.Invoker.InvokerUiService.WithInvokerScope(Guid invokerId, Func`2 func)
   at Kreya.UI.Invoker.InvokerUiService.WithInvokerScope(Guid invokerId, Func`2 func)
   at SpiderEye.Bridge.ApiMethod.InvokeAsync(Object instance, Object parameter)
   at SpiderEye.Bridge.WebviewBridge.InvokeWithDependencyInjection(IDependencyInjectionApiMethod apiMethod, Object parameters)
   at SpiderEye.Bridge.WebviewBridge.InvokeWithDependencyInjection(IDependencyInjectionApiMethod apiMethod, Object parameters)
   at SpiderEye.Bridge.WebviewBridge.ResolveCall(String id, String parameters)

I suppose you try to call the service with grpc://172.17.8.101:8080 as the endpoint?

Try to use http://172.17.8.101:8080 or https://172.17.8.101:8080, as Kreya expects either http or https as the scheme.

Kreya 1.13.1 now shows a notification, indicating that either http or https must be chosen as the scheme