Changeset 245488 in webkit


Ignore:
Timestamp:
May 17, 2019 4:44:23 PM (5 years ago)
Author:
sihui_liu@apple.com
Message:

ASSERTION FAILED: !m_backingStore in WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore(uint64_t)
https://bugs.webkit.org/show_bug.cgi?id=197741
<rdar://problem/50625006>

Reviewed by Youenn Fablet.

If an open request is made before a delete request, open task should be performed before delete task on the
database thread. After r242911, open request needs to wait decision of StorageQuotaManager before posting task
to database thread, while delete request needs not. This makes deletion happen before open.

We need to make sure tasks are in correct order by not starting next open or delete request when database is in
the middle of open or deletion.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
(WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r245483 r245488  
     12019-05-17  Sihui Liu  <sihui_liu@apple.com>
     2
     3        ASSERTION FAILED: !m_backingStore in WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore(uint64_t)
     4        https://bugs.webkit.org/show_bug.cgi?id=197741
     5        <rdar://problem/50625006>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        If an open request is made before a delete request, open task should be performed before delete task on the
     10        database thread. After r242911, open request needs to wait decision of StorageQuotaManager before posting task
     11        to database thread, while delete request needs not. This makes deletion happen before open.
     12
     13        We need to make sure tasks are in correct order by not starting next open or delete request when database is in
     14        the middle of open or deletion.
     15
     16        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
     17        (WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
     18        (WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):
     19
    1202019-05-17  Antoine Quint  <graouts@apple.com>
    221
  • trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp

    r244687 r245488  
    229229                    m_currentOpenDBRequest->connection().didOpenDatabase(result);
    230230                    m_currentOpenDBRequest = nullptr;
     231                    m_isOpeningBackingStore = false;
    231232                    break;
    232233                }
     
    461462    ASSERT(!m_hardClosedForUserDelete);
    462463
    463     if (m_deleteBackingStoreInProgress)
     464    if (m_deleteBackingStoreInProgress || m_isOpeningBackingStore)
    464465        return;
    465466
Note: See TracChangeset for help on using the changeset viewer.