From bf67b231935de067ca59f67fa08d7f7bdbea0e43 Mon Sep 17 00:00:00 2001 From: Takuto Ikuta Date: Fri, 26 May 2023 03:06:40 +0000 Subject: [PATCH] reclient: use fixed size path for unix domain socket Bug: b/278846515 Change-Id: Ibfc61acdbfbdbc84a4e1b7fec12169b06236b545 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4570163 Auto-Submit: Takuto Ikuta Commit-Queue: Takuto Ikuta Reviewed-by: Junji Watanabe --- reclient_helper.py | 7 +++++-- tests/ninja_reclient_test.py | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/reclient_helper.py b/reclient_helper.py index cbe8623c0e..44614e77cb 100644 --- a/reclient_helper.py +++ b/reclient_helper.py @@ -134,8 +134,11 @@ def set_reproxy_path_flags(out_dir, make_dirs=True): os.environ.setdefault("RBE_server_address", "pipe://%s/reproxy.pipe" % pipe_dir) else: - os.environ.setdefault("RBE_server_address", - "unix://%s/reproxy.sock" % tmp_dir) + # unix domain socket has path length limit, so use fixed size path here. + # ref: https://www.man7.org/linux/man-pages/man7/unix.7.html + os.environ.setdefault( + "RBE_server_address", "unix://tmp/reproxy_%s.sock" % + hashlib.sha256(tmp_dir.encode()).hexdigest()) @contextlib.contextmanager diff --git a/tests/ninja_reclient_test.py b/tests/ninja_reclient_test.py index 7571550e7b..a2680600b2 100755 --- a/tests/ninja_reclient_test.py +++ b/tests/ninja_reclient_test.py @@ -86,8 +86,10 @@ class NinjaReclientTest(trial_dir.TestCase): ".reproxy_tmp").encode()).hexdigest()) else: self.assertEqual( - os.environ.get('RBE_server_address'), "unix://%s/reproxy.sock" % - os.path.join(self.root_dir, "out", "a", ".reproxy_tmp")) + os.environ.get('RBE_server_address'), + "unix://tmp/reproxy_%s.sock" % hashlib.sha256( + os.path.join(self.root_dir, "out", "a", + ".reproxy_tmp").encode()).hexdigest()) mock_ninja.assert_called_once_with(argv) mock_call.assert_has_calls([