Skip to content

Commit 51ce19c

Browse files
committed
Join RF3 process lifetime to owned signals helper
1 parent bd1a206 commit 51ce19c

6 files changed

Lines changed: 27 additions & 15 deletions

File tree

‎docs/implementation/status.json‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@
1010
"runtimeQualified": false,
1111
"fullTaskComplete": false,
1212
"verificationStage": "owned_analyzer_release_build_passed_other_gates_pending",
13-
"remaining": ["Final canonical solution build and format", "Aspire analyzer, unit, process recovery and Docker RF3 client suites", "Source-bound functional coverage and Linux qualification"]
13+
"remaining": [
14+
"Final canonical solution build and format",
15+
"Aspire analyzer, unit, process recovery and Docker RF3 client suites",
16+
"Source-bound functional coverage and Linux qualification"
17+
]
1418
},
1519
"ORLEANS-PRIMITIVES-001": {
1620
"title": "Native Orleans capability review, services, messaging, transactions and jobs",
@@ -4902,7 +4906,7 @@
49024906
"status": "in_progress",
49034907
"feature": "docs/Features/CodeQuality.md",
49044908
"decision": "docs/ADR/ADR-113-centralized-runtime-options.md",
4905-
"sourceStage": "full_options_and_literal_migration_checkpointed_final_public_phase_bank_and_native_analyzer_semantic_gap_joins_in_progress_current_source_build_and_runtime_gates_pending",
4909+
"sourceStage": "all_runtime_options_literals_and_phase_bank_semantic_analyzer_joins_checkpointed_current_source_native_verification_pending",
49064910
"canonicalBuildPassed": false,
49074911
"runtimeQualified": false,
49084912
"fullTaskComplete": false,
@@ -5139,6 +5143,17 @@
51395143
"nativeExit": 2,
51405144
"passed": false,
51415145
"qualification": "native aggregate type checks found options202 and adapter tests231 above200; seed validation joined its existing validator and OpenSearch cases split coherently; full current-source rerun pending"
5146+
},
5147+
"canonicalReleaseV33": {
5148+
"log": "keyload-general-options-full-release-v33.log",
5149+
"nativeExit": 1,
5150+
"passed": false,
5151+
"warnings": 0,
5152+
"errors": 36,
5153+
"duration": "00:02:18.11",
5154+
"sourceChangedDuringRun": true,
5155+
"concurrentSourceChanges": 29,
5156+
"qualification": "native full Release build failed new backup staging analyzer/disposal diagnostics and concurrent TimeProvider signature joins; literal/import hygiene repaired; owning chats are repairing behavioral joins; final current-source canonical build required"
51425157
}
51435158
}
51445159
}

‎src/KeyLoad.AppHost/Features/TestInfrastructure/Processes/LocalRf3OwnedProcessLifetime.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ internal static async Task TerminateAndJoinAsync(Process process, Task exit, Tas
3434
failures.Add(new TimeoutException(MessageText));
3535
if (!HasExited(process, failures))
3636
{
37-
TryKill(process, failures);
37+
LocalRf3OwnedProcessSignals.TryKill(process, failures);
3838
}
3939
}
4040

‎src/KeyLoad.Artifacts/Features/BackupRestore/Staging/BackupArtifactEmptyDestination.cs‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
using System.Collections.Generic;
2-
31
namespace KeyLoad.Artifacts;
42

53
/// <summary>Temporarily preserves an initially empty caller destination during publication.</summary>

‎src/KeyLoad.Artifacts/Features/BackupRestore/Staging/BackupArtifactExtraction.cs‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Runtime.ExceptionServices;
22
using Cartograph.Catalog;
3-
using Cartograph.Format;
43

54
namespace KeyLoad.Artifacts;
65

‎src/KeyLoad.Artifacts/Features/BackupRestore/Staging/BackupArtifactPublication.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
using System.Collections.Generic;
2-
31
namespace KeyLoad.Artifacts;
42

53
/// <summary>Claims and publishes a fully validated sibling extraction stage.</summary>
@@ -8,6 +6,8 @@ internal sealed class BackupArtifactPublication
86
private const string StagePrefix = ".keyload-unpack-";
97
private const string EmptySuffix = ".empty";
108
private const string ClaimSuffix = ".claim";
9+
private const int EmptyFailureCount = 0;
10+
private const int PrimaryFailureIndex = 0;
1111

1212
private readonly BackupArtifactDestinationState destinationState;
1313
private readonly BackupArtifactStagePaths paths;
@@ -64,9 +64,9 @@ private static BackupArtifactPublication CreateClaimedStage(BackupArtifactDestin
6464
catch (Exception failure)
6565
{
6666
var cleanupFailures = CleanupFailedClaim(paths, stageCreated);
67-
if (cleanupFailures.Count > 0)
67+
if (cleanupFailures.Count > EmptyFailureCount)
6868
{
69-
cleanupFailures.Insert(0, failure);
69+
cleanupFailures.Insert(PrimaryFailureIndex, failure);
7070
throw new AggregateException(cleanupFailures);
7171
}
7272
throw;

‎src/KeyLoad.Artifacts/Features/BackupRestore/Staging/BackupArtifactStaging.cs‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
using System.Collections.Generic;
2-
31
namespace KeyLoad.Artifacts;
42

53
/// <summary>Owns exact payload files written during one archive extraction.</summary>
64
internal sealed class BackupArtifactStaging
75
{
86
private const int CanonicalPayloadCount = 3;
7+
private const int PrimaryFailureCount = 1;
8+
private const int EmptyCollectionCount = 0;
99

1010
private readonly BackupArtifactPublication publication;
1111
private readonly List<string> ownedFiles = new(CanonicalPayloadCount);
@@ -51,7 +51,7 @@ private void RegisterOwnedFile(string path, FileStream file)
5151
{
5252
cleanupFailures.Add(deleteFailure);
5353
}
54-
if (cleanupFailures.Count > 1)
54+
if (cleanupFailures.Count > PrimaryFailureCount)
5555
{
5656
throw new AggregateException(cleanupFailures);
5757
}
@@ -93,15 +93,15 @@ internal void Dispose()
9393
var failures = new List<Exception>();
9494
RemoveOwnedFiles(failures);
9595
publication.Cleanup(failures);
96-
if (failures.Count > 0)
96+
if (failures.Count > EmptyCollectionCount)
9797
{
9898
throw new AggregateException(failures);
9999
}
100100
}
101101

102102
private void RemoveOwnedFiles(List<Exception> failures)
103103
{
104-
if (ownedFiles.Count == 0)
104+
if (ownedFiles.Count == EmptyCollectionCount)
105105
{
106106
return;
107107
}

0 commit comments

Comments
 (0)