Detach prepared execution ownership from runners

This commit is contained in:
2026-11-05 13:52:36 +00:00
parent 7d500ee62f
commit 2f0f5fa607
5 changed files with 23 additions and 4 deletions

View File

@@ -600,6 +600,9 @@ func TestRunnerPreparedExecutionOwnershipUseAndDiscard(t *testing.T) {
}
owner := newRunner()
if other := newRunner(); owner.identity == nil || owner.identity == other.identity {
t.Fatal("constructed runners must have independent identity tokens")
}
prepared, err := owner.PrepareExecution(context.Background(), request)
if err != nil {
t.Fatalf("prepare execution: %v", err)
@@ -616,6 +619,9 @@ func TestRunnerPreparedExecutionOwnershipUseAndDiscard(t *testing.T) {
if prepared.Details() == nil {
t.Fatal("details unavailable after execution")
}
if prepared.owner != owner.identity || prepared.payload != nil {
t.Fatal("claimed handle retained payload or lost owner identity")
}
discarded, err := owner.PrepareExecution(context.Background(), request)
if err != nil {
@@ -623,6 +629,9 @@ func TestRunnerPreparedExecutionOwnershipUseAndDiscard(t *testing.T) {
}
discarded.Discard()
discarded.Discard()
if discarded.owner != owner.identity || discarded.payload != nil {
t.Fatal("discarded handle retained payload or lost owner identity")
}
if _, err := owner.RunPrepared(context.Background(), discarded); !errors.Is(err, ErrInvalidRequest) {
t.Fatalf("discarded execution error=%v, want ErrInvalidRequest", err)
}