RESOLVED WORKSFORME 70041
IndexedDB: Transactions fail to abort if all requests throw exceptions
https://bugs.webkit.org/show_bug.cgi?id=70041
Summary IndexedDB: Transactions fail to abort if all requests throw exceptions
Joshua Bell
Reported 2011-10-13 12:10:27 PDT
Repro: * Start a transaction * Make a request against the transaction that raises an exception (e.g. a put() with an invalid key) * Make no other requests against the transaction, let it execute Expected: * Transaction fires abort event Actual: * Transaction never fires abort, error or complete events Initial investigation: This appears to be caused by the path taken when requests are created but aborted early due to exceptions - a request is created, registered with the transaction, then marked for "early death". But the markEarlyDeath() method does not unregister it from the transaction; that doesn't happen until the request's destructor is called. Perhaps it should be unregistered immediately? Further investigation is needed, and we should understand why the transaction never completes.
Attachments
Repro case for the bug (1.05 KB, text/html)
2011-10-13 12:13 PDT, Joshua Bell
no flags
Joshua Bell
Comment 1 2011-10-13 12:13:21 PDT
Created attachment 110885 [details] Repro case for the bug Attachment (bug70041.html) should show ABORTED (or ERROR or COMPLETE) but never does. You can try commenting out both store.put() to see it output ABORTED, or uncomment both store.put() calls to see it COMPLETE
Joshua Bell
Comment 2 2011-10-13 12:32:21 PDT
NOTE: LayoutTests/storage/indexeddb/objectstore-basics.html has an unexpected dependency on this buggy behavior - it creates a transaction that has no requests other than one which generated an exception, yet expects the transaction to not abort. So fixing this issue may cause that layout test to (erroneously) fail.
Joshua Bell
Comment 3 2011-11-03 16:23:58 PDT
The attached repro case no longer repros :( It reports "ABORTED"
Joshua Bell
Comment 4 2011-11-09 11:29:40 PST
(In reply to comment #3) > The attached repro case no longer repros :( It reports "ABORTED" To clarify, it repros in M16, but not TOT Chrome.
Note You need to log in before you can comment on or make changes to this bug.