Discovering Locators Dynamically

A background thread periodically queries the locator for any other locators joining the distributed system.

However, if locator A (to which the client is connected) goes down before it discovers locator B, locator B is never discovered even though it is alive and the client receives a NoLocatorsAvailable exception.

One connection is attached to every application thread that is local to the respective thread. This is known as a thread local connection.

In this case, to perform any cache operation the client is not required to obtain a connection from pool. Instead the thread local connection of the client is used.

A thread local connection can be released by invoking the Pool::releaseThreadLocalConnection() method. The released connection is returned to the pool. If the number of threads is larger than the number of max-connections, the client throws an AllConnectionsInUseException after the free-connection-timeout lapses, unless the Pool::releaseThreadLocalConnection() method is used judiciously.

If a connection expires or the server goes down on which the connection was established, a thread local connection is immediately replaced with a good connection obtained from the pool.