Bug 70041

Summary: IndexedDB: Transactions fail to abort if all requests throw exceptions
Product: WebKit Reporter: Joshua Bell <jsbell>
Component: New BugsAssignee: Joshua Bell <jsbell>
Status: RESOLVED WORKSFORME    
Severity: Normal CC: dgrogan, gregsimon, hans, jsbell
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Repro case for the bug none

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.