Reland "reclient: Enable racing for chrome developers"

This reverts commit 3aa7489c3edf46434776b47d0f3eb16537a7de82.

Reason for revert: reproxy 0.110.0 includes a flag for fixing hardlink issue

Original change's description:
> Revert "reclient: Enable racing for chrome developers"
>
> This reverts commit 24ac2543c744b2152465ea758671d46d1077bcf9.
>
> Reason for revert: hard links dont work on tmpfs b/288997481
>
> Original change's description:
> > reclient: Enable racing for chrome developers
> >
> > racing_bias=0.95 is a best guess based on benchmarks on my glinux and gwindows cloudtops, and my gmac laptop. I will monitor build performance data and adjust the bias based on that.
> >
> > Bug: b/288285261
> > Change-Id: Ie8652281f7bc815e64978bcd56a75e5ec28e2132
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4633180
> > Commit-Queue: Ben Segall <bentekkie@google.com>
> > Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
>
> Bug: b/288285261
> Change-Id: I7b262f63d4edd68447fcec0a781ef55923635d2c
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4651968
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Commit-Queue: Ben Segall <bentekkie@google.com>

Bug: b/288285261
Change-Id: I8fb65c32adc7b22a747c30f408f1f34b2bb5f8f6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4693625
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Commit-Queue: Ben Segall <bentekkie@google.com>
diff --git a/reclient_helper.py b/reclient_helper.py
index 6b1ff37..878d6dd 100644
--- a/reclient_helper.py
+++ b/reclient_helper.py
@@ -141,6 +141,7 @@
   """
   tmp_dir = os.path.abspath(os.path.join(out_dir, '.reproxy_tmp'))
   log_dir = os.path.join(tmp_dir, 'logs')
+  racing_dir = os.path.join(tmp_dir, 'racing')
   cache_dir = find_cache_dir(tmp_dir)
   if make_dirs:
     if os.path.exists(log_dir):
@@ -149,10 +150,12 @@
     os.makedirs(tmp_dir, exist_ok=True)
     os.makedirs(log_dir, exist_ok=True)
     os.makedirs(cache_dir, exist_ok=True)
+    os.makedirs(racing_dir)
   os.environ.setdefault("RBE_output_dir", log_dir)
   os.environ.setdefault("RBE_proxy_log_dir", log_dir)
   os.environ.setdefault("RBE_log_dir", log_dir)
   os.environ.setdefault("RBE_cache_dir", cache_dir)
+  os.environ.setdefault("RBE_racing_tmp_dir", racing_dir)
   if sys.platform.startswith('win'):
     pipe_dir = hashlib.md5(tmp_dir.encode()).hexdigest()
     os.environ.setdefault("RBE_server_address",
@@ -165,6 +168,12 @@
         hashlib.sha256(tmp_dir.encode()).hexdigest())
 
 
+def enable_racing():
+  os.environ.setdefault("RBE_exec_strategy", "racing")
+  # TODO(b/288285261) Tune bias once latency data has been gathered.
+  os.environ.setdefault("RBE_racing_bias", "0.95")
+
+
 @contextlib.contextmanager
 def build_context(argv, tool):
   # If use_remoteexec is set, but the reclient binaries or configs don't
@@ -198,6 +207,8 @@
     print('WARNING: Using RBE_instance=%s\n' %
           os.environ.get('RBE_instance', ''))
 
+  enable_racing()
+
   reproxy_ret_code = start_reproxy(reclient_cfg, reclient_bin_dir)
   if reproxy_ret_code != 0:
     yield reproxy_ret_code