Mysql Hashicorp Vault in HA leaving multiple sleep connections with Mysql

Setup: Two Vault nodes configured in HA with one mysql storage backend configured with autounseal with transit method.

Vault HA standby node making multiple connection with Mysql storage backend and leaving connection in sleep mode. This consume all available connection and mysql throughs 1040 error on reaching max connections.

MariaDB [mysql]> show processlist;
±-----±------------±--------------------±------±--------±-----±-------------------------±-----------------±---------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
±-----±------------±--------------------±------±--------±-----±-------------------------±-----------------±---------+
| 1 | system user | | NULL | Daemon | NULL | InnoDB purge coordinator | NULL | 0.000 |
| 2 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 3 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 4 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 5 | system user | | NULL | Daemon | NULL | InnoDB shutdown handler | NULL | 0.000 |
| 6324 | root | localhost | mysql | Query | 0 | Init | show processlist | 0.000 |
| 6833 | uvault | 192.168.0.213:45720 | NULL | Sleep | 0 | | NULL | 0.000 |
| 6834 | uvault | 192.168.0.213:45730 | NULL | Sleep | 385 | | NULL | 0.000 |
| 6835 | uvault | 192.168.0.213:45732 | NULL | Sleep | 385 | | NULL | 0.000 |
| 6838 | uvault | 192.168.0.213:45736 | NULL | Sleep | 5 | | NULL | 0.000 |
| 6852 | uvault | serlog:56304 | NULL | Sleep | 0 | | NULL | 0.000 |
| 6853 | uvault | serlog:56306 | NULL | Sleep | 0 | | NULL | 0.000 |
| 6854 | uvault | serlog:56316 | NULL | Sleep | 370 | | NULL | 0.000 |
| 6855 | uvault | serlog:56320 | NULL | Sleep | 360 | | NULL | 0.000 |
| 6856 | uvault | serlog:56322 | NULL | Sleep | 350 | | NULL | 0.000 |
| 6857 | uvault | serlog:56324 | NULL | Sleep | 340 | | NULL | 0.000 |
| 6858 | uvault | serlog:56326 | NULL | Sleep | 330 | | NULL | 0.000 |
| 6859 | uvault | serlog:56328 | NULL | Sleep | 320 | | NULL | 0.000 |
| 6860 | uvault | serlog:56330 | NULL | Sleep | 310 | | NULL | 0.000 |
| 6861 | uvault | serlog:56332 | NULL | Sleep | 300 | | NULL | 0.000 |
| 6862 | uvault | serlog:56334 | NULL | Sleep | 290 | | NULL | 0.000 |
| 6863 | uvault | serlog:56336 | NULL | Sleep | 280 | | NULL | 0.000 |
| 6864 | uvault | serlog:56338 | NULL | Sleep | 270 | | NULL | 0.000 |
| 6865 | uvault | serlog:56340 | NULL | Sleep | 260 | | NULL | 0.000 |
| 6866 | uvault | serlog:56342 | NULL | Sleep | 250 | | NULL | 0.000 |
| 6867 | uvault | serlog:56344 | NULL | Sleep | 240 | | NULL | 0.000 |
| 6868 | uvault | serlog:56346 | NULL | Sleep | 230 | | NULL | 0.000 |
| 6869 | uvault | serlog:56348 | NULL | Sleep | 220 | | NULL | 0.000 |
| 6870 | uvault | serlog:56354 | NULL | Sleep | 210 | | NULL | 0.000 |
| 6871 | uvault | serlog:56356 | NULL | Sleep | 200 | | NULL | 0.000 |
| 6872 | uvault | serlog:56358 | NULL | Sleep | 190 | | NULL | 0.000 |
| 6873 | uvault | serlog:56360 | NULL | Sleep | 180 | | NULL | 0.000 |
| 6874 | uvault | serlog:56362 | NULL | Sleep | 170 | | NULL | 0.000 |
| 6875 | uvault | serlog:56364 | NULL | Sleep | 160 | | NULL | 0.000 |
| 6876 | uvault | serlog:56366 | NULL | Sleep | 150 | | NULL | 0.000 |
| 6877 | uvault | serlog:56368 | NULL | Sleep | 140 | | NULL | 0.000 |
| 6878 | uvault | serlog:56370 | NULL | Sleep | 130 | | NULL | 0.000 |
| 6879 | uvault | serlog:56372 | NULL | Sleep | 120 | | NULL | 0.000 |
| 6880 | uvault | serlog:56374 | NULL | Sleep | 110 | | NULL | 0.000 |
| 6881 | uvault | serlog:56376 | NULL | Sleep | 100 | | NULL | 0.000 |
| 6882 | uvault | serlog:56378 | NULL | Sleep | 90 | | NULL | 0.000 |
| 6883 | uvault | serlog:56380 | NULL | Sleep | 80 | | NULL | 0.000 |
| 6884 | uvault | serlog:56382 | NULL | Sleep | 70 | | NULL | 0.000 |
| 6885 | uvault | serlog:56384 | NULL | Sleep | 60 | | NULL | 0.000 |
| 6886 | uvault | serlog:56386 | NULL | Sleep | 50 | | NULL | 0.000 |
| 6887 | uvault | serlog:56388 | NULL | Sleep | 40 | | NULL | 0.000 |
| 6888 | uvault | serlog:56390 | NULL | Sleep | 30 | | NULL | 0.000 |
| 6889 | uvault | serlog:56392 | NULL | Sleep | 20 | | NULL | 0.000 |
| 6890 | uvault | serlog:56394 | NULL | Sleep | 10 | | NULL | 0.000 |
| 6891 | uvault | serlog:56396 | NULL | Sleep | 0 | | NULL | 0.000 |
±-----±------------±--------------------±------±--------±-----±-------------------------±-----------------±---------+
50 rows in set (0.001 sec)

MariaDB [mysql]>

Following configuration value not working Max_idle_connection value of no effect.

storage “mysql” {
database = “vault”
username = “uvault”
password = “vau20@19”
address = “192.168.0.212:3306”
ha_enabled = “true”
lock_table = “vault_lock”
max_idle_connections = “10”
max_connection_lifetime = “360000”
}

Only Max_connection_lifetime is working. but making this value small is switching active node on expiration of max_connection_lifetime duration.

AS comment input on hashicorp page, this says to increase timeout which appears to be further negatively impact this situation.

High Availability – the MySQL storage backend supports high availability. Note that due to the way mysql locking functions work they are lost if a connection dies. If you would like to not have frequent changes in your elected leader you can increase interactive_timeout and wait_timeout MySQL config to much higher than default which is set at 8 hours.

Please suggest how to restrict making these connections which are left without properly closing and left as sleep connection.