Closed
Bug 1013221
Opened 11 years ago
Closed 11 years ago
indexedDB stalling forever after calling IDBDatabase.transaction() with duplicate store names
Categories
(Core :: Storage: IndexedDB, defect)
Tracking
()
RESOLVED
FIXED
mozilla32
People
(Reporter: david.fahlander, Assigned: jmorton)
Details
Attachments
(1 file, 1 obsolete file)
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.132 Safari/537.36 OPR/21.0.1432.67
Steps to reproduce:
// Let db be an instance of IDBDatabase having an objectStore named "users".
db.transaction(["users", "users"], 'readwrite');
Actual results:
After specifying duplicate store names to the storeNames argument of transaction(), any request to the indexedDB will stall forever, until closing down firefox and opening it up again.
Expected results:
The entire indexedDB should not be stalled by such code. An error could have been thrown or the duplicate argument could have been ignored but.
Updated•11 years ago
|
Component: Untriaged → DOM: IndexedDB
Product: Firefox → Core
The spec sayeth: "If storeNames is of type sequence<DOMString> then let scope be the set of unique strings in the sequence."
Unforunately we don't perform the uniquification.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Assignee: nobody → jmorton
| Assignee | ||
Comment 2•11 years ago
|
||
Attachment #8430423 -
Flags: review?(khuey)
Comment on attachment 8430423 [details] [diff] [review]
0001-Bug-1013221-Remove-duplicate-object-store-names-when.patch
Review of attachment 8430423 [details] [diff] [review]:
-----------------------------------------------------------------
r=me with that change
::: dom/indexedDB/IDBTransaction.cpp
@@ +117,5 @@
>
> + // Remove any duplicate object store names
> + uint32_t count = transaction->mObjectStoreNames.Length();
> + if (count > 0) { // don't undeflow if count == 0
> + for (uint32_t index = count - 1; index > 0; index--) {
Let's move count > 0 into the loop condition, and make it a const uint32_t. That'll make this easier to read and the compiler should be smart enough not to check the condition every time through the loop.
Attachment #8430423 -
Flags: review?(khuey) → review+
| Assignee | ||
Comment 4•11 years ago
|
||
Sounds reasonable, wasn't a fan of the check either. I'll change this.
| Assignee | ||
Comment 5•11 years ago
|
||
Attachment #8430967 -
Flags: review?(khuey)
Attachment #8430423 -
Attachment is obsolete: true
Comment on attachment 8430967 [details] [diff] [review]
0001-Bug-1013221-Remove-duplicate-object-store-names-when.patch (with review changes)
Review of attachment 8430967 [details] [diff] [review]:
-----------------------------------------------------------------
In the future, when I give you r+ with comments it means I trust you to make the changes I asked for without me looking at it again, and you can just set r+ on the patch yourself.
Attachment #8430967 -
Flags: review?(khuey) → review+
| Reporter | ||
Comment 8•11 years ago
|
||
When looking briefly at the diff I don't see that it handles the situation when the same store name is listed first and last but not in the middle. Example:
["users", "tickets", "users"]
| Assignee | ||
Comment 9•11 years ago
|
||
Hi David,
If you look a little bit above the change (https://hg.mozilla.org/integration/mozilla-inbound/rev/9a56b2d6457e#l1.28) you'll see that the list is sorted before we check for duplicates, so it will work for the case you provided aswell.
| Reporter | ||
Comment 10•11 years ago
|
||
Ok I got it, thanks!
Btw, thanks for the bug report David. You gave us exactly what we needed to track down and fix the problem.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla32
You need to log in
before you can comment on or make changes to this bug.
Description
•