git_trace2: Add socket timeout

repo blocks indefinitely until trace collector receives trace events,
which is not desired. This change adds a fixed timeout to connect and
send operations. It is possible that some events will be lost. repo logs
any failed trace operation.

Bug: b/316227772
Change-Id: I017636421b8e22ae3fcbab9e4eb2bee1d4fbbff4
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/398717
Tested-by: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Josip Sokcevic <sokcevic@google.com>
Reviewed-by: Jason Chang <jasonnc@google.com>
This commit is contained in:
Josip Sokcevic 2023-12-19 09:45:44 -08:00 committed by LUCI
parent 48e4137eba
commit e5fb6e585f

View File

@ -38,6 +38,8 @@ import tempfile
import threading import threading
# Timeout when sending events via socket (applies to connect, send)
SOCK_TIMEOUT = 0.5 # in seconds
# BaseEventLog __init__ Counter that is consistent within the same process # BaseEventLog __init__ Counter that is consistent within the same process
p_init_count = 0 p_init_count = 0
@ -296,6 +298,7 @@ class BaseEventLog:
with socket.socket( with socket.socket(
socket.AF_UNIX, socket.SOCK_STREAM socket.AF_UNIX, socket.SOCK_STREAM
) as sock: ) as sock:
sock.settimeout(SOCK_TIMEOUT)
sock.connect(path) sock.connect(path)
self._WriteLog(sock.sendall) self._WriteLog(sock.sendall)
return f"af_unix:stream:{path}" return f"af_unix:stream:{path}"