Outbound connections held by ConnectionTable may be thread-owned or
shared. Thread-owned connections are held in a map in a ThreadLocal for
exclusive use by a thread. These are created if you set
"conserve-sockets=false" when creating your cache. Shared connections
are in common tables used by all threads.
There are also "receiver" connections that are not in these tables.
These are created when another process connects to the server-port in
TCPConduit and are tracked in a different collection in ConnectionTable.
Outbound connections are removed from the table if they are found to be
closed when some thread goes to use them. Inbound "receiver"
connections are removed from their collection in ConnectionTable when
the inbound socket closes.
Connections are also removed from the table if the process they are
connected to leaves the distributed system. This is done by
GMSMembershipManager.
Connections are also shutdown and removed from ConnectionTable if you
set a non-zero "socket-lease-time". The default for this setting is
60,000 milliseconds.
Finally, all connections are shutdown and removed from ConnectionTable
when the cache closes.
On 6/29/17 5:18 AM, Vahram Aharonyan wrote:
Hi All,
We have few questions about
org.apache.geode.internal.tcp.ConnectionTable.
1. Is it a common/global table that keeps all connections to all other
nodes and whoever tries to open a connection to a different node just
picks it from this table?
2. Which flow is responsible for closing a connection and removing it
from the ConnectionTable?
3. We see that there are high amount of connections in the table and
they are all marked as closed. We would like to understand what
exactly is holding those to be removed from the table?
Thanks,
Vahram.