Use efcore library for health check
This commit is contained in:
parent
f02bcd9cf8
commit
4df47dea47
|
@ -1,36 +0,0 @@
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Jellyfin.Server.Implementations;
|
|
||||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
|
||||||
|
|
||||||
namespace Jellyfin.Server.HealthChecks
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Checks connectivity to the database.
|
|
||||||
/// </summary>
|
|
||||||
public class JellyfinDbHealthCheck : IHealthCheck
|
|
||||||
{
|
|
||||||
private readonly JellyfinDbProvider _dbProvider;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="JellyfinDbHealthCheck"/> class.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="dbProvider">The jellyfin db provider.</param>
|
|
||||||
public JellyfinDbHealthCheck(JellyfinDbProvider dbProvider)
|
|
||||||
{
|
|
||||||
_dbProvider = dbProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
|
|
||||||
{
|
|
||||||
await using var jellyfinDb = _dbProvider.CreateContext();
|
|
||||||
if (await jellyfinDb.Database.CanConnectAsync(cancellationToken).ConfigureAwait(false))
|
|
||||||
{
|
|
||||||
return HealthCheckResult.Healthy("Database connection successful.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return HealthCheckResult.Unhealthy("Unable to connect to the database.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -44,6 +44,7 @@
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.1.7" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.1.7" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.7" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.7" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.1.7" />
|
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.1.7" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="3.1.7" />
|
||||||
<PackageReference Include="prometheus-net" Version="3.6.0" />
|
<PackageReference Include="prometheus-net" Version="3.6.0" />
|
||||||
<PackageReference Include="prometheus-net.AspNetCore" Version="3.6.0" />
|
<PackageReference Include="prometheus-net.AspNetCore" Version="3.6.0" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
|
<PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
|
||||||
|
|
|
@ -3,7 +3,7 @@ using System.ComponentModel;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using Jellyfin.Api.TypeConverters;
|
using Jellyfin.Api.TypeConverters;
|
||||||
using Jellyfin.Server.Extensions;
|
using Jellyfin.Server.Extensions;
|
||||||
using Jellyfin.Server.HealthChecks;
|
using Jellyfin.Server.Implementations;
|
||||||
using Jellyfin.Server.Middleware;
|
using Jellyfin.Server.Middleware;
|
||||||
using Jellyfin.Server.Models;
|
using Jellyfin.Server.Models;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
|
@ -79,7 +79,7 @@ namespace Jellyfin.Server
|
||||||
.ConfigurePrimaryHttpMessageHandler(x => new DefaultHttpClientHandler());
|
.ConfigurePrimaryHttpMessageHandler(x => new DefaultHttpClientHandler());
|
||||||
|
|
||||||
services.AddHealthChecks()
|
services.AddHealthChecks()
|
||||||
.AddCheck<JellyfinDbHealthCheck>("JellyfinDb");
|
.AddDbContextCheck<JellyfinDb>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user