This test is unnecessarily strict. It reduces performance to close the socket and open a new one; it would be better to reuse the open connection. To accomplish this, the session could be flagged as "requires a database change".
If this flag is set, then when resetting the connection, use a COM_CHANGE_USER packet to specify the same DB as in the original connection string. Or, if ConnectionReset=false, do nothing and leave the state of the connection as-is (considering the selected DB to be part of the session state). The database should be set back to the one in the connection string, even if ConnectionReset=false; this is the expected outcome from opening a connection and is the behaviour of Connector/NET.
The text was updated successfully, but these errors were encountered:
If connections are being created and returned to the pool very frequently, then closing the socket can cause the client to run out of local ports and prevent future connections: #533. This would be quite unexpected when pooling is enabled, as the user would assume that a small number of physical connections are being reused.
bgrainger commentedJun 12, 2018
•
edited
When a session is returned to the pool, it is rejected as invalid if its database has changed:
MySqlConnector/src/MySqlConnector/Core/ConnectionPool.cs
Lines 151 to 152 in 2b29279
This test is unnecessarily strict. It reduces performance to close the socket and open a new one; it would be better to reuse the open connection. To accomplish this, the session could be flagged as "requires a database change".
If this flag is set, then when resetting the connection, use a
COM_CHANGE_USER
packet to specify the same DB as in the original connection string.Or, ifThe database should be set back to the one in the connection string, even ifConnectionReset=false
, do nothing and leave the state of the connection as-is (considering the selected DB to be part of the session state).ConnectionReset=false
; this is the expected outcome from opening a connection and is the behaviour of Connector/NET.The text was updated successfully, but these errors were encountered: