Changeset 255329 in webkit


Ignore:
Timestamp:
Jan 28, 2020 5:39:47 PM (4 years ago)
Author:
Chris Dumez
Message:

REGRESSION (r252064): [ Mac iOS ] storage/websql/statement-error-callback.html is timing out flakily
https://bugs.webkit.org/show_bug.cgi?id=206291
<rdar://problem/58606666>

Reviewed by Maciej Stachowiak.

Source/WebCore:

I found that extending the lifetime of the SQLTransaction by capturing protectedThis in the event loop
task was the source of the flaky timeouts & crashes. Queueing this event loop task in
notifyDatabaseThreadIsShuttingDown() is actually not necessary because calling callErrorCallbackDueToInterruption()
directly would schedule the event loop task for us. Also, in callErrorCallbackDueToInterruption(),
the event loop task only keeps the error callback alive, not just the SQLTransaction object.

No new tests, unskipped existing test.

  • Modules/webdatabase/SQLTransaction.cpp:

(WebCore::SQLTransaction::notifyDatabaseThreadIsShuttingDown):

LayoutTests:

Unskip test that is no longer flaky.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r255323 r255329  
     12020-01-28  Chris Dumez  <cdumez@apple.com>
     2
     3        REGRESSION (r252064): [ Mac iOS ] storage/websql/statement-error-callback.html is timing out flakily
     4        https://bugs.webkit.org/show_bug.cgi?id=206291
     5        <rdar://problem/58606666>
     6
     7        Reviewed by Maciej Stachowiak.
     8
     9        Unskip test that is no longer flaky.
     10
     11        * platform/ios/TestExpectations:
     12        * platform/mac/TestExpectations:
     13
    1142020-01-28  Jacob Uphoff  <jacob_uphoff@apple.com>
    215
  • trunk/LayoutTests/platform/ios/TestExpectations

    r255274 r255329  
    34603460webkit.org/b/200043 fast/text/international/system-language/navigator-language [ Pass Failure ]
    34613461
    3462 webkit.org/b/206291 storage/websql/statement-error-callback.html [ Pass Timeout ]
    3463 
    34643462webkit.org/b/203222 svg/wicd/rightsizing-grid.xhtml [ Pass Failure ]
    34653463
  • trunk/LayoutTests/platform/mac/TestExpectations

    r255274 r255329  
    19351935webkit.org/b/77568 [ Sierra HighSierra Mojave ] fast/text/locale-shaping-complex.html [ ImageOnlyFailure ]
    19361936
    1937 webkit.org/b/206291 storage/websql/statement-error-callback.html [ Pass Timeout ]
    1938 
    19391937webkit.org/b/203222 svg/wicd/rightsizing-grid.xhtml [ Pass Failure ]
    19401938
  • trunk/Source/WebCore/ChangeLog

    r255322 r255329  
     12020-01-28  Chris Dumez  <cdumez@apple.com>
     2
     3        REGRESSION (r252064): [ Mac iOS ] storage/websql/statement-error-callback.html is timing out flakily
     4        https://bugs.webkit.org/show_bug.cgi?id=206291
     5        <rdar://problem/58606666>
     6
     7        Reviewed by Maciej Stachowiak.
     8
     9        I found that extending the lifetime of the SQLTransaction by capturing protectedThis in the event loop
     10        task was the source of the flaky timeouts & crashes. Queueing this event loop task in
     11        notifyDatabaseThreadIsShuttingDown() is actually not necessary because calling callErrorCallbackDueToInterruption()
     12        directly would schedule the event loop task for us. Also, in callErrorCallbackDueToInterruption(),
     13        the event loop task only keeps the error callback alive, not just the SQLTransaction object.
     14
     15        No new tests, unskipped existing test.
     16
     17        * Modules/webdatabase/SQLTransaction.cpp:
     18        (WebCore::SQLTransaction::notifyDatabaseThreadIsShuttingDown):
     19
    1202020-01-28  Tim Horton  <timothy_horton@apple.com>
    221
  • trunk/Source/WebCore/Modules/webdatabase/SQLTransaction.cpp

    r252824 r255329  
    129129{
    130130    callOnMainThread([this, protectedThis = makeRef(*this)]() mutable {
    131         m_database->document().eventLoop().queueTask(TaskSource::Networking, [this, protectedThis = protectedThis.copyRef()]() mutable {
    132             callErrorCallbackDueToInterruption();
    133         });
     131        callErrorCallbackDueToInterruption();
    134132    });
    135133
Note: See TracChangeset for help on using the changeset viewer.