Index: telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
diff --git a/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py b/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
index e2cedb744857bbd6886669a9f69166f38ed0d018..438febd164cf2aef02fd04bea85d2bc75222d846 100644 |
--- a/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
+++ b/telemetry/telemetry/internal/backends/chrome/desktop_browser_finder.py |
@@ -60,12 +60,39 @@ class PossibleDesktopBrowser(possible_browser.PossibleBrowser): |
self._InitPlatformIfNeeded() |
- browser_backend = desktop_browser_backend.DesktopBrowserBackend( |
- self._platform_backend, |
- finder_options.browser_options, self._local_executable, |
- self._flash_path, self._is_content_shell, self._browser_directory) |
- return browser.Browser( |
- browser_backend, self._platform_backend, self._credentials_path) |
+ num_retries = 3 |
+ for x in range(0, num_retries): |
+ returned_browser = None |
+ try: |
+ returned_browser = None |
+ restart = 'Starting browser, attempt %d of %d' % ((x + 1), num_retries) |
nednguyen
2017/05/07 23:47:43
Can you remove this the line below. We shouldn't a
Ken Russell (switch to Gerrit)
2017/05/08 20:44:11
Yes, done.
|
+ logging.warning(restart) |
+ |
+ browser_backend = desktop_browser_backend.DesktopBrowserBackend( |
+ self._platform_backend, |
+ finder_options.browser_options, self._local_executable, |
+ self._flash_path, self._is_content_shell, self._browser_directory) |
+ |
+ returned_browser = browser.Browser( |
+ browser_backend, self._platform_backend, self._credentials_path) |
+ |
+ # Try fetching the zeroth tab. If this works, then the browser |
+ # appears to be working. |
+ _ = returned_browser.tabs[0] |
+ |
+ logging.warning('Started browser successfully.') |
nednguyen
2017/05/07 23:47:43
I think this log is not needed.
Ken Russell (switch to Gerrit)
2017/05/08 20:44:11
OK, removed.
|
+ return returned_browser |
+ except Exception: |
+ logging.warning('Browser creation failed, retrying') |
nednguyen
2017/05/07 23:47:43
logging.warning('Browser creation failed, retrying
Ken Russell (switch to Gerrit)
2017/05/08 20:44:11
Done, slightly rephrased.
|
+ # Attempt to clean up things left over from the failed browser startup. |
+ try: |
+ if returned_browser: |
+ returned_browser.Close() |
+ except Exception: |
+ pass |
+ # Re-raise the exception the last time through. |
+ if x == num_retries - 1: |
+ raise |
def SupportsOptions(self, browser_options): |
if ((len(browser_options.extensions_to_load) != 0) |