We are running Keycloak on MS Azure with MS Azure SQL
We are regularly experiencing connection problems to the Azure DB where some connections drop and new connections cannot be established but existing connections still work
With Keycloak based on Wildly/IronJacamar as pooling implementation, there were no customer-facing errors - with Quarkus/Agroal-based Keycloak 20 requests cannot be processed anymore
Observed behaviour:
GIVEN there are database connection problems
AND the current number of connections is below MIN_SIZE
AND there are still valid connections in the pool
AND new connections cannot be created
WHEN a connection is requested from the pool
THEN no connection can be obtained and the request fails
Expected behaviour:
GIVEN there are database connection problems
AND the current number of connections is below MIN_SIZE
AND there are still valid connections in the pool
AND new connections cannot be created
WHEN a connection is requested from the pool
THEN then an existing connection from the pool is returned and the request succeeds
While it might be a good idea to trigger filling up the pool to MIN_SIZE, the current request should not incur the delay and probably the failure of obtaining a new connection - IMHO filling up should happen concurrently