добавить возможность менять настройки пула на ходу

На текущий момент оба sync/async пула принимают настройки только на этапе инициализации. Но некоторые из настроек полезно менять уже после запуска пула

Достаточно добавить setter (читаются каждый раз):

  • routing_acquire_timeout
  • rebalance_pool_divisor
  • balance_strategy

Добавление сеттера влечет за собой доп изменения логики:

  • max_size Если с увеличением max_size параметра нет никаких проблем, то с уменьшением сейчас не сработает, т.к. у нас просто нет функционала, который выкидывает соединения из пула из-за размера. В целом кажется, что можно добавить в ленивом виде -- учитывать это на момент release, т.е. не возвращать в пул соединения, если это превысит размер. Дополнительно, можно подумать о запрете увеличивать max_size, если выключена топология (то есть не работают reconcile/rebalance)

Настройки, которые прокидываются дальше (зашиты на open этапе сейчас)

  • topology_update_interval -> TopologyTracker._interval нужно в сеттере помимо присваивания делать trigger(), если мы хотим, чтобы новый интервал прямо сразу применялся
  • query_metadata_cache_size -> QueryMetadataCache._max_size поскольку вытеснение закешированных записей происходит по одной штуке, нужно будет добавить resize или вроде того, чтобы поддержать изменяемость

Важно: тут самым дорогим действием будет изменение значений вида None -> Some, потому что такое изменение должно и сами сервисы запускать. Стоит дополнительно проработать данный момнет. Возможно, нам стоит поддерживать только изменения Some->Some

Точно не нужно менять:

  • dsn
  • enable_discovery
  • forbidden_tiers