RESOLVED WONTFIX Bug 65862
[Chromium] storage/indexeddb tests sometimes timeout
https://bugs.webkit.org/show_bug.cgi?id=65862
Summary [Chromium] storage/indexeddb tests sometimes timeout
Jian Li
Reported 2011-08-08 10:56:38 PDT
storage/indexeddb/index-cursor.html timeouts on Mac Debug
Attachments
Patch (1.60 KB, patch)
2012-02-06 11:37 PST, Joshua Bell
no flags
Patch (85.21 KB, patch)
2012-10-03 11:34 PDT, Joshua Bell
no flags
Joshua Bell
Comment 1 2012-01-27 13:56:51 PST
Does this still occur? I'm fairly sure I know what this was, and it should be fixed now.
Joshua Bell
Comment 2 2012-02-06 11:37:47 PST
Joshua Bell
Comment 3 2012-02-06 11:38:30 PST
tony@ - r?
Tony Chang
Comment 4 2012-02-06 11:49:17 PST
FWIW, changes that only touch test_expectations.txt can be landed unreviewed (but make sure to lint the test files!).
Joshua Bell
Comment 5 2012-02-06 11:54:19 PST
Comment on attachment 125677 [details] Patch Thanks!
WebKit Review Bot
Comment 6 2012-02-06 14:55:44 PST
Comment on attachment 125677 [details] Patch Clearing flags on attachment: 125677 Committed r106857: <http://trac.webkit.org/changeset/106857>
WebKit Review Bot
Comment 7 2012-02-06 14:55:48 PST
All reviewed patches have been landed. Closing bug.
Joshua Bell
Comment 8 2012-02-07 10:53:37 PST
Joshua Bell
Comment 9 2012-02-07 12:01:44 PST
Marked as slow again: BUGWK65862 MAC DEBUG SLOW : storage/indexeddb/index-cursor.html = PASS From looking at the output, it appears this is truly just a slow test that trips the timeout on the MAC DEBUG combination. It does several iterations over a dataset, but it's not fetching enough data in each test to take advantage of the prefetch cache and the cache isn't saved between runs. We'll probably have to keep this marked as SLOW until more performance work is done.
Joshua Bell
Comment 10 2012-02-07 12:02:15 PST
For reference, the re-marking was: http://trac.webkit.org/changeset/106971
Ojan Vafai
Comment 11 2012-10-01 11:52:12 PDT
Turning this into a meta bug for the indexeddb tests being slow. I'm marking them all as slow. http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=storage%2Findexeddb A large number of them timeout. It sounds like there are some performance problems that will be resolved and then we can unmark them as slow?
Joshua Bell
Comment 12 2012-10-01 11:59:55 PDT
(In reply to comment #11) > Turning this into a meta bug for the indexeddb tests being slow. I'm marking them all as slow. > > http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=storage%2Findexeddb > > A large number of them timeout. It sounds like there are some performance problems that will be resolved and then we can unmark them as slow? Thanks! What seems to be common to the layout tests that are timing out (other than the index-cursor, which just does WAY too much work and produces a huge amount of output) is that they open/close multiple database connections. This seems to intermittently take much more time than expected, causing the timeout. We're not sure at this point if it's something to do with running the tests in DRT or a real problem, and of course the issue disappears the minute we look closely at it.
Joshua Bell
Comment 13 2012-10-03 11:34:14 PDT
Joshua Bell
Comment 14 2012-10-03 11:37:19 PDT
ojan@ - r? storage/indexeddb/index-cursor.html ? (This is obviously not a comprehensive fix, but that particular test is atrocious.)
Joshua Bell
Comment 15 2012-10-03 11:38:44 PDT
(In reply to comment #14) > ojan@ - r? storage/indexeddb/index-cursor.html ? That should read: ojan@ - r? on reducing the output of storage/indexeddb/index-cursor.html ?
WebKit Review Bot
Comment 16 2012-10-03 15:41:18 PDT
Comment on attachment 166929 [details] Patch Clearing flags on attachment: 166929 Committed r130334: <http://trac.webkit.org/changeset/130334>
WebKit Review Bot
Comment 17 2012-10-03 15:41:22 PDT
All reviewed patches have been landed. Closing bug.
Joshua Bell
Comment 18 2012-10-03 15:47:00 PDT
Re-opening, as this has become a tracking bug for general storage/indexeddb test slowness.
Joshua Bell
Comment 19 2012-10-05 13:35:22 PDT
FYI, storage/indexeddb/index-cursor.html run times have dropped from 12s/16s/25s linux-debug/win-debug/mac-debug respectively to 2s/3s/2s. w00t!
Joshua Bell
Comment 20 2012-10-08 09:18:35 PDT
Root cause of the slow tests appears to be a leveldb issue: http://code.google.com/p/leveldb/issues/detail?id=125 Each open() or deleteDatabase() could take an additional second(!) to execute. The persnickety tests that open/delete multiple times would be the most affected, which is what #c12 points to.
Joshua Bell
Comment 21 2012-10-15 12:24:52 PDT
If the leveldb patch helps, I would expect times like this: http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&tests=storage%2Findexeddb%2Fintversion-encoding.html ...to drop once chromium r161754 rolls into WebKit.
Joshua Bell
Comment 22 2012-10-15 15:13:20 PDT
(In reply to comment #21) > If the leveldb patch helps, I would expect times like this: > > http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&tests=storage%2Findexeddb%2Fintversion-encoding.html > > ...to drop once chromium r161754 rolls into WebKit. ... which it did in http://trac.webkit.org/changeset/131332 and the times are now all < 1 second. Fingers crossed...
Joshua Bell
Comment 23 2012-10-16 09:58:25 PDT
Ojan - I'll let you make the call on un-marking the tests as slow, but the flakiness dashboard looks promising.
Ojan Vafai
Comment 24 2012-10-16 10:52:26 PDT
Overall the performance is much much better. Thanks! Unfortunately the upstream Chromium Linux Release bot seems to still have the occasional slow run for most tests. If they weren't marked slow, they would have timed out (any time >= 6 would be a timeout on release Chromium bots). Many of the timeouts are after http://trac.webkit.org/changeset/131332. The vast majority of the time, all these tests take <1 second on this bot. So, it seems like there might be some fishy locking or something going on for each of these tests to intermittently get 10x slower. http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&tests=storage%2Findexeddb
Joshua Bell
Comment 25 2012-10-17 09:34:43 PDT
By dropping the timeout to 3s locally and running all storage/indexeddb tests under fully-parallel (32 workers), I was able to semi-reliably get timeouts and add some instrumentation. It looks like the symptom for e.g. key-generator.html that the deleteDatabase() call can take around half a second when the system is loaded. This is all going into the commit of the delete write-batch, which is forced to be synchronous on disk via leveldb writeOptions.sync = true which forces an fflush. That would be the "lock" that ojan speculated about. Setting writeOptions.sync = false drops the times significantly. Two approaches come to mind: * Add an Internals API that lets us turn off sync writes for tests * Switch back to using in-memory backing stores but come up with a mechanism to retain them for the lifetime of a test.
Alec Flett
Comment 26 2012-10-17 12:08:31 PDT
I like 1) - and I wonder if we could synchronously delete the database metadata, but asynchronously delete the data? It may not actually help that much though.
Joshua Bell
Comment 27 2012-10-17 15:20:33 PDT
(In reply to comment #26) > I wonder if we could synchronously delete the database metadata, but asynchronously delete the data? It may not actually help that much though. When this is running in DumpRenderTree I don't think we gain much from it being async.
Dimitri Glazkov (Google)
Comment 28 2012-11-13 10:13:34 PST
Looks like now it's just flakey.
Joshua Bell
Comment 29 2013-02-13 12:41:41 PST
FWIW, I moved my /tmp dir to a ramdisk. All 200 IDB layout tests now take only about 2 seconds to run since disk seek time is no longer relevant. Perhaps we should configure the bots this way?
Note You need to log in before you can comment on or make changes to this bug.