Hi guys, I’m a little confused about how a running client’s configured list of servers would be affected by changes to the cluster’s member nodes. I think it’s a general question, not specific to the dotnet client.
Say my cluster consists of NodeA, NodeB and NodeC and my app’s configured list of servers includes all of these.
While the app is running, in a single rebalance, I add NodeD, NodeE and remove NodeA.
How would this affect my app?
I guess my confusion is that the app’s can still connect to the cluster using the address of NodeB and NodeC. As I understand from the documentation, the server list is only used in bootstrapping.
My worry is that the app could potentially request data that is not present on any of the Couchbase Nodes with which it is configured to connect.
Thanks!
Server version: Couchbase Community 6.0.0 (going to upgrade soon); Client version:.net sdk 2.7.18
You are correct, the server list is only used during bootstrapping. As part of the bootstrap process, the current cluster map is downloaded from the cluster, giving details about every node in the cluster and what data and services resides on each node. After that, the cluster map is used for all purposes, the connection string is never used again.
If your cluster topology changes, this change is actively pushed down to the SDK (in most cases, some legacy cases involve polling). The SDK then updates and starts using the new cluster map rather than the old map. This means you can actually remove every single node from the cluster that was in the connection string and the SDK will continue working perfectly (until you recycle the app and it needs to bootstrap again, anyway).