Modified: branches/safari-600.1-branch/Source/WebKit2/ChangeLog (171764 => 171765)
--- branches/safari-600.1-branch/Source/WebKit2/ChangeLog 2014-07-29 21:03:06 UTC (rev 171764)
+++ branches/safari-600.1-branch/Source/WebKit2/ChangeLog 2014-07-29 21:25:23 UTC (rev 171765)
@@ -1,5 +1,23 @@
2014-07-29 Lucas Forschler <lforsch...@apple.com>
+ Merge r171748
+
+ 2014-07-29 Commit Queue <commit-qu...@webkit.org>
+
+ Unreviewed, rolling out r171704.
+ https://bugs.webkit.org/show_bug.cgi?id=135389
+
+ Broke two IndexedDB tests (Requested by ap on #webkit).
+
+ Reverted changeset:
+
+ "IDB transactions never reset if the Web Process ends before
+ cleaning up"
+ https://bugs.webkit.org/show_bug.cgi?id=135218
+ http://trac.webkit.org/changeset/171704
+
+2014-07-29 Lucas Forschler <lforsch...@apple.com>
+
Merge r171709
2014-07-28 Benjamin Poulain <bpoul...@apple.com>
Modified: branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp (171764 => 171765)
--- branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp 2014-07-29 21:03:06 UTC (rev 171764)
+++ branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp 2014-07-29 21:25:23 UTC (rev 171765)
@@ -71,9 +71,7 @@
void DatabaseToWebProcessConnection::didClose(IPC::Connection*)
{
- // The WebProcess has disconnected, close all of the connections associated with it
- while (!m_idbConnections.isEmpty())
- removeDatabaseProcessIDBConnection(m_idbConnections.begin()->key);
+
}
void DatabaseToWebProcessConnection::didReceiveInvalidMessage(IPC::Connection*, IPC::StringReference messageReceiverName, IPC::StringReference messageName)
Modified: branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp (171764 => 171765)
--- branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp 2014-07-29 21:03:06 UTC (rev 171764)
+++ branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp 2014-07-29 21:25:23 UTC (rev 171765)
@@ -113,10 +113,9 @@
void UniqueIDBDatabase::unregisterConnection(DatabaseProcessIDBConnection& connection)
{
ASSERT(m_connections.contains(&connection));
- resetAllTransactions(connection);
m_connections.remove(&connection);
- if (m_connections.isEmpty() && m_pendingTransactionRollbacks.isEmpty()) {
+ if (m_connections.isEmpty()) {
shutdown(UniqueIDBDatabaseShutdownType::NormalShutdown);
DatabaseProcess::shared().removeUniqueIDBDatabase(*this);
}
@@ -338,12 +337,10 @@
ASSERT(RunLoop::isMain());
RefPtr<AsyncRequest> request = m_pendingTransactionRequests.take(transactionIdentifier);
+ if (!request)
+ return;
- if (request)
- request->completeRequest(success);
-
- if (m_pendingTransactionRollbacks.contains(transactionIdentifier))
- finalizeRollback(transactionIdentifier);
+ request->completeRequest(success);
}
void UniqueIDBDatabase::changeDatabaseVersion(const IDBIdentifier& transactionIdentifier, uint64_t newVersion, std::function<void(bool)> successCallback)
@@ -717,7 +714,6 @@
bool success = m_backingStore->establishTransaction(transactionIdentifier, objectStoreIDs, mode);
- postMainThreadTask(createAsyncTask(*this, &UniqueIDBDatabase::didEstablishTransaction, transactionIdentifier, success));
postMainThreadTask(createAsyncTask(*this, &UniqueIDBDatabase::didCompleteTransactionOperation, transactionIdentifier, success));
}
@@ -748,7 +744,6 @@
bool success = m_backingStore->resetTransaction(transactionIdentifier);
- postMainThreadTask(createAsyncTask(*this, &UniqueIDBDatabase::didResetTransaction, transactionIdentifier, success));
postMainThreadTask(createAsyncTask(*this, &UniqueIDBDatabase::didCompleteTransactionOperation, transactionIdentifier, success));
}
@@ -1075,62 +1070,6 @@
request->completeRequest(errorCode, errorMessage);
}
-void UniqueIDBDatabase::didEstablishTransaction(const IDBIdentifier& transactionIdentifier, bool success)
-{
- ASSERT(RunLoop::isMain());
- if (!success)
- return;
-
- auto transactions = m_establishedTransactions.add(&transactionIdentifier.connection(), HashSet<IDBIdentifier>());
- transactions.iterator->value.add(transactionIdentifier);
-}
-
-void UniqueIDBDatabase::didResetTransaction(const IDBIdentifier& transactionIdentifier, bool success)
-{
- ASSERT(RunLoop::isMain());
- if (!success)
- return;
-
- auto transactions = m_establishedTransactions.find(&transactionIdentifier.connection());
- if (transactions != m_establishedTransactions.end())
- transactions.get()->value.remove(transactionIdentifier);
-}
-
-void UniqueIDBDatabase::resetAllTransactions(const DatabaseProcessIDBConnection& connection)
-{
- ASSERT(RunLoop::isMain());
- auto transactions = m_establishedTransactions.find(&connection);
- if (transactions == m_establishedTransactions.end() || !m_acceptingNewRequests)
- return;
-
- for (auto& transactionIdentifier : transactions.get()->value) {
- m_pendingTransactionRollbacks.add(transactionIdentifier);
- if (!m_pendingTransactionRequests.contains(transactionIdentifier))
- finalizeRollback(transactionIdentifier);
- }
-}
-
-void UniqueIDBDatabase::finalizeRollback(const WebKit::IDBIdentifier& transactionId)
-{
- ASSERT(RunLoop::isMain());
- ASSERT(m_pendingTransactionRollbacks.contains(transactionId));
- ASSERT(!m_pendingTransactionRequests.contains(transactionId));
- rollbackTransaction(transactionId, [this, transactionId](bool) {
- ASSERT(RunLoop::isMain());
- if (m_pendingTransactionRequests.contains(transactionId))
- return;
-
- ASSERT(m_pendingTransactionRollbacks.contains(transactionId));
- m_pendingTransactionRollbacks.remove(transactionId);
- resetTransaction(transactionId, [this, transactionId](bool) {
- if (m_acceptingNewRequests && m_connections.isEmpty() && m_pendingTransactionRollbacks.isEmpty()) {
- shutdown(UniqueIDBDatabaseShutdownType::NormalShutdown);
- DatabaseProcess::shared().removeUniqueIDBDatabase(*this);
- }
- });
- });
-}
-
String UniqueIDBDatabase::absoluteDatabaseDirectory() const
{
ASSERT(RunLoop::isMain());
Modified: branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h (171764 => 171765)
--- branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h 2014-07-29 21:03:06 UTC (rev 171764)
+++ branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h 2014-07-29 21:25:23 UTC (rev 171765)
@@ -185,17 +185,10 @@
void didShutdownBackingStore(UniqueIDBDatabaseShutdownType);
void didCompleteBoolRequest(uint64_t requestID, bool success);
- void didEstablishTransaction(const IDBIdentifier& transactionIdentifier, bool success);
- void didResetTransaction(const IDBIdentifier& transactionIdentifier, bool success);
- void resetAllTransactions(const DatabaseProcessIDBConnection&);
- void finalizeRollback(const IDBIdentifier& transactionId);
-
bool m_acceptingNewRequests;
- HashMap<const DatabaseProcessIDBConnection*, HashSet<IDBIdentifier>> m_establishedTransactions;
Deque<RefPtr<AsyncRequest>> m_pendingMetadataRequests;
HashMap<IDBIdentifier, RefPtr<AsyncRequest>> m_pendingTransactionRequests;
- HashSet<IDBIdentifier> m_pendingTransactionRollbacks;
HashMap<uint64_t, RefPtr<AsyncRequest>> m_pendingDatabaseTasks;
RefPtr<AsyncRequest> m_pendingShutdownTask;
Modified: branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp (171764 => 171765)
--- branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp 2014-07-29 21:03:06 UTC (rev 171764)
+++ branches/safari-600.1-branch/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp 2014-07-29 21:25:23 UTC (rev 171765)
@@ -391,11 +391,6 @@
return false;
}
- if (!transaction->inProgress()) {
- LOG_ERROR("Attempt to rollback a transaction that hasn't begun");
- return false;
- }
-
return transaction->rollback();
}