20.10 from 5.0.9 .NET client

Hi

This is possibly related to 20.6.1 from 5.0.9 .NET client .

I’m trying to connect a client using the older 5.0.9 TCP client to a new 20.10 cluster. Tls can be off (they’re all within a private VNET). If I specify the IP of the leader, then connection/queries work fine. If I try specifying all the IPs in a gossip connection string, I get an exception saying the connection was closed.

My gossip results seem fine (to me)… (hitting …:2113/gossip?format=json ).

One thing that may or may not be related is that I cannot set the ExtIp in the yaml file to the IP address of the VM. If I try to set ExtIp I get the exception :

[ 3860,11,21:27:29.464,INF] ========== [“52.165.38.85:2113”] SYSTEM INIT…
[ 3860, 1,21:27:29.483,FTL] Unable to start Kestrel.
System.Net.Sockets.SocketException (10049): The requested address is not valid in its context.

Although if I set it as 0.0.0.0 then it starts and I’m able to hit the leader without issue.

Any suggestions/tips will be highly appreciated. Yes, we’ll be moving to gRPC eventually but want to try and “drop in replace” 20.10 without having to tinker with clients first.

thanks

Ken

Hi @ken.faulkner, could you share the connection string being used, please? You can let the real IPs off obviously.

Hi Yorick,

Sorry for late reply… Christmas holidays and all.

My connection (when failing) is:

var conn = EventStoreConnection.Create(“GossipSeeds=xxx.xxx.xxx.xxx:2113,yyy.yyy.yyy.yyy:2113,zzz.zzz.zzz.zzz:2113; DefaultUserCredentials=admin:changeit; UseSslConnection=false; TargetHost=myfqdn; HttpHostAndPort=myfqdn:2113”);

but if I replace that line with:

var conn = EventStoreConnection.Create( settings,
new Uri(“https://xxx.xxx.xxx.xxx:2113/gossip?format=json”));

where the IP is the leader, then everything is good.

If I hit the gossip endpoint, I get the usual information back. externalTcpIp is correct, externalTcpPort is 1113

I’m suspecting I’m messing up the disabling of TLS. Since when I go to the gossip seed url via browser, I still have to specify https. It will complain about certificate but will give me the info. If I try with http, then I get nothing.

Thoughts?

Thanks

Ken

Hi Ken,

I’m confused because when you said that you used this to create your connection:

var conn = EventStoreConnection.Create( settings,
new Uri(“https://xxx.xxx.xxx.xxx:2113/gossip?format=json”));

This isn’t a valid URI as only tcp and discover schemes are supported in version 5.0.9. That URI is wrong as you are not supposed to give a gossip endpoint to create a connection.

https://developers.eventstore.com/clients/dotnet/5.0/connecting/options.html#uris

Moreover, would you mind sharing the command you used to start each node of your cluster?

It seems you are able to connect to a 20.10 cluster only if you create a single node connection but you can’t create a cluster mode connection when using gossip seeds.

Do I understand your issue correctly?

For the TCP connection, you need to use the TCP client connection string, which is identical to v5 connection string. The new connection string format only applies to gRPC clients.