добавить возможность менять настройки пула на ходу
На текущий момент оба sync/async пула принимают настройки только на этапе инициализации. Но некоторые из настроек полезно менять уже после запуска пула
Достаточно добавить setter (читаются каждый раз):
routing_acquire_timeoutrebalance_pool_divisorbalance_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
Точно не нужно менять:
dsnenable_discoveryforbidden_tiers