Title: [235456] trunk/Source/WebCore
Revision
235456
Author
[email protected]
Date
2018-08-28 21:52:45 -0700 (Tue, 28 Aug 2018)

Log Message

IDBDatabase should not return true to hasPendingActivity after being stopped
https://bugs.webkit.org/show_bug.cgi?id=189073

Reviewed by Darin Adler.

There is a chance that IDBDatabase::hasPendingActivity returns true.
The case that might happen is when stop() is called but there are still some active/being committed transactions.
In that case, hasPendingActivity will return true until these transactions get finalized.
While these transactions will probably be finalized at some point, it delays GC for no good reason.
And we might want in a follow-up patch to assert that ActiveDOMObject are GC-able whenever their context is stopped.
For that purpose, make sure hasPendingActivity returns false when context is stopped.

* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::hasPendingActivity const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (235455 => 235456)


--- trunk/Source/WebCore/ChangeLog	2018-08-29 04:06:53 UTC (rev 235455)
+++ trunk/Source/WebCore/ChangeLog	2018-08-29 04:52:45 UTC (rev 235456)
@@ -1,3 +1,20 @@
+2018-08-28  Youenn Fablet  <[email protected]>
+
+        IDBDatabase should not return true to hasPendingActivity after being stopped
+        https://bugs.webkit.org/show_bug.cgi?id=189073
+
+        Reviewed by Darin Adler.
+
+        There is a chance that IDBDatabase::hasPendingActivity returns true.
+        The case that might happen is when stop() is called but there are still some active/being committed transactions.
+        In that case, hasPendingActivity will return true until these transactions get finalized.
+        While these transactions will probably be finalized at some point, it delays GC for no good reason.
+        And we might want in a follow-up patch to assert that ActiveDOMObject are GC-able whenever their context is stopped.
+        For that purpose, make sure hasPendingActivity returns false when context is stopped.
+
+        * Modules/indexeddb/IDBDatabase.cpp:
+        (WebCore::IDBDatabase::hasPendingActivity const):
+
 2018-08-28  Don Olmstead  <[email protected]>
 
         [CMake] Use CMake's FindFreetype

Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp (235455 => 235456)


--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp	2018-08-29 04:06:53 UTC (rev 235455)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp	2018-08-29 04:52:45 UTC (rev 235456)
@@ -76,7 +76,7 @@
 {
     ASSERT(&originThread() == &Thread::current() || mayBeGCThread());
 
-    if (m_closedInServer)
+    if (m_closedInServer || isContextStopped())
         return false;
 
     if (!m_activeTransactions.isEmpty() || !m_committingTransactions.isEmpty() || !m_abortingTransactions.isEmpty())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to