Title: [290357] trunk/Source/WebCore
Revision
290357
Author
sihui_...@apple.com
Date
2022-02-23 00:50:18 -0800 (Wed, 23 Feb 2022)

Log Message

REGRESSION(r289474): [iOS] ASSERTION FAILED: isMainThread() under WebCore::IDBServer::UniqueIDBDatabase::abortActiveTransactions()
https://bugs.webkit.org/show_bug.cgi?id=237066
<rdar://problem/89324810>

Reviewed by Chris Dumez.

We no longer need the assertion because the function can be called on non-main thread since r289474, where we
started to abort transactions for suspension on WorkQueue. To avoid confusion, rename mainThreadAbortResult to
suspensionAbortResult.

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortActiveTransactions):
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::setSuspensionAbortResult):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::suspensionAbortResult const):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::setMainThreadAbortResult): Deleted.
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::mainThreadAbortResult const): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (290356 => 290357)


--- trunk/Source/WebCore/ChangeLog	2022-02-23 08:23:37 UTC (rev 290356)
+++ trunk/Source/WebCore/ChangeLog	2022-02-23 08:50:18 UTC (rev 290357)
@@ -1,3 +1,24 @@
+2022-02-23  Sihui Liu  <sihui_...@apple.com>
+
+        REGRESSION(r289474): [iOS] ASSERTION FAILED: isMainThread() under WebCore::IDBServer::UniqueIDBDatabase::abortActiveTransactions()
+        https://bugs.webkit.org/show_bug.cgi?id=237066
+        <rdar://problem/89324810>
+
+        Reviewed by Chris Dumez.
+
+        We no longer need the assertion because the function can be called on non-main thread since r289474, where we 
+        started to abort transactions for suspension on WorkQueue. To avoid confusion, rename mainThreadAbortResult to 
+        suspensionAbortResult.
+
+        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
+        (WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
+        (WebCore::IDBServer::UniqueIDBDatabase::abortActiveTransactions):
+        * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
+        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::setSuspensionAbortResult):
+        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::suspensionAbortResult const):
+        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::setMainThreadAbortResult): Deleted.
+        (WebCore::IDBServer::UniqueIDBDatabaseTransaction::mainThreadAbortResult const): Deleted.
+
 2022-02-23  Kimmo Kinnunen  <kkinnu...@apple.com>
 
         Crash when calling WEBGL_lose_context.loseContext() after the context has been lost

Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp (290356 => 290357)


--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp	2022-02-23 08:23:37 UTC (rev 290356)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp	2022-02-23 08:50:18 UTC (rev 290357)
@@ -1184,9 +1184,8 @@
         return;
     }
 
-    // If transaction is already aborted on the main thread for suspension,
-    // return the result of that abort.
-    if (auto existingAbortResult = takenTransaction->mainThreadAbortResult()) {
+    // If transaction is already aborted for suspension, return the result of that abort.
+    if (auto existingAbortResult = takenTransaction->suspensionAbortResult()) {
         callback(*existingAbortResult);
         transactionCompleted(WTFMove(takenTransaction));
         return;
@@ -1475,11 +1474,9 @@
 
 void UniqueIDBDatabase::abortActiveTransactions()
 {
-    ASSERT(isMainThread());
-
     for (auto& identifier : copyToVector(m_inProgressTransactions.keys())) {
         auto transaction = m_inProgressTransactions.get(identifier);
-        transaction->setMainThreadAbortResult(m_backingStore->abortTransaction(transaction->info().identifier()));
+        transaction->setSuspensionAbortResult(m_backingStore->abortTransaction(transaction->info().identifier()));
     }
 }
 

Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h (290356 => 290357)


--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h	2022-02-23 08:23:37 UTC (rev 290356)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h	2022-02-23 08:50:18 UTC (rev 290357)
@@ -87,8 +87,8 @@
 
     const Vector<uint64_t>& objectStoreIdentifiers();
 
-    void setMainThreadAbortResult(const IDBError& error) { m_mainThreadAbortResult = { error }; }
-    const std::optional<IDBError>& mainThreadAbortResult() const { return m_mainThreadAbortResult; }
+    void setSuspensionAbortResult(const IDBError& error) { m_suspensionAbortResult = { error }; }
+    const std::optional<IDBError>& suspensionAbortResult() const { return m_suspensionAbortResult; }
 
 private:
     UniqueIDBDatabaseTransaction(UniqueIDBDatabaseConnection&, const IDBTransactionInfo&);
@@ -100,7 +100,7 @@
 
     Vector<uint64_t> m_objectStoreIdentifiers;
 
-    std::optional<IDBError> m_mainThreadAbortResult;
+    std::optional<IDBError> m_suspensionAbortResult;
     Deque<IDBError> m_requestResults;
 };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to