feat: Add query timeout support for MySql #10846
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of change
This feature adds the "enableQueryTimeout" option to MysqlConnectionOptions. When enabled, the value of "maxQueryExecutionTime" will be passed to the MySQL driver as the query timeout. (There is support for it by the MySQL driver: https://github.com/mysqljs/mysql?tab=readme-ov-file#timeouts)
Now, passing a value to "maxQueryExecutionTime" just logs queries that took more than the specified amount of time.
We use TypeORM with MySQL in multiple projects. Some of these projects involve direct interaction with users, and having a query timeout for the entire project connection is crucial to prevent server blocking due to long queries. On the other hand, some projects run in the background, and we don't mind queries taking a bit more time.
Since multiple drivers support query timeout configuration per datasource/connection (e.g., 'postgres'/'sqlserver'), and MySQL doesn't, I have decided to add this feature for MySQL as well.
Pull-Request Checklist
master
branchnpm run format
to apply prettier formattingnpm run test
passes with this changeFixes #0000