.NET client won't communicate with cluster successfully configured with hostnames

Running Windows 7 x64 Couchbase 2.0.0
I have a cluster of 2 servers successfully configured to use hostnames. They both show as "up" in the console.
Host 1: host-a.domain.com
Host 2: host-a.domain.com
I have them configured in their respective config sections to use hostnames as well:

<memcached protocol="Binary">
            <servers>
                <add address="host-a.domain.com" port="11211" />
                <add address="host-a.domain.com" port="11211" />
            </servers>
            <socketPool connectionTimeout="00:00:02" />
        </memcached>
--snip--
        <servers bucket="lolwut">
            <add uri="http://host-a.domain.com:8091/pools" />
            <add uri="http://host-b.domain.com:8091/pools" />
        </servers>

Then, when I actually call an operation on the CouchbaseClient the operation returns false, unsuccessful.
More intriguingly, if I watch the "ops per second" for the bucket I'm targeting it appears to complete the operation! The result is just never delivered by the .NET client.
Everything works perfectly when Couchbase Server is bound to IP instead of hostname (client configs use hostnames in this case as well).
Upgrading to 2.0.1 (which wipes out the hostname binding btw), did not fix the issue.

i created an issue describing this problem under http://www.couchbase.com/issues/browse/NCBC-375

1 Answer

« Back to question.

I can confirm this. Running CB 2.0.1 CE, client version 1.2.4. As that was mentioned before Ops per second graph shows that something happened, but nothing has been stored (on set) in bucket.

I'll note too that I ruled out any IPv4 mixing with IPv6 issues by disabling the IPv6 stack on both the servers and client machines. Observing TCP traffic and DNS lookups between nodes/clients using Wireshark on both the servers and the client confirmed that all communication was being done over IPv4.

One more interesting thing. After some time (one night) it started work properly. Nothing changed. Maybe it's some kind of magic.

Unfortunately that doesn't give me much confidence pushing this out to a production environment. Looks like IP binding is the only reliable solution until someone at Couchbase can at least comment on this. That itself wouldn't be a huge deal if an IP address change didn't result in complete node data loss and the need to completely reconfigure the the service.

Is there any update on using hostnames instead of IPs and being minimally functional?