Title: [240778] trunk/Source/WebDriver
Revision
240778
Author
carlo...@webkit.org
Date
2019-01-31 05:06:16 -0800 (Thu, 31 Jan 2019)

Log Message

[GLIB] WebDriver: race condition when session starts
https://bugs.webkit.org/show_bug.cgi?id=194086

Reviewed by Philippe Normand.

This is causing flakiness in the bots, I can only reproduce it locally when my CPUs are at 100%. The thing
is that sometimes we receive an empty target list right after the connection is established because
RemoteInspector::setClient() calls pushListingsSoon() before a target has been registered. Most of the times the
target is registered before the listing is pushed, but it can happen that when pushed, the listing is still
empty. After the target is registered an empty target list means the connection was lost, so we clear the
connection and target. We need to ensure we do that only after the target has been registered.

* glib/SessionHostGlib.cpp:

Modified Paths

Diff

Modified: trunk/Source/WebDriver/ChangeLog (240777 => 240778)


--- trunk/Source/WebDriver/ChangeLog	2019-01-31 10:42:44 UTC (rev 240777)
+++ trunk/Source/WebDriver/ChangeLog	2019-01-31 13:06:16 UTC (rev 240778)
@@ -1,3 +1,19 @@
+2019-01-31  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        [GLIB] WebDriver: race condition when session starts
+        https://bugs.webkit.org/show_bug.cgi?id=194086
+
+        Reviewed by Philippe Normand.
+
+        This is causing flakiness in the bots, I can only reproduce it locally when my CPUs are at 100%. The thing
+        is that sometimes we receive an empty target list right after the connection is established because
+        RemoteInspector::setClient() calls pushListingsSoon() before a target has been registered. Most of the times the
+        target is registered before the listing is pushed, but it can happen that when pushed, the listing is still
+        empty. After the target is registered an empty target list means the connection was lost, so we clear the
+        connection and target. We need to ensure we do that only after the target has been registered.
+
+        * glib/SessionHostGlib.cpp:
+
 2019-01-29  Carlos Garcia Campos  <cgar...@igalia.com>
 
         WebDriver: POST commands require a valid parameters object

Modified: trunk/Source/WebDriver/glib/SessionHostGlib.cpp (240777 => 240778)


--- trunk/Source/WebDriver/glib/SessionHostGlib.cpp	2019-01-31 10:42:44 UTC (rev 240777)
+++ trunk/Source/WebDriver/glib/SessionHostGlib.cpp	2019-01-31 13:06:16 UTC (rev 240778)
@@ -331,9 +331,11 @@
     ASSERT(targetList.size() <= 1);
     if (targetList.isEmpty()) {
         m_target = Target();
-        m_connectionID = 0;
-        if (m_dbusConnection)
-            g_dbus_connection_close(m_dbusConnection.get(), nullptr, nullptr, nullptr);
+        if (m_connectionID) {
+            if (m_dbusConnection)
+                g_dbus_connection_close(m_dbusConnection.get(), nullptr, nullptr, nullptr);
+            m_connectionID = 0;
+        }
         return;
     }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to