отключение сервисов пула на ходу (Some -> None)

На текущий момент topology tracker и query metadata service останавливаются только при закрытии пула. При этом возможность выключить отдельный сервис без перезапуска всего пула может быть полезна при повышенной нагрузке или проблемах с производительностью.

Нужно поддержать изменение:

  • topology_update_interval: Some -> None
  • query_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 методы.

Важно: учесть случай одновременного отключения сервиса и закрытия пула