Details
-
Improvement
-
Resolution: Won't Fix
-
Major
-
2.5.2
-
None
Description
When bootstrapping, the SDK will first start with the CarrierPublicationProvider and try to bootstrap on each node, quitting when bootstrapping was successful or when it runs out of nodes to try. It will then switch to HttpStreamingProvider and try to bootstrap against each node in the servers list, quitting when it successfully bootstraps or when the list runs out of nodes. If the client hasn't bootstrap by the end of this process, then it will throw a BootstrapException which derives from AggregateException.
The problem with this approach is that Memcached buckets will always fail against CarrierPublicationProvider because GET_CONFIG is not supported by Memcached buckets. If the the server list is long, it may take some time for bootstrapping fail for each node using the CCCP provider before trying HTTPStreamingProvider and (hopefully) successfully bootstrapping.
We already have one ticket for allowing a user to configure the client to not use CCCP (NCBC-1577), but we can improve bootstrapping in general by switching between providers when a node attempts to bootstrap.