отключение сервисов пула на ходу (Some -> None)
На текущий момент topology tracker и query metadata service останавливаются только при закрытии пула. При этом возможность выключить отдельный сервис без перезапуска всего пула может быть полезна при повышенной нагрузке или проблемах с производительностью.
Нужно поддержать изменение:
topology_update_interval:Some -> Nonequery_metadata_cache_size:Some -> None
В случае topology_update_interval -> None необходимо остановить topology tracker, закрыть его техническое соединение и прекратить дальнейшие refresh/reconcile. Текущий состав пула при этом меняться не должен.
В случае query_metadata_cache_size -> None необходимо остановить query metadata service вместе с фоновыми запросами и техническим соединением. После этого запросы должны продолжить выполняться без использования metadata и shard-aware routing.
Обычный setter здесь может не подойти: в sync остановка сервиса является блокирующей операцией, а в async требует await. Возможно, для отключения стоит добавить отдельные sync/async методы.
Важно: учесть случай одновременного отключения сервиса и закрытия пула