Honor cancellation throughout publication recovery Git operations
This commit is contained in:
@@ -108,7 +108,7 @@ func observe(ctx context.Context, evidence Evidence) (Observation, error) {
|
||||
}
|
||||
valid, err := git.ValidateTagRef(ctx, evidence.RepositoryDir, evidence.Tag)
|
||||
if err != nil {
|
||||
return Observation{Evidence: evidence, State: Unknown}, &RecoveryError{Kind: "remote_observation", cause: err}
|
||||
return Observation{Evidence: evidence, State: Unknown}, recoveryFailure(ctx, "remote_observation", err)
|
||||
}
|
||||
if !valid {
|
||||
return Observation{Evidence: evidence, State: Unknown}, &RecoveryError{Kind: "invalid_evidence"}
|
||||
@@ -129,7 +129,7 @@ func observe(ctx context.Context, evidence Evidence) (Observation, error) {
|
||||
}
|
||||
ref, err := endpoint.QueryTag(ctx, evidence.RepositoryDir, evidence.Tag)
|
||||
if err != nil {
|
||||
return Observation{Evidence: evidence, State: Unknown}, &RecoveryError{Kind: "remote_observation", cause: err}
|
||||
return Observation{Evidence: evidence, State: Unknown}, recoveryFailure(ctx, "remote_observation", err)
|
||||
}
|
||||
result, err := classify(evidence, ref)
|
||||
if err != nil && ctx.Err() != nil {
|
||||
@@ -142,3 +142,11 @@ func observe(ctx context.Context, evidence Evidence) (Observation, error) {
|
||||
func Reconcile(ctx context.Context, evidence Evidence) (Observation, error) {
|
||||
return observe(ctx, evidence)
|
||||
}
|
||||
|
||||
// recoveryFailure classifies failed operations while preserving caller cancellation.
|
||||
func recoveryFailure(ctx context.Context, kind string, err error) *RecoveryError {
|
||||
if contextErr := ctx.Err(); contextErr != nil {
|
||||
return &RecoveryError{Kind: "canceled", cause: contextErr}
|
||||
}
|
||||
return &RecoveryError{Kind: kind, cause: err}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user