Browse Source

Ensure JSON doc disposal in anonymous job handlers

Wrap JsonDocument usage in explicit using blocks for anonymous job handlers to ensure deterministic disposal and avoid capturing/disposal issues. Also rename the compile-time handler parameter from `context` to `ctx` to prevent potential shadowing. Changes applied to DemoAppSharedModule.cs and SampleJobCreator.cs.
pull/25059/head
SALİH ÖZKARA 3 weeks ago
parent
commit
31ca6e6657
  1. 18
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/DemoAppSharedModule.cs
  2. 16
      modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Jobs/SampleJobCreator.cs

18
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/DemoAppSharedModule.cs

@ -15,16 +15,18 @@ namespace Volo.Abp.BackgroundJobs.DemoApp.Shared
{ {
Configure<AbpBackgroundJobOptions>(options => Configure<AbpBackgroundJobOptions>(options =>
{ {
options.AddAnonymousJobHandler("CompileTimeAnonymousJob", (context, ct) => options.AddAnonymousJobHandler("CompileTimeAnonymousJob", (ctx, ct) =>
{ {
using var doc = JsonDocument.Parse(context.JsonData); using (var doc = JsonDocument.Parse(ctx.JsonData))
var value = doc.RootElement.TryGetProperty("value", out var prop) {
? prop.GetString() var value = doc.RootElement.TryGetProperty("value", out var prop)
: doc.RootElement.TryGetProperty("Value", out prop)
? prop.GetString() ? prop.GetString()
: null; : doc.RootElement.TryGetProperty("Value", out prop)
Console.WriteLine($"[ANONYMOUS-COMPILE] {value}"); ? prop.GetString()
return Task.CompletedTask; : null;
Console.WriteLine($"[ANONYMOUS-COMPILE] {value}");
return Task.CompletedTask;
}
}); });
}); });
} }

16
modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp.Shared/Jobs/SampleJobCreator.cs

@ -28,14 +28,16 @@ namespace Volo.Abp.BackgroundJobs.DemoApp.Shared.Jobs
{ {
_anonymousJobHandlerRegistry.Register("RuntimeAnonymousJob", (context, ct) => _anonymousJobHandlerRegistry.Register("RuntimeAnonymousJob", (context, ct) =>
{ {
using var doc = JsonDocument.Parse(context.JsonData); using (var doc = JsonDocument.Parse(context.JsonData))
var value = doc.RootElement.TryGetProperty("value", out var prop) {
? prop.GetString() var value = doc.RootElement.TryGetProperty("value", out var prop)
: doc.RootElement.TryGetProperty("Value", out prop)
? prop.GetString() ? prop.GetString()
: null; : doc.RootElement.TryGetProperty("Value", out prop)
Console.WriteLine($"[ANONYMOUS-RUNTIME] {value}"); ? prop.GetString()
return Task.CompletedTask; : null;
Console.WriteLine($"[ANONYMOUS-RUNTIME] {value}");
return Task.CompletedTask;
}
}); });
// Type-safe enqueue (existing) // Type-safe enqueue (existing)

Loading…
Cancel
Save