5 Commits
Author SHA1 Message Date
hermes b8c3201c58 Refactored quartz healthcheck on api 2026-10-27 23:59:58 +02:00
hermes a8daea830f Refactored quartz client registration 2026-10-27 23:48:36 +02:00
hermes 5be7c8c56a Removed defaults from feature flags 2026-10-27 23:17:18 +02:00
hermes d24b0dafb1 Added http accessor to scheduler 2026-10-27 23:04:50 +02:00
hermes cd47a2b93a Fixed scheduler and api configuration 2026-10-27 22:08:12 +02:00
6 changed files with 19 additions and 12 deletions
-6
View File
@@ -146,12 +146,6 @@ builder.Services.AddCors(options =>
var app = builder.Build();
var schedulerFactory = app.Services.GetRequiredService<ISchedulerFactory>();
var scheduler = await schedulerFactory.GetScheduler();
if (scheduler!.Status != SchedulerStatus.Running)
await scheduler.Start();
app.UseCors(CorsPolicy);
app.UseHsts();
app.UseHttpsRedirection();
@@ -20,7 +20,7 @@ public static class Quartz
services.AddQuartz(config =>
{
config.UseSimpleTypeLoader();
config.UseDefaultThreadPool(options => options.MaxConcurrency = 0);
config.UseThreadPool<global::Quartz.Impl.ZeroSizeThreadPool>();
config.UseTimeZoneConverter();
config.UsePersistentStore(storage =>
@@ -11,8 +11,8 @@ public sealed class QuartzHealthCheck(ISchedulerFactory schedulerFactory) : IHea
if (scheduler == null)
return HealthCheckResult.Unhealthy($"Scheduler with name '{DefaultSchedulerName}' not found.");
if (scheduler.Status != SchedulerStatus.Running)
return HealthCheckResult.Unhealthy($"{DefaultSchedulerName} Quartz scheduler is not running");
if (scheduler.Status is not (SchedulerStatus.Running or SchedulerStatus.Standby or SchedulerStatus.Created))
return HealthCheckResult.Unhealthy($"{DefaultSchedulerName} Quartz scheduler is not available (Status: {scheduler.Status})");
await scheduler.Exists(new JobKey(Guid.NewGuid().ToString()), cancellationToken);
+2
View File
@@ -13,6 +13,8 @@ builder.Services.AddHostedService<JobsWorker>();
builder.Services.AddRegisterServicesWithCaching(builder.Configuration);
builder.Services.AddEndpointAndServiceCaching(builder.Configuration);
builder.Services.AddTransient<ITenantContextService, HeadlessTenantContextService>();
builder.Services.AddSkorubaApiService(builder.Configuration);
builder.Services.AddHttpContextAccessor();
builder.Services.AddMediator();
builder.Services.AddScoped(typeof(IPipelineBehavior<,>), typeof(TelemetryPipelineBehavior<,>));
+4
View File
@@ -10,6 +10,10 @@
"BucketName": "pfm",
"CdnBaseUrl": "https://pfm.cdn.khongisa.co.za"
},
"MachineIdentitySettings": {
"Authority": "https://sts.security.khongisa.co.za",
"Scope": "skoruba_identity_admin_api"
},
"Monitoring": {
"Address": "http://aspire-dashboard-service.aspire.svc.cluster.local:18889",
"ServiceName": "Pfm.Jobs.DEV"
+10 -3
View File
@@ -8,9 +8,9 @@ services:
container_name: pfm-scheduler
environment:
# Service layer caching feature flag
- FeatureManagement__JobsWorker=${FEATURE_JOBS_WORKER:-true}}
- FeatureManagement__EmailProcessorJobEnabled=${FEATURE_EMAIL_PROCESSOR_JOB_ENABLED:-true}}
- FeatureManagement__ServiceCaching=${FEATURE_SERVICE_CACHING:-false}}
- FeatureManagement__JobsWorker=${FEATURE_JOBS_WORKER}
- FeatureManagement__EmailProcessorJobEnabled=${FEATURE_EMAIL_PROCESSOR_JOB_ENABLED}
- FeatureManagement__ServiceCaching=${FEATURE_SERVICE_CACHING}
# Header forwarding overrides
- DOTNET_ENVIRONMENT=${ENVIRONMENT:-Development}
@@ -27,6 +27,13 @@ services:
- GeneralS3Settings__AccessKey=${GENERAL_S3_ACCESS_KEY:-}
- GeneralS3Settings__SecretKey=${GENERAL_S3_SECRET_KEY:-}
# Skoruba Duende Administration Security Overrides
- ConnectionStrings__SkorubaApi=${SKORUBA_ADMIN_API:-https://api.security.khongisa.co.za/}
- MachineIdentitySettings__Authority=${ADMIN_SECURITY_AUTHORITY:-https://sts.security.khongisa.co.za}
- MachineIdentitySettings__Scope=${ADMIN_SECURITY_SCOPE:-}
- MachineIdentitySettings__ClientId=${ADMIN_SECURITY_CLIENT_ID:-}
- MachineIdentitySettings__ClientSecret=${ADMIN_SECURITY_CLIENT_SECRET:-}
# HashIds overrides
- HasherSettings__MinHashLength=${HASHER_MIN_HASH_LENGTH:-11}
- HasherSettings__Salt=${HASHER_SALT:-}