* 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
* Transaction fires abort event
* Transaction never fires abort, error or complete events
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.
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
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.
The attached repro case no longer repros :( It reports "ABORTED"
(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.