connection to cluster using gossip seeds fails (client api)

Hi,

I’m trying to setup OSS cluster by connecting to it using TCP client. I set gossip seeds manually, however exceptions about missing dns is popping out.

My connection is the same as in documentation:

  EventStoreConnection.Create(
ConnectionSettings.Create().KeepReconnecting(),
  ClusterSettings.Create()
      .WithGossipTimeoutOf(TimeSpan.FromMilliseconds(500))
      .WithGossipSeeds(new []
                           {
                               new IPEndPoint(IPAddress.Parse("192.168.0.1"), 2113),
                               new IPEndPoint(IPAddress.Parse("192.168.0.2"), 2113),
                               new IPEndPoint(IPAddress.Parse("192.168.0.3"), 2113)
                           }));

This results in DNS validation exceptions. I’ve looked into client source and it seems it always requires to pass valid dns record.

Am I missing something here or connection using gossip seeds just doesn’t work?

Thanks for the help.

This was a bug in the client API.

Your PR is merged into the dev branch. Thanks!

James

Is this still an issue with the 3.0.0-rc2 nuget package?

I have this code:

var serverIp = Dns.GetHostEntry(“my.server.name”);

var gossipSeeds = new[]
{
new IPEndPoint(serverIp.AddressList.First(), 1113),
new IPEndPoint(serverIp.AddressList.First(), 2113),
new IPEndPoint(serverIp.AddressList.First(), 3113)
};

var connectionSettings = ConnectionSettings.Create().EnableVerboseLogging().UseConsoleLogger();

var clusterSettings = ClusterSettings.Create().WithGossipSeeds(gossipSeeds);

var connection = EventStoreConnection.Create(connectionSettings, clusterSettings);
//var connection = EventStoreConnection.Create(new IPEndPoint(serverIp.AddressList.First(), 1113));

connection.Connect();

If I try and run that without SetClusterDns it blows up saying it can’t be null, if I set it to the server name that all the nodes are running on (even though just want to use gossip seeds) it fails to discover any candidates.

The cluster is up, and I can connect to nodes individually (the commented out line above) without any problems.

Hi Steve,

I’ll need to check, but if your PR was merged into dev when I said it was (which I guess it was), it will be in 3.0.2-rc2.

Cheers,

James

I can confirm, that this fix is present in 3.0RC. Gossiping works fine.

How? If I don't specify a DNS lookup it blows up with a non-null assertion, if I do then it doesn't connect.

Something I am missing?

Looking at the code in Github, I really don’t see how this could be working without DNS:

https://github.com/EventStore/EventStore/blob/master/src/EventStore/EventStore.ClientAPI/ClusterSettings.cs#L45

With verbose logging on all I get is 10 of these:

Discovering attempt 1/10 failed: no candidate found.

Followed by an exception.

The fix was for a different problem which impacted both scenarios dns and manual. If I now remember correctly i immediately switched to dns mode (i’m not using manual seed configs anymore). So it is very possible that this issue still persists. I think that two similar bugs were reported for similar functionality and it got lost.

The issue is still there. I’m looking into it today, should be fixed on dev shortly.

James