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 =>
{
options.AddAnonymousJobHandler("CompileTimeAnonymousJob", (context, ct) =>
options.AddAnonymousJobHandler("CompileTimeAnonymousJob", (ctx, ct) =>
{
using var doc = JsonDocument.Parse(context.JsonData);
var value = doc.RootElement.TryGetProperty("value", out var prop)
? prop.GetString()
: doc.RootElement.TryGetProperty("Value", out prop)
using (var doc = JsonDocument.Parse(ctx.JsonData))
{
var value = doc.RootElement.TryGetProperty("value", out var prop)
? prop.GetString()
: null;
Console.WriteLine($"[ANONYMOUS-COMPILE] {value}");
return Task.CompletedTask;
: doc.RootElement.TryGetProperty("Value", out prop)
? prop.GetString()
: 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) =>
{
using var doc = JsonDocument.Parse(context.JsonData);
var value = doc.RootElement.TryGetProperty("value", out var prop)
? prop.GetString()
: doc.RootElement.TryGetProperty("Value", out prop)
using (var doc = JsonDocument.Parse(context.JsonData))
{
var value = doc.RootElement.TryGetProperty("value", out var prop)
? prop.GetString()
: null;
Console.WriteLine($"[ANONYMOUS-RUNTIME] {value}");
return Task.CompletedTask;
: doc.RootElement.TryGetProperty("Value", out prop)
? prop.GetString()
: null;
Console.WriteLine($"[ANONYMOUS-RUNTIME] {value}");
return Task.CompletedTask;
}
});
// Type-safe enqueue (existing)

Loading…
Cancel
Save