When connection configs change, underlying pools should be destroyed and recreated. So far, this is for ldap only.
There's a thread running that checks for config changes every minute (can be changed via grouper property grouper.externalSystem.connectionRefresher.checkIntervalInSeconds). The thread is started when Grouper starts up.
For the ldap case, it'll remove the existing pool and kill it off when it's no longer being used. In the meantime, new connections will use a new pool with the new config.
When configs are changed using the external system UI screen, the cleanup happens immediately for the UI to make sure that if the connection is tested immediately afterwards, then it'll use the latest config.