Controller dead lock with database connections stuck in <code>idle in transaction</code> state
</td>
<td style={{verticalAlign: 'middle'}}>
If you configured a controller to have the maximum number of open connections and it was under enough load from worker requests, the controller can get stuck. Once the controller consumed all of the database connections, it would leave them in an <code>idle in transaction</code> state. In extreme cases, this can cause Boundary clusters to become unresponsive.
<br /><br />
The cause of this problem was due to a combination of issues including the lack of a request timeout for worker-to-controller GRPC requests, and the session repository attempting to use a separate database connection to retrieve a KMS wrapper, after already starting a database transaction.
<br /><br />
This issue is fixed in release 0.16.1. KMS operations now occur outside of the transaction, and a max request duration for GRPC requests is now set based on the cluster's listener configuration.
<br /><br />
<a href="/boundary/tutorials/self-managed-deployment/upgrade-version">Upgrade to the latest version of Boundary</a>