-
Notifications
You must be signed in to change notification settings - Fork 349
Description
1. Implement DefaultCommandTimeout in the connection string
Connection String Documentation
2. Implement CommandTimeout in MySqlCommand
MySqlCommand cmd = new MySqlCommand();
cmd.CommandTimeout = 60;
Implementation Notes:
MySQL Connector/Net 6.2 introduced timeouts that are aligned with how Microsoft handles SqlCommand.CommandTimeout. This property is the cumulative timeout for all network reads and writes during command execution or processing of the results. A timeout can still occur in the MySqlReader.Read method after the first row is returned, and does not include user processing time, only IO operations. The 6.2 implementation uses the underlying stream timeout facility, so is more efficient in that it does not require the additional timer thread as was the case with the previous implementation.
It sounds like Oracle's implementation of CommandTimeout is setting Socket.SendTimeout and Socket.ReceiveTimeout. They start at the timeout value (e.g. 30 seconds) and subtract only time spent in I/O. This becomes the send or receive timeout for the next socket command.