amazonka-rds-2.0: gen/Amazonka/RDS/Types/ConnectionPoolConfigurationInfo.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.RDS.Types.ConnectionPoolConfigurationInfo
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.RDS.Types.ConnectionPoolConfigurationInfo where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
-- | Displays the settings that control the size and behavior of the
-- connection pool associated with a @DBProxyTarget@.
--
-- /See:/ 'newConnectionPoolConfigurationInfo' smart constructor.
data ConnectionPoolConfigurationInfo = ConnectionPoolConfigurationInfo'
{ -- | The number of seconds for a proxy to wait for a connection to become
-- available in the connection pool. Only applies when the proxy has opened
-- its maximum number of connections and all connections are busy with
-- client sessions.
connectionBorrowTimeout :: Prelude.Maybe Prelude.Int,
-- | One or more SQL statements for the proxy to run when opening each new
-- database connection. Typically used with @SET@ statements to make sure
-- that each connection has identical settings such as time zone and
-- character set. This setting is empty by default. For multiple
-- statements, use semicolons as the separator. You can also include
-- multiple variables in a single @SET@ statement, such as @SET x=1, y=2@.
initQuery :: Prelude.Maybe Prelude.Text,
-- | The maximum size of the connection pool for each target in a target
-- group. The value is expressed as a percentage of the @max_connections@
-- setting for the RDS DB instance or Aurora DB cluster used by the target
-- group.
maxConnectionsPercent :: Prelude.Maybe Prelude.Int,
-- | Controls how actively the proxy closes idle database connections in the
-- connection pool. The value is expressed as a percentage of the
-- @max_connections@ setting for the RDS DB instance or Aurora DB cluster
-- used by the target group. With a high value, the proxy leaves a high
-- percentage of idle database connections open. A low value causes the
-- proxy to close more idle connections and return them to the database.
maxIdleConnectionsPercent :: Prelude.Maybe Prelude.Int,
-- | Each item in the list represents a class of SQL operations that normally
-- cause all later statements in a session using a proxy to be pinned to
-- the same underlying database connection. Including an item in the list
-- exempts that class of SQL operations from the pinning behavior. This
-- setting is only supported for MySQL engine family databases. Currently,
-- the only allowed value is @EXCLUDE_VARIABLE_SETS@.
sessionPinningFilters :: Prelude.Maybe [Prelude.Text]
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'ConnectionPoolConfigurationInfo' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'connectionBorrowTimeout', 'connectionPoolConfigurationInfo_connectionBorrowTimeout' - The number of seconds for a proxy to wait for a connection to become
-- available in the connection pool. Only applies when the proxy has opened
-- its maximum number of connections and all connections are busy with
-- client sessions.
--
-- 'initQuery', 'connectionPoolConfigurationInfo_initQuery' - One or more SQL statements for the proxy to run when opening each new
-- database connection. Typically used with @SET@ statements to make sure
-- that each connection has identical settings such as time zone and
-- character set. This setting is empty by default. For multiple
-- statements, use semicolons as the separator. You can also include
-- multiple variables in a single @SET@ statement, such as @SET x=1, y=2@.
--
-- 'maxConnectionsPercent', 'connectionPoolConfigurationInfo_maxConnectionsPercent' - The maximum size of the connection pool for each target in a target
-- group. The value is expressed as a percentage of the @max_connections@
-- setting for the RDS DB instance or Aurora DB cluster used by the target
-- group.
--
-- 'maxIdleConnectionsPercent', 'connectionPoolConfigurationInfo_maxIdleConnectionsPercent' - Controls how actively the proxy closes idle database connections in the
-- connection pool. The value is expressed as a percentage of the
-- @max_connections@ setting for the RDS DB instance or Aurora DB cluster
-- used by the target group. With a high value, the proxy leaves a high
-- percentage of idle database connections open. A low value causes the
-- proxy to close more idle connections and return them to the database.
--
-- 'sessionPinningFilters', 'connectionPoolConfigurationInfo_sessionPinningFilters' - Each item in the list represents a class of SQL operations that normally
-- cause all later statements in a session using a proxy to be pinned to
-- the same underlying database connection. Including an item in the list
-- exempts that class of SQL operations from the pinning behavior. This
-- setting is only supported for MySQL engine family databases. Currently,
-- the only allowed value is @EXCLUDE_VARIABLE_SETS@.
newConnectionPoolConfigurationInfo ::
ConnectionPoolConfigurationInfo
newConnectionPoolConfigurationInfo =
ConnectionPoolConfigurationInfo'
{ connectionBorrowTimeout =
Prelude.Nothing,
initQuery = Prelude.Nothing,
maxConnectionsPercent = Prelude.Nothing,
maxIdleConnectionsPercent =
Prelude.Nothing,
sessionPinningFilters = Prelude.Nothing
}
-- | The number of seconds for a proxy to wait for a connection to become
-- available in the connection pool. Only applies when the proxy has opened
-- its maximum number of connections and all connections are busy with
-- client sessions.
connectionPoolConfigurationInfo_connectionBorrowTimeout :: Lens.Lens' ConnectionPoolConfigurationInfo (Prelude.Maybe Prelude.Int)
connectionPoolConfigurationInfo_connectionBorrowTimeout = Lens.lens (\ConnectionPoolConfigurationInfo' {connectionBorrowTimeout} -> connectionBorrowTimeout) (\s@ConnectionPoolConfigurationInfo' {} a -> s {connectionBorrowTimeout = a} :: ConnectionPoolConfigurationInfo)
-- | One or more SQL statements for the proxy to run when opening each new
-- database connection. Typically used with @SET@ statements to make sure
-- that each connection has identical settings such as time zone and
-- character set. This setting is empty by default. For multiple
-- statements, use semicolons as the separator. You can also include
-- multiple variables in a single @SET@ statement, such as @SET x=1, y=2@.
connectionPoolConfigurationInfo_initQuery :: Lens.Lens' ConnectionPoolConfigurationInfo (Prelude.Maybe Prelude.Text)
connectionPoolConfigurationInfo_initQuery = Lens.lens (\ConnectionPoolConfigurationInfo' {initQuery} -> initQuery) (\s@ConnectionPoolConfigurationInfo' {} a -> s {initQuery = a} :: ConnectionPoolConfigurationInfo)
-- | The maximum size of the connection pool for each target in a target
-- group. The value is expressed as a percentage of the @max_connections@
-- setting for the RDS DB instance or Aurora DB cluster used by the target
-- group.
connectionPoolConfigurationInfo_maxConnectionsPercent :: Lens.Lens' ConnectionPoolConfigurationInfo (Prelude.Maybe Prelude.Int)
connectionPoolConfigurationInfo_maxConnectionsPercent = Lens.lens (\ConnectionPoolConfigurationInfo' {maxConnectionsPercent} -> maxConnectionsPercent) (\s@ConnectionPoolConfigurationInfo' {} a -> s {maxConnectionsPercent = a} :: ConnectionPoolConfigurationInfo)
-- | Controls how actively the proxy closes idle database connections in the
-- connection pool. The value is expressed as a percentage of the
-- @max_connections@ setting for the RDS DB instance or Aurora DB cluster
-- used by the target group. With a high value, the proxy leaves a high
-- percentage of idle database connections open. A low value causes the
-- proxy to close more idle connections and return them to the database.
connectionPoolConfigurationInfo_maxIdleConnectionsPercent :: Lens.Lens' ConnectionPoolConfigurationInfo (Prelude.Maybe Prelude.Int)
connectionPoolConfigurationInfo_maxIdleConnectionsPercent = Lens.lens (\ConnectionPoolConfigurationInfo' {maxIdleConnectionsPercent} -> maxIdleConnectionsPercent) (\s@ConnectionPoolConfigurationInfo' {} a -> s {maxIdleConnectionsPercent = a} :: ConnectionPoolConfigurationInfo)
-- | Each item in the list represents a class of SQL operations that normally
-- cause all later statements in a session using a proxy to be pinned to
-- the same underlying database connection. Including an item in the list
-- exempts that class of SQL operations from the pinning behavior. This
-- setting is only supported for MySQL engine family databases. Currently,
-- the only allowed value is @EXCLUDE_VARIABLE_SETS@.
connectionPoolConfigurationInfo_sessionPinningFilters :: Lens.Lens' ConnectionPoolConfigurationInfo (Prelude.Maybe [Prelude.Text])
connectionPoolConfigurationInfo_sessionPinningFilters = Lens.lens (\ConnectionPoolConfigurationInfo' {sessionPinningFilters} -> sessionPinningFilters) (\s@ConnectionPoolConfigurationInfo' {} a -> s {sessionPinningFilters = a} :: ConnectionPoolConfigurationInfo) Prelude.. Lens.mapping Lens.coerced
instance Data.FromXML ConnectionPoolConfigurationInfo where
parseXML x =
ConnectionPoolConfigurationInfo'
Prelude.<$> (x Data..@? "ConnectionBorrowTimeout")
Prelude.<*> (x Data..@? "InitQuery")
Prelude.<*> (x Data..@? "MaxConnectionsPercent")
Prelude.<*> (x Data..@? "MaxIdleConnectionsPercent")
Prelude.<*> ( x
Data..@? "SessionPinningFilters"
Core..!@ Prelude.mempty
Prelude.>>= Core.may (Data.parseXMLList "member")
)
instance
Prelude.Hashable
ConnectionPoolConfigurationInfo
where
hashWithSalt
_salt
ConnectionPoolConfigurationInfo' {..} =
_salt
`Prelude.hashWithSalt` connectionBorrowTimeout
`Prelude.hashWithSalt` initQuery
`Prelude.hashWithSalt` maxConnectionsPercent
`Prelude.hashWithSalt` maxIdleConnectionsPercent
`Prelude.hashWithSalt` sessionPinningFilters
instance
Prelude.NFData
ConnectionPoolConfigurationInfo
where
rnf ConnectionPoolConfigurationInfo' {..} =
Prelude.rnf connectionBorrowTimeout
`Prelude.seq` Prelude.rnf initQuery
`Prelude.seq` Prelude.rnf maxConnectionsPercent
`Prelude.seq` Prelude.rnf maxIdleConnectionsPercent
`Prelude.seq` Prelude.rnf sessionPinningFilters