From 24c6314fca400f86fd893053c79788a8ab681477 Mon Sep 17 00:00:00 2001 From: Joanna Wang Date: Tue, 8 Nov 2022 18:56:52 -0500 Subject: Fix TRACE_FILE renaming. Bug: b/258073923 Change-Id: I997961056388e1550711f73a6310788b5c7ad4d4 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/350934 Tested-by: Joanna Wang Reviewed-by: LaMont Jones --- repo_trace.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'repo_trace.py') diff --git a/repo_trace.py b/repo_trace.py index 03542950..86cbfc62 100644 --- a/repo_trace.py +++ b/repo_trace.py @@ -22,10 +22,11 @@ To also include trace outputs in stderr do `repo --trace_to_stderr ...` import sys import os -import tempfile import time from contextlib import ContextDecorator +import platform_utils + # Env var to implicitly turn on tracing. REPO_TRACE = 'REPO_TRACE' @@ -38,7 +39,7 @@ _TRACE_FILE = None _TRACE_FILE_NAME = 'TRACE_FILE' -_MAX_SIZE = 5 # in mb +_MAX_SIZE = 70 # in mb _NEW_COMMAND_SEP = '+++++++++++++++NEW COMMAND+++++++++++++++++++' @@ -123,7 +124,7 @@ def _GetTraceFile(): return trace_file def _ClearOldTraces(): - """Clear traces from old commands if trace file is too big. + """Clear the oldest commands if trace file is too big. Note: If the trace file contains output from two `repo` commands that were running at the same time, this @@ -131,12 +132,12 @@ def _ClearOldTraces(): """ if os.path.isfile(_TRACE_FILE): while os.path.getsize(_TRACE_FILE)/(1024*1024) > _MAX_SIZE: - temp = tempfile.NamedTemporaryFile(mode='w', delete=False) + temp_file = _TRACE_FILE + '.tmp' with open(_TRACE_FILE, 'r', errors='ignore') as fin: - trace_lines = fin.readlines() - for i , l in enumerate(trace_lines): - if 'END:' in l and _NEW_COMMAND_SEP in l: - temp.writelines(trace_lines[i+1:]) - break - temp.close() - os.replace(temp.name, _TRACE_FILE) + with open(temp_file, 'w') as tf: + trace_lines = fin.readlines() + for i , l in enumerate(trace_lines): + if 'END:' in l and _NEW_COMMAND_SEP in l: + tf.writelines(trace_lines[i+1:]) + break + platform_utils.rename(temp_file, _TRACE_FILE) -- cgit v1.2.3-54-g00ecf