Fix update bundle

This commit is contained in:
2025-11-11 05:47:57 +07:00
parent 0a676d1fb7
commit 14bc98d52d
4 changed files with 142 additions and 31 deletions

View File

@@ -641,11 +641,16 @@ public class BacktestExecutor
var failedJobs = jobs.Count(j => j.Status == JobStatus.Failed);
var runningJobs = jobs.Count(j => j.Status == JobStatus.Running);
var totalJobs = jobs.Count();
// Update bundle request progress (always update counters regardless of status)
bundleRequest.CompletedBacktests = completedJobs;
bundleRequest.FailedBacktests = failedJobs;
bundleRequest.UpdatedAt = DateTime.UtcNow;
// CRITICAL: If bundle is already in a final state (Completed/Failed with CompletedAt set),
// don't overwrite it unless we're detecting a legitimate change
if (bundleRequest.CompletedAt.HasValue &&
(bundleRequest.Status == BundleBacktestRequestStatus.Completed ||
if (bundleRequest.CompletedAt.HasValue &&
(bundleRequest.Status == BundleBacktestRequestStatus.Completed ||
bundleRequest.Status == BundleBacktestRequestStatus.Failed))
{
// Bundle already finalized, only update if job counts indicate it should be re-opened
@@ -655,7 +660,8 @@ public class BacktestExecutor
_logger.LogDebug(
"Bundle {BundleRequestId} already completed/failed. Skipping status update.",
bundleRequestId);
return; // Don't modify a completed bundle
// Progress counters already updated above, just return
return;
}
else
{
@@ -666,10 +672,6 @@ public class BacktestExecutor
}
}
// Update bundle request progress
bundleRequest.CompletedBacktests = completedJobs;
bundleRequest.FailedBacktests = failedJobs;
// Update status based on job states
if (completedJobs + failedJobs == totalJobs)
{

View File

@@ -457,11 +457,16 @@ public class BacktestComputeWorker : BackgroundService
}
var previousStatus = bundleRequest.Status;
// Update bundle request progress (always update counters regardless of status)
bundleRequest.CompletedBacktests = completedJobs;
bundleRequest.FailedBacktests = failedJobs;
bundleRequest.UpdatedAt = DateTime.UtcNow;
// CRITICAL: If bundle is already in a final state (Completed/Failed with CompletedAt set),
// don't overwrite it unless we're detecting a legitimate change
if (bundleRequest.CompletedAt.HasValue &&
(bundleRequest.Status == BundleBacktestRequestStatus.Completed ||
if (bundleRequest.CompletedAt.HasValue &&
(bundleRequest.Status == BundleBacktestRequestStatus.Completed ||
bundleRequest.Status == BundleBacktestRequestStatus.Failed))
{
// Bundle already finalized, only update if job counts indicate it should be re-opened
@@ -471,7 +476,8 @@ public class BacktestComputeWorker : BackgroundService
_logger.LogDebug(
"Bundle {BundleRequestId} already completed/failed. Skipping status update.",
bundleRequestId);
return; // Don't modify a completed bundle
// Progress counters already updated above, just return
return;
}
else
{
@@ -482,10 +488,6 @@ public class BacktestComputeWorker : BackgroundService
}
}
// Update bundle request progress
bundleRequest.CompletedBacktests = completedJobs;
bundleRequest.FailedBacktests = failedJobs;
// Update status based on job states
if (completedJobs + failedJobs == totalJobs)
{