Skip to content

Commit 9ab51c2

Browse files
authored
Merge pull request #5980 from DIRACGridBot/cherry-pick-2-982580660-integration
[sweep:integration] fix: Limit reoccurrences of subprocess unicode error
2 parents f325a8e + a9452a5 commit 9ab51c2

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/DIRAC/Core/Utilities/Subprocess.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ def __generateSystemCommandError(self, exitStatus, message):
366366
def __readFromFile(self, fd, baseLength):
367367
"""read from file descriptor :fd: and save it to the dedicated buffer"""
368368
try:
369+
numErrors = 0
369370
dataString = ""
370371
fn = fd.fileno()
371372

@@ -383,7 +384,14 @@ def __readFromFile(self, fd, baseLength):
383384
try:
384385
dataString += nB.decode()
385386
except UnicodeDecodeError as e:
386-
self.log.warn("Unicode decode error in readFromFile", "(%r): %r" % (e, dataString))
387+
if numErrors < 5:
388+
self.log.warn(
389+
"Unicode decode error in readFromFile",
390+
"(%r): %r" % (e, dataString[max(0, e.start - 10) : e.end + 10]),
391+
)
392+
numErrors += 1
393+
if numErrors == 5:
394+
self.log.warn("Max unicode decode errors reached, further errors will not be logged.")
387395
dataString += nB.decode("utf-8", "replace")
388396
# break out of potential infinite loop, indicated by dataString growing beyond reason
389397
if len(dataString) + baseLength > self.bufferLimit:

0 commit comments

Comments
 (0)