Commit 4a4a9a34 authored by kbr@chromium.org's avatar kbr@chromium.org

Make Telemetry more robust during ephemeral port handshake.

On Windows, if the browser is still writing the DevToolsActivePort
file when Telemetry attempts to open it, Python will raise an IOError.
Make the Telemetry-side code more robust when reading the file
containing the port.

BUG=372560

Review URL: https://codereview.chromium.org/317163008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275620 0039d316-1c4b-4281-b951-d872f2087c98
parent 305edfed
...@@ -142,10 +142,21 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend): ...@@ -142,10 +142,21 @@ class DesktopBrowserBackend(chrome_browser_backend.ChromeBrowserBackend):
if not os.path.isfile(port_file): if not os.path.isfile(port_file):
# File isn't ready yet. Return false. Will retry. # File isn't ready yet. Return false. Will retry.
return False return False
with open(port_file) as f: # Attempt to avoid reading the file until it's populated.
port_string = f.read() got_port = False
self._port = int(port_string) try:
logging.info('Discovered ephemeral port %s' % self._port) 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() return super(DesktopBrowserBackend, self).HasBrowserFinishedLaunching()
def GetBrowserStartupArgs(self): def GetBrowserStartupArgs(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment