Index: tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py b/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py |
index a9f1fa5186fb77ce75404fedea93784470515878..c45b11faf6277ebcf27c214dc68304cbb1567676 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome/desktop_browser_backend.py |
@@ -142,10 +142,21 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): |
if not os.path.isfile(port_file): |
# File isn't ready yet. Return false. Will retry. |
return False |
- with open(port_file) as f: |
- port_string = f.read() |
- self._port = int(port_string) |
- logging.info('Discovered ephemeral port %s' % self._port) |
+ # Attempt to avoid reading the file until it's populated. |
+ got_port = False |
+ try: |
+ if os.stat(port_file).st_size > 0: |
+ with open(port_file) as f: |
+ port_string = f.read() |
+ self._port = int(port_string) |
+ logging.info('Discovered ephemeral port %s' % self._port) |
+ got_port = True |
+ except Exception: |
+ # Both stat and open can throw exceptions. |
+ pass |
+ if not got_port: |
+ # File isn't ready yet. Return false. Will retry. |
+ return False |
return super(DesktopBrowserBackend, self).HasBrowserFinishedLaunching() |
def GetBrowserStartupArgs(self): |