summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2016-06-02 14:04:45 -0300
committerJoshua Colp <jcolp@digium.com>2016-06-07 11:59:05 -0300
commit31a5c28339312fe32ee35ff9ef286a5d25861323 (patch)
treebd86d949011adbd41a180bcf361b69f1209e19b9 /configure.ac
parent3e8d523d889351c69b21fdc563cb98d18a7bdb66 (diff)
res_odbc: Implement a connection pool.
Testing has shown that our usage of UnixODBC is problematic due to bugs within UnixODBC itself as well as the heavy weight cost of connecting and disconnecting database connections, even when pooling is enabled. For users of UnixODBC 2.3.1 and earlier crashes would occur due to insufficient protection of the disconnect operation. This was fixed in UnixODBC 2.3.2 and above. For users of UnixODBC 2.3.3 and higher a slow-down would occur under heavy database use due to repeated connection establishment. A regression is present where on each connection the database configuration is cached again, with the cache growing out of control. The connection pool implementation present in this change helps to mitigate these issues by reducing how much we connect and disconnect database connections. We also solve the issue of crashes under UnixODBC 2.3.1 by defaulting the maximum number of connections to 1, returning us to the previous working behavior. For users who may have a fixed version the maximum concurrent connection limit can be increased helping with performance. The connection pool works by keeping a list of active connections. If the connection limit has not been reached a new connection is established. If the connection limit has been reached then the request waits until a connection becomes available before continuing. ASTERISK-26074 #close ASTERISK-26054 #close Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff
Diffstat (limited to 'configure.ac')
0 files changed, 0 insertions, 0 deletions