-
Type: Epic
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: API, Cluster Management, Configuration
-
None
-
Done
-
Allow configuration of heartbeat background threads to be set via API
The Java driver, as of version 2.9.0, supports automatic failover of mongos instances (JAVA-381). The parameters that determine the wait time when the active mongos becomes unavailable, until choosing a new mongos, are only available as system properties. They cannot be set directly via the driver API. This ticket is to add API support for directly specifying the failover timeout value.
For the record, the relevant system properties, and their default values, are:
updaterIntervalMS = Integer.parseInt(System.getProperty("com.mongodb.updaterIntervalMS", "5000")); updaterIntervalNoMasterMS = Integer.parseInt(System.getProperty("com.mongodb.updaterIntervalNoMasterMS", "10")); mongoOptionsDefaults.connectTimeout = Integer.parseInt(System.getProperty("com.mongodb.updaterConnectTimeoutMS", "20000")); mongoOptionsDefaults.socketTimeout = Integer.parseInt(System.getProperty("com.mongodb.updaterSocketTimeoutMS", "20000"));
The maximum time to failover to a new mongos is:
Sum of: <com.mongodb.updaterIntervalMS> + max(com.mongodb.updaterSocketTimeoutMS, com.mongodb.updaterConnectTimeoutMS, ping time) for each mongos
The new options are:
- MongoClientOptions#getHeartbeatFrequency
- MongoClientOptions#getHeartbeatConnectRetryFrequency
- MongoClientOptions#getHeartbeatConnectTimeout
- MongoClientOptions#getHeartbeatSocketTimeout
- MongoClientOptions#getHeartbeatThreadCount