Apache Geode Native C++ CHANGELOG

Pool Configuration Example and Settings

Connection pools require a standard client/server distributed system and cache configuration settings. You must also configure settings for the locator, server, and pool elements.

  • Locator. Host and port where a server locator is listening.
  • Server. Host and port where a server is listening.
  • Pool. Client/server connection pool.

This page shows examples of creating a pool configuration programmatically using C++ code, and declaratively using XML.

Programmatic Pool Configuration

This example shows a programmatic pool configuration. For a list of the attributes you can configure, see PoolFactory in the API docs.

cache.getPoolManager()
      .createFactory()
      .addLocator("localhost", 34756)
      .setFreeConnectionTimeout(std::chrono::milliseconds(12345))
      .setIdleTimeout(std::chrono::milliseconds(5555))
      .setLoadConditioningInterval(std::chrono::milliseconds(23456))
      .setMaxConnections(7)
      .setMinConnections(3)
      .setPingInterval(std::chrono::milliseconds(12345))
      .setReadTimeout(std::chrono::milliseconds(23456))
      .setRetryAttempts(3)
      .setServerGroup("ServerGroup1")
      .setSocketBufferSize(32768)
      .setStatisticInterval(std::chrono::milliseconds(10123))
      .setSubscriptionAckInterval(std::chrono::milliseconds(567))
      .setSubscriptionEnabled(true)
      .setSubscriptionMessageTrackingTimeout(std::chrono::milliseconds(900123))
      .setSubscriptionRedundancy(0)
      .setThreadLocalConnections(true)
      .create("test_pool_1");

Declarative (File-based) Pool Configuration

This example shows a file-based pool configuration using an XML configuration file. Following the example is a table that describes the XML pool attributes you can configure.

Note: You create an instance of PoolFactory through PoolManager.

<pool free-connection-timeout="12345" idle-timeout="5555"
      load-conditioning-interval="23456"
      max-connections="7" min-connections="3"
      name="test_pool_1" ping-interval="12345"
      read-timeout="23456" retry-attempts="3" server-group="ServerGroup1"
      socket-buffer-size="32768" statistic-interval="10123"
      subscription-ack-interval="567" subscription-enabled="true"
      subscription-message-tracking-timeout="900123"
      subscription-redundancy="0" thread-local-connections="true">
   <locator host="localhost" port="34756"/>
</pool>

Pool Attributes

Attribute Name Description Default
free-connection-timeout

Number of milliseconds (ms) that the client waits for a free connection if max-connections limit is configured and all connections are in use.

10000 ms

idle-timeout

Number of milliseconds to wait for a connection to become idle for load balancing

5000 ms

load-conditioning-interval

Interval in which the pool checks to see if a connection to a specific server should be moved to a different server to improve the load balance.

300000 ms (5 minutes)

max-connections

Maximum number of connections that the pool can create. If all connections are in use, an operation requiring a client-to server-connection is blocked until a connection is available or the free-connection-timeout is reached. If set to -1, there is no maximum. The setting must indicate a cap greater than min-connections.

Note:

If you use this setting to cap your pool connections, disable the pool attribute pr-single-hop-enabled. Leaving single hop enabled can increase thrashing and lower performance.

-1

min-connections

Number of connections that must be created initially.

5

name

Pool name.

ping-interval

Interval between pinging the server to show the client is alive, set in milliseconds. Pings are only sent when the ping-interval elapses between normal client messages. This must be set lower than the server’s maximum-time-between-pings.

10000 ms

pr-single-hop-enabled

Setting used for single-hop access to partitioned region data in the servers for some data operations. See PartitionResolver. See note in thread-local-connections below.

True

read-timeout

Number of milliseconds to wait for a response from a server before the connection times out.

10000

retry-attempts

Number of times to retry an operation after a time-out or exception for high availability. If set to -1, the pool tries every available server once until it succeeds or has tried all servers.

-1

server-group

Server group from which to select connections. If not specified, the global group of all connected servers is used.

empty

socket-buffer-size

Size of the socket buffer, in bytes, on each connection established.

32768

statistic-interval

Default frequency, in milliseconds, with which the client statistics are sent to the server. A value of -1 indicates that the statistics are not sent to the server.

-1

subscription-ack-interval

Number of milliseconds to wait before sending an acknowledgment to the server about events received from the subscriptions.

100

subscription-enabled

Whether to establish a server to client subscription.

False

subscription-message-tracking-timeout

Number of milliseconds for which messages sent from a server to a client are tracked. The tracking is done to minimize duplicate events.

90000

subscription-redundancy

Redundancy for servers that contain subscriptions established by the client. A value of -1 causes all available servers in the specified group to be made redundant.

0

thread-local-connections

Whether the connections must have affinity to the thread that last used them.

Note:

To set this to true, also set pr-single-hop-enabled to false. A true value in pr-single-hop-enabled automatically assigns a false value to thread-local-connections

False

update-locator-list-interval An integer number of milliseconds defining the interval between locator list updates. If the value is less than or equal to 0, the update will be disabled. 5000