Title: [290200] trunk/Source/WebKit
Revision
290200
Author
sihui_...@apple.com
Date
2022-02-18 23:22:47 -0800 (Fri, 18 Feb 2022)

Log Message

ASSERTION FAILED: !hasAnyOpenConnections() in UniqueIDBDatabase::~UniqueIDBDatabase()
https://bugs.webkit.org/show_bug.cgi?id=236856

Reviewed by Chris Dumez.

The assertion is hit when running API test WebKit.MigrateIndexedDBDataToGeneralStorageDirectory. We need to
properly close UniqueIDBDatabase before it's destroyed.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::storageSession): remove logging as it was added when we had check for
default session. Since we don't have the check now, the logging does not make much sense.
* NetworkProcess/storage/IDBStorageManager.cpp:
(WebKit::IDBStorageManager::~IDBStorageManager):
* NetworkProcess/storage/IDBStorageManager.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (290199 => 290200)


--- trunk/Source/WebKit/ChangeLog	2022-02-19 07:19:34 UTC (rev 290199)
+++ trunk/Source/WebKit/ChangeLog	2022-02-19 07:22:47 UTC (rev 290200)
@@ -1,3 +1,20 @@
+2022-02-18  Sihui Liu  <sihui_...@apple.com>
+
+        ASSERTION FAILED: !hasAnyOpenConnections() in UniqueIDBDatabase::~UniqueIDBDatabase()
+        https://bugs.webkit.org/show_bug.cgi?id=236856
+
+        Reviewed by Chris Dumez.
+
+        The assertion is hit when running API test WebKit.MigrateIndexedDBDataToGeneralStorageDirectory. We need to
+        properly close UniqueIDBDatabase before it's destroyed.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::storageSession): remove logging as it was added when we had check for
+        default session. Since we don't have the check now, the logging does not make much sense.
+        * NetworkProcess/storage/IDBStorageManager.cpp:
+        (WebKit::IDBStorageManager::~IDBStorageManager):
+        * NetworkProcess/storage/IDBStorageManager.h:
+
 2022-02-18  Ben Nham  <n...@apple.com>
 
         Hook up PushManager to permission state

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (290199 => 290200)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2022-02-19 07:19:34 UTC (rev 290199)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2022-02-19 07:22:47 UTC (rev 290200)
@@ -750,10 +750,7 @@
 
 NetworkStorageSession* NetworkConnectionToWebProcess::storageSession()
 {
-    auto* session = networkProcess().storageSession(m_sessionID);
-    if (!session)
-        LOG_ERROR("Non-default storage session was requested, but there was no session for it. Please file a bug unless you just disabled private browsing, in which case it's an expected race.");
-    return session;
+    return networkProcess().storageSession(m_sessionID);
 }
 
 void NetworkConnectionToWebProcess::startDownload(DownloadID downloadID, const ResourceRequest& request, std::optional<NavigatingToAppBoundDomain> isNavigatingToAppBoundDomain, const String& suggestedName)

Modified: trunk/Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp (290199 => 290200)


--- trunk/Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp	2022-02-19 07:19:34 UTC (rev 290199)
+++ trunk/Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp	2022-02-19 07:22:47 UTC (rev 290200)
@@ -120,6 +120,12 @@
 {
 }
 
+IDBStorageManager::~IDBStorageManager()
+{
+    for (auto& database : m_databases.values())
+        database->immediateClose();
+}
+
 bool IDBStorageManager::isActive() const
 {
     return !m_databases.isEmpty();

Modified: trunk/Source/WebKit/NetworkProcess/storage/IDBStorageManager.h (290199 => 290200)


--- trunk/Source/WebKit/NetworkProcess/storage/IDBStorageManager.h	2022-02-19 07:19:34 UTC (rev 290199)
+++ trunk/Source/WebKit/NetworkProcess/storage/IDBStorageManager.h	2022-02-19 07:22:47 UTC (rev 290200)
@@ -52,6 +52,7 @@
 
     using QuotaCheckFunction = Function<void(uint64_t spaceRequested, CompletionHandler<void(bool)>&&)>;
     IDBStorageManager(const String& path, IDBStorageRegistry&, QuotaCheckFunction&&);
+    ~IDBStorageManager();
     bool isActive() const;
     bool hasDataInMemory() const;
     void closeDatabasesForDeletion();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to