From dd52c08b74682a71d44f254cf6bf8528101f1cea Mon Sep 17 00:00:00 2001
From: zeripath <art27@cantab.net>
Date: Tue, 8 Mar 2022 11:20:37 +0000
Subject: [PATCH] Don't show context cancelled errors in attribute reader
 (#19006) (#19027)

Backport #19006

Fix #18997

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
---
 modules/git/repo_attribute.go | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/modules/git/repo_attribute.go b/modules/git/repo_attribute.go
index 3f6f8943a9..c107308fd6 100644
--- a/modules/git/repo_attribute.go
+++ b/modules/git/repo_attribute.go
@@ -191,7 +191,9 @@ func (c *CheckAttributeReader) Run() error {
 		}
 		return nil
 	})
-	if err != nil && c.ctx.Err() != nil && err.Error() != "signal: killed" {
+	if err != nil && //                      If there is an error we need to return but:
+		c.ctx.Err() != err && //             1. Ignore the context error if the context is cancelled or exceeds the deadline (RunWithContext could return c.ctx.Err() which is Canceled or DeadlineExceeded)
+		err.Error() != "signal: killed" { // 2. We should not pass up errors due to the program being killed
 		return fmt.Errorf("failed to run attr-check. Error: %w\nStderr: %s", err, stdErr.String())
 	}
 	return nil