-
Notifications
You must be signed in to change notification settings - Fork 803
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use MySqlDataSource in
AddMySql
by default (#2096)
* Send a MySQL ping packet by default. Fixes #2031 Users can opt in to setting a command that will be executed on the server, but the default is now a more efficient ping. * Add AddMySql overload for MySqlDataSource. This pushes users towards good defaults: firstly registering a MySqlDataSource as a singleton in DI, then just calling .AddHealthChecks().AddMySql() with no other arguments to retrieve and use that same data source for health checks. * Add package README for HealthChecks.MySql. * Use new MySqlHealthCheckOptions API. There are two constructors: one to initialise with a MySqlDataSource, and one with a connection string. This helps enforce correct uasge of the API by ensuring that exactly one is set.
- Loading branch information
Showing
8 changed files
with
241 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
## MySQL Health Check | ||
|
||
This health check verifies the ability to communicate with a MySQL Server. | ||
It uses the provided [MySqlDataSource](https://mysqlconnector.net/api/mysqlconnector/mysqldatasourcetype/) or a connection string to connect to the server. | ||
|
||
### Defaults | ||
|
||
By default, the `MySqlDataSource` instance is resolved from service provider. | ||
(This should be the same as the instance being used by the application; do not create a new `MySqlDataSource` just for the health check.) | ||
The health check will send a MySQL "ping" packet to the server to verify connectivity. | ||
|
||
```csharp | ||
builder.Services | ||
.AddMySqlDataSource(builder.Configuration.GetConnectionString("mysql")) // using the MySqlConnector.DependencyInjection package | ||
.AddHealthChecks().AddMySql(); | ||
``` | ||
|
||
### Connection String | ||
|
||
You can also specify a connection string directly: | ||
|
||
```csharp | ||
builder.Services.AddHealthChecks().AddMySql(connectionString: "Server=...;User Id=...;Password=..."); | ||
``` | ||
|
||
This can be useful if you're not using `MySqlDataSource` in your application. | ||
|
||
### Customization | ||
|
||
You can additionally add the following parameters: | ||
|
||
- `healthQuery`: A query to run against the server. If `null` (the default), the health check will send a MySQL "ping" packet to the server. | ||
- `configure`: An action to configure the `MySqlConnection` object. This is called after the `MySqlConnection` is created but before the connection is opened. | ||
- `name`: The health check name. The default is `mysql`. | ||
- `failureStatus`: The `HealthStatus` that should be reported when the health check fails. Default is `HealthStatus.Unhealthy`. | ||
- `tags`: A list of tags that can be used to filter sets of health checks. | ||
- `timeout`: A `System.TimeSpan` representing the timeout of the check. | ||
|
||
```csharp | ||
builder.Services | ||
.AddMySqlDataSource(builder.Configuration.GetConnectionString("mysql")) | ||
.AddHealthChecks().AddMySql( | ||
healthQuery: "SELECT 1;", | ||
configure: conn => conn.ConnectTimeout = 3, | ||
name: "MySQL" | ||
); | ||
``` | ||
|
||
### Breaking changes | ||
|
||
In previous versions, `MySqlHealthCheck` defaulted to testing connectivity by sending a `SELECT 1;` query to the server. | ||
It has been changed to send a more efficient "ping" packet instead. | ||
To restore the previous behavior, specify `healthQuery: "SELECT 1;"` when registering the health check. | ||
|
||
While not a breaking change, it's now preferred to use `MySqlDataSource` instead of a connection string. | ||
This allows the health check to use the same connection pool as the rest of the application. | ||
This can be achieved by calling the `.AddMySql()` overload that has no required parameters. | ||
The health check assumes that a `MySqlDataSource` instance has been registered with the service provider and will retrieve it automatically. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 4 additions & 0 deletions
4
test/HealthChecks.MySql.Tests/HealthChecks.MySql.Tests.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.