From 4b53a6d0cb2615265618cab0a8c2bde42f76b80e Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 5 Jul 2026 18:45:23 +0900 Subject: [PATCH] fix(web): migrate Hangfire storage from SqlServer to PostgreSql to prevent startup crash --- src/dotnet/QuantEngine.Web/Program.cs | 1 - src/dotnet/QuantEngine.Web/QuantEngine.Web.csproj | 2 +- src/dotnet/QuantEngine.Web/Services/SchedulerService.cs | 8 +++----- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/dotnet/QuantEngine.Web/Program.cs b/src/dotnet/QuantEngine.Web/Program.cs index bc18b02..448ef59 100644 --- a/src/dotnet/QuantEngine.Web/Program.cs +++ b/src/dotnet/QuantEngine.Web/Program.cs @@ -23,7 +23,6 @@ using Microsoft.Extensions.Options; using MudBlazor.Services; using QuantEngine.Web.Services; using Hangfire; -using Hangfire.SqlServer; // Serilog Configuration with Telegram Sink Log.Logger = new LoggerConfiguration() diff --git a/src/dotnet/QuantEngine.Web/QuantEngine.Web.csproj b/src/dotnet/QuantEngine.Web/QuantEngine.Web.csproj index a33be43..83f52ca 100644 --- a/src/dotnet/QuantEngine.Web/QuantEngine.Web.csproj +++ b/src/dotnet/QuantEngine.Web/QuantEngine.Web.csproj @@ -10,7 +10,7 @@ - + diff --git a/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs b/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs index ee9cd20..56c40ba 100644 --- a/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs +++ b/src/dotnet/QuantEngine.Web/Services/SchedulerService.cs @@ -1,7 +1,7 @@ using Hangfire; using Hangfire.States; using Hangfire.Dashboard; -using Hangfire.SqlServer; +using Hangfire.PostgreSql; using System.Linq.Expressions; using QuantEngine.Application.Services; using QuantEngine.Infrastructure.Data; @@ -238,12 +238,10 @@ public static class HangfireServiceExtensions .SetDataCompatibilityLevel(CompatibilityLevel.Version_180) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() - .UseSqlServerStorage(connectionString, new SqlServerStorageOptions + .UsePostgreSqlStorage(options => options.UseNpgsqlConnection(connectionString), new PostgreSqlStorageOptions { - CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), - SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), QueuePollInterval = TimeSpan.FromSeconds(15), - DisableGlobalLocks = true + PrepareSchemaIfNecessary = true })); // Add Hangfire server