@@ -192,6 +192,30 @@ Status initializeGlobalShardingState(OperationContext* opCtx,
192192 connPoolOptions.refreshRequirement = Milliseconds (ShardingTaskExecutorPoolRefreshRequirementMS);
193193 connPoolOptions.refreshTimeout = Milliseconds (ShardingTaskExecutorPoolRefreshTimeoutMS);
194194
195+ if (connPoolOptions.refreshRequirement <= connPoolOptions.refreshTimeout ) {
196+ auto newRefreshTimeout = connPoolOptions.refreshRequirement - Milliseconds (1 );
197+ warning () << " ShardingTaskExecutorPoolRefreshRequirementMS ("
198+ << connPoolOptions.refreshRequirement
199+ << " ) set below ShardingTaskExecutorPoolRefreshTimeoutMS ("
200+ << connPoolOptions.refreshTimeout
201+ << " ). Adjusting ShardingTaskExecutorPoolRefreshTimeoutMS to "
202+ << newRefreshTimeout;
203+ connPoolOptions.refreshTimeout = newRefreshTimeout;
204+ }
205+
206+ if (connPoolOptions.hostTimeout <=
207+ connPoolOptions.refreshRequirement + connPoolOptions.refreshTimeout ) {
208+ auto newHostTimeout =
209+ connPoolOptions.refreshRequirement + connPoolOptions.refreshTimeout + Milliseconds (1 );
210+ warning () << " ShardingTaskExecutorPoolHostTimeoutMS (" << connPoolOptions.hostTimeout
211+ << " ) set below ShardingTaskExecutorPoolRefreshRequirementMS ("
212+ << connPoolOptions.refreshRequirement
213+ << " ) + ShardingTaskExecutorPoolRefreshTimeoutMS ("
214+ << connPoolOptions.refreshTimeout
215+ << " ). Adjusting ShardingTaskExecutorPoolHostTimeoutMS to " << newHostTimeout;
216+ connPoolOptions.hostTimeout = newHostTimeout;
217+ }
218+
195219 auto network =
196220 executor::makeNetworkInterface (" NetworkInterfaceASIO-ShardRegistry" ,
197221 stdx::make_unique<ShardingNetworkConnectionHook>(),
0 commit comments