New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 756447 link

Starred by 9 users

Issue metadata

Status: Fixed
Owner:
Closed: Jan 3
Cc:
Components:
EstimatedDays: ----
NextAction: 2017-08-28
OS: Linux , Android , Windows , Chrome , Mac , Fuchsia
Pri: 1
Type: Bug

Blocking:
issue 719007



Sign in to add a comment

Loading Blobs from IndexedDB seems to be flaky, errors on blob read.

Project Member Reported by ralp...@google.com, Aug 17 2017

Issue description

There is an elevated rate of "Failed to read large IndexedDB value" errors on the Google Docs product (b/64725798) when reading from the database. The error seems related to automatic Blob wrapping:

"Wrap large IndexedDB values into Blobs before writing to LevelDB."
https://chromium.googlesource.com/chromium/src/+/9f25693ac827e8ea87699023e640760fd09ef9bb

The error is happening most frequently when doing a classic read/update in a one transaction, on a single record containing an array of up to 500 JSON-like objects which may be around ~1KB in size each (but possibly more).


Here is the error flow from crbug.com/814056

Exact path of the data is:
  XHR => ArrayBuffer (100MB) => Blob(A) - Main page context
  Blob(A) is postMessaged into an iframe
  iframe does indexeddb store
  iframe reads out the data as Blob(B)
  iframe deletes entry in indexeddb
  iframe postMessages Blob(B) back to main page
  main page acks back once it has a ref to Blob(B)
  upon receiving ack, iframe deletes ref to Blob(B)
  after receiving Blob(B) the main page attempts to read a few bytes from the blob to confirm it's still valid. If this fails it retries the above process again, starting from the download.

In the case of this bug all 6 attempts fail with the the same error (above). User's available disk is somewhat low (3.77gb), but when try tried again with more available disk space (12gb) it still failed. Would this happen on windows in response to not enough disk space? Why would the store succeed then? Or is this a case of the store does succeed but due to extreme disk pressure...
 

Comment 1 by pwnall@chromium.org, Aug 18 2017

Blockedon: 756754
I was not able to reproduce the crash with the given access pattern, but I think I'm seeing unbounded growth in disk space usage. While that's not necessarily the problem here, unbounded growth could result in full disks, at which point any error is possible.

Comment 2 by pwnall@chromium.org, Aug 18 2017

To be clear, I meant "error" when I wrote "crash".

Comment 3 by pwnall@chromium.org, Aug 18 2017

Blockedon: -756754
 Issue 756754  does not actually show up on M60. I only observed it on M62. For better or for worse, that problem has not made its way to stable, so it couldn't be the cause for the errors described here.
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c008fc280e48b6f15aeae4c552e695717a6b2d91

commit c008fc280e48b6f15aeae4c552e695717a6b2d91
Author: Victor Costan <pwnall@chromium.org>
Date: Wed Aug 23 10:14:38 2017

IndexedDB: Disable large value wrapping.

Per the referenced bug, we're leaking the Blobs used to wrap large
values, leading to potentially unbounded growth in disk space usage.

This CL raises the threshold used to determine what a large value is.
This effectively disables wrapping for new values. The unwrapping code
path is still in place, so previously wrapped data is still readable.

Bug:  756447 
Change-Id: Iee062d29aca486a285fe62f89824594ebad53657
Reviewed-on: https://chromium-review.googlesource.com/621394
Reviewed-by: Chris Mumford <cmumford@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496648}
[modify] https://crrev.com/c008fc280e48b6f15aeae4c552e695717a6b2d91/third_party/WebKit/Source/modules/indexeddb/IDBValueWrapping.h

Comment 5 by pwnall@chromium.org, Aug 23 2017

Cc: dmu...@chromium.org mek@chromium.org
Labels: Merge-Request-61 Merge-Request-60 OS-Android OS-Chrome OS-Fuchsia OS-Linux OS-Mac OS-Windows
Status: Started (was: Untriaged)
Release managers: Requesting merge to M61 and M60 because we have proof in the wild (see b/64725798) that the access patterns in Google Docs combined with  https://crbug.com/756754  and  https://crbug.com/757142  results in leaked Blob files in IndexedDB, leading to potentially unbounded disk usage. I expect that figuring out the leak will be complicated, due to changes from mojofication and servicification, so I'd like to permanently disable wrapping in in M60 and M61, and re-enable once we figure this out, for M62 or M63.
Project Member

Comment 6 by sheriffbot@chromium.org, Aug 23 2017

Labels: -Merge-Request-61 Merge-Review-61 Hotlist-Merge-Review
This bug requires manual review: We are only 12 days from stable.
Please contact the milestone owner if you have questions.
Owners: amineer@(Android), cmasso@(iOS), ketakid@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 7 by gov...@chromium.org, Aug 23 2017

Cc: amineer@chromium.org bustamante@chromium.org
Before we approve merge to M61, please answer followings:
* Is the change well baked/verified in Canary, having enough automation tests coverage and safe to merge to M61? (Cl at #4 landed 4 hrs back so not in canary yet, should safe as it is just a disabling wrapping but just double checking)

* Any other important details to justify the merge.

Please note We're only 12 days away from M61 Stable promotion, so merge bar is very high.


+ bustamante@ (M60 Desktop Release owner) & amineer@ (M60 TPM for Chrome on Android) for M60 merge review.

Comment 8 by pwnall@chromium.org, Aug 23 2017

* Is the change well baked/verified in Canary, having enough automation tests coverage and safe to merge to M61?

The change makes it so that we use the same write path for all the IndexedDB objects, no matter whether they're large or small. We are currently using that write path for small (<64 KB) objects. Before M60, we have been using that write path for all IndexedDB objects, no matter what their size is.

In general, IndexedDB reading and writing is covered by an extensive set of web-platform-tests (WPT) and LayoutTests, as well as browser tests and unit tests.

* Any other important details to justify the merge.

We have proof from a Googler (though no reliable repro) that we're currently leaking the files used to store IndexedDB blobs. "Leaking" doesn't imply a memory leak, it means we're leaving the files on the disk indefinitely. If the issue is triggered often enough, it can result in unbounded growth in the user's Chrome profile, specifically in the directories used to store IndexedDB blobs.

Comment 9 Deleted

Blocking: 719007
Labels: -Merge-Request-60 Merge-Rejected-60
This is too late for M60, we only have 2 weeks left in stable. Also according to  crbug.com/756754  leaked blobs weren't observed on M60, and there aren't any external reports of someone complaining about there disk filling up.
NextAction: 2017-08-28
pwnall@, pls update Canary result here on Monday (08/28).
The NextAction date has arrived: 2017-08-28
Per https://bugs.chromium.org/p/chromium/issues/detail?id=756754&desc=2#c11, the Blobs do not leak in M60, but do leak in M62. Do we have any report for M61? 
Comment 11 was a confusion caused by my Comment 3. When I said "We have proof from a Googler (though no reliable repro) that we're currently leaking the files used to store IndexedDB blobs." in Comment 8, I meant we have a proof for M60. Sorry -- I clarified this in an offline discussion, but I didn't update the bug.

Based on the changes we landed in M61, we have no reason to expect that the situation improved.
Labels: -Merge-Review-61 Merge-Approved-61
Approving merge to M61 branch 3163 per comment #8, #15 and per offline chat with pwnall@, this is a fully safe merge and needed for M61. Please merge ASAP. Thank you.
Project Member

Comment 17 by bugdroid1@chromium.org, Aug 28 2017

Labels: -merge-approved-61 merge-merged-3163
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/77a1b9f786afc084f619607a8497a0100ac8074b

commit 77a1b9f786afc084f619607a8497a0100ac8074b
Author: Victor Costan <pwnall@chromium.org>
Date: Mon Aug 28 18:17:03 2017

IndexedDB: Disable large value wrapping.

Per the referenced bug, we're leaking the Blobs used to wrap large
values, leading to potentially unbounded growth in disk space usage.

This CL raises the threshold used to determine what a large value is.
This effectively disables wrapping for new values. The unwrapping code
path is still in place, so previously wrapped data is still readable.

TBR=pwnall@chromium.org

(cherry picked from commit c008fc280e48b6f15aeae4c552e695717a6b2d91)

Bug:  756447 
Change-Id: Iee062d29aca486a285fe62f89824594ebad53657
Reviewed-on: https://chromium-review.googlesource.com/621394
Reviewed-by: Chris Mumford <cmumford@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#496648}
Reviewed-on: https://chromium-review.googlesource.com/638856
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/branch-heads/3163@{#936}
Cr-Branched-From: ff259bab28b35d242e10186cd63af7ed404fae0d-refs/heads/master@{#488528}
[modify] https://crrev.com/77a1b9f786afc084f619607a8497a0100ac8074b/third_party/WebKit/Source/modules/indexeddb/IDBValueWrapping.h

Labels: -Pri-0 Pri-1
Reducing priority, as large value wrapping has been disabled where that's feasible.
Status: Fixed (was: Started)
Large value wrapping was re-enabled after we fixed some blob leaks.
Owner: dmu...@chromium.org
Status: Assigned (was: Fixed)
Reopening and assigning to me. I suspect that blob reading in general from IDB is having issues, also see 
https://bugs.chromium.org/p/chromium/issues/detail?id=814056.

I'm going to start a doc, but initially we need to disable large value wrapping, and add some metrics here.
Issue 814056 has been merged into this issue.
Summary: Loading Blobs from IndexedDB seems to be flaky, errors on blob read. (was: Seeing "Failed to read large IndexedDB value" error)

Comment 23 by ralp...@google.com, Mar 29 2018

Thank you! Can we please try to merge the disabling of blob wrapping in M66?
Yes - the current plan is to temporarily disable blob wrapping and merge to m66.

We really need to re-enable blob wrapping, but we really have no clues yet as to why this problem is occuring. Any information you can gather around the state of these machines (about://histograms, chrome://indexeddb-internals, etc - I really need to fix that download database button) would be really helpful.

I imagine that I'll be adding more metrics and error reporting soon, so canary user repros are especially useful once those changes are submitted.

Best case scenario is if you have some JS or something we can run that will lead to this problem.
Project Member

Comment 25 by bugdroid1@chromium.org, Mar 30 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eafbb5093d3647a1faf33b6c0728ad14eec2e5cd

commit eafbb5093d3647a1faf33b6c0728ad14eec2e5cd
Author: Daniel Murphy <dmurph@chromium.org>
Date: Fri Mar 30 01:48:28 2018

[IndexedDB] Disable large value wrapping

Reading blobs that are loaded from IDB seem to be flaky. Large value
wrapping is a big customer of IDB blobs, so disable this for now while
the problem is investigated.

Bug:  756447 
Change-Id: I64e46803d7433cbf6c701457c8e96028a015d74f
Reviewed-on: https://chromium-review.googlesource.com/987207
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547065}
[modify] https://crrev.com/eafbb5093d3647a1faf33b6c0728ad14eec2e5cd/third_party/WebKit/Source/modules/indexeddb/IDBValueWrapping.h

Can we backport it ASAP to all current releases? Users of my application are losing data they collected offline.

I can reproduce this error reliably (bisected to commit 516126). My code uses localforage as a wrapper. How to generate proper diagnostic output?
Labels: Merge-Request-66
That is SUCH GOOD NEWS that you can reproduce! Can you create something I can run on my machine to reproduce? That would be huge towards solving this problem. I'm not sure the best way to do this with your app - you can record the database calls you do until you reach the problem so I can run them on a webpage locally, you can send me a webpage to go to, a github link, etc.

Can you also send me the about://histograms page on the repro device? And go to chrome://indexeddb-internals/, and download the database for the effected origin?

Note - on some platforms the download button doesn't work and it creates an invalid zip. If that's the case, can you zip the two directories listed there and send those to me?

THANK YOU! :)
Project Member

Comment 28 by sheriffbot@chromium.org, Mar 30 2018

Labels: -Merge-Request-66 Merge-Review-66
This bug requires manual review: M66 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), josafat@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Regarding merge request - this bug is affecting many large customers both internally and externally, causing IndexedDB to basically be unstable.
Labels: -Merge-Review-66 Merge-Approved-66
Approved - branch:3359
Project Member

Comment 31 by bugdroid1@chromium.org, Mar 30 2018

Labels: -merge-approved-66 merge-merged-3359
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b12f20072ee9873bf6717c07374785777dc210d4

commit b12f20072ee9873bf6717c07374785777dc210d4
Author: Daniel Murphy <dmurph@chromium.org>
Date: Fri Mar 30 23:14:59 2018

[IndexedDB] Disable large value wrapping

Reading blobs that are loaded from IDB seem to be flaky. Large value
wrapping is a big customer of IDB blobs, so disable this for now while
the problem is investigated.

Bug:  756447 
Change-Id: I64e46803d7433cbf6c701457c8e96028a015d74f
Reviewed-on: https://chromium-review.googlesource.com/987207
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#547065}(cherry picked from commit eafbb5093d3647a1faf33b6c0728ad14eec2e5cd)
Reviewed-on: https://chromium-review.googlesource.com/988993
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#516}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/b12f20072ee9873bf6717c07374785777dc210d4/third_party/WebKit/Source/modules/indexeddb/IDBValueWrapping.h

Project Member

Comment 32 by bugdroid1@chromium.org, Apr 2 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d

commit 869d4ca5d25d35a0fe3c72a4f113bdb927d4876d
Author: Daniel Murphy <dmurph@chromium.org>
Date: Mon Apr 02 22:21:08 2018

Adding blob reading error metrics, re-enabling IDB large value wrapping

This change is to further investigate crbug/756447:
* Fixes some vague error reporting in BlobReader
* Adds a feature flag around IDB big value wrapping (and re-enables it)
* Adds UMA metrics around blob reading and IDB large value reading.

Bug:  756447 , 788681
Change-Id: I398fee4e69582e76f0a81449ff26a45ec3abe32f
Reviewed-on: https://chromium-review.googlesource.com/988843
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547537}
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/content/browser/blob_storage/blob_url_unittest.cc
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/storage/browser/blob/blob_reader.cc
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/storage/browser/blob/blob_reader_unittest.cc
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/third_party/WebKit/Source/DEPS
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/third_party/WebKit/Source/core/fileapi/FileReaderLoader.cpp
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/third_party/WebKit/Source/core/fileapi/FileReaderLoader.h
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/third_party/WebKit/Source/modules/indexeddb/IDBObjectStore.cpp
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/third_party/WebKit/Source/modules/indexeddb/IDBRequestLoader.cpp
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/third_party/WebKit/Source/modules/indexeddb/IDBValueWrapping.h
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/third_party/WebKit/Tools/Scripts/audit-non-blink-usage.py
[modify] https://crrev.com/869d4ca5d25d35a0fe3c72a4f113bdb927d4876d/tools/metrics/histograms/histograms.xml

Description: Show this description
Project Member

Comment 34 by bugdroid1@chromium.org, Apr 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0b5df969c1c811274ce6331a4d2360a444c46323

commit 0b5df969c1c811274ce6331a4d2360a444c46323
Author: Daniel Murphy <dmurph@chromium.org>
Date: Thu Apr 05 04:07:01 2018

[BlobStorage] Fixed reading metrics error value

Bug:  756447 , 788681
Change-Id: I6cd4d87384bd55f7168a6c8889c631f2f7d9c015
Reviewed-on: https://chromium-review.googlesource.com/996461
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#548320}
[modify] https://crrev.com/0b5df969c1c811274ce6331a4d2360a444c46323/third_party/WebKit/Source/core/fileapi/FileReaderLoader.cpp
[modify] https://crrev.com/0b5df969c1c811274ce6331a4d2360a444c46323/third_party/WebKit/Source/modules/indexeddb/IDBRequestLoader.cpp

Project Member

Comment 35 by bugdroid1@chromium.org, Apr 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3c0d175b5584a2e5be9d493aca8ddd46c7d78e12

commit 3c0d175b5584a2e5be9d493aca8ddd46c7d78e12
Author: Daniel Murphy <dmurph@chromium.org>
Date: Thu Apr 05 04:35:38 2018

[IndexedDB] Stop deleting blobs on open for schema version 2 dbs

Bug:  756447 ,  829125 , 829141
Change-Id: I854594ed35fc5a99df1b68534db42bcb65b81a0f
Reviewed-on: https://chromium-review.googlesource.com/996582
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#548325}
[modify] https://crrev.com/3c0d175b5584a2e5be9d493aca8ddd46c7d78e12/content/browser/indexed_db/indexed_db_backing_store.cc

Project Member

Comment 36 by bugdroid1@chromium.org, Apr 10 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/705d7330d828101a658d390e8ba0790b8a6d29be

commit 705d7330d828101a658d390e8ba0790b8a6d29be
Author: Daniel Murphy <dmurph@chromium.org>
Date: Tue Apr 10 02:53:28 2018

[IndexedDB] Schema upgrade fix, fail for corrupt blobs, fix enums.xml

For the last 4 years we 'saved' the new schema version number, so any v2
databases are never marked as v3. The 'migration' always deleted all
blob files. To correctly upgrade to v3, all v2 databases that have blob
entries are considered corrupt and are wiped.

This also fixes the enums.xml values for IDB setup errors, which have
been missing 'DeleteIndex' and 'ClearObjectStore' (and subsequently have
had incorrect reporting on values > 23) since 2014:
https://crrev.com/b05831ee

Bug:  756447 ,  829125 , 829141
Change-Id: I1d711b5ed4bfb4e7240da56a2fc78e6ebe561ca1
Reviewed-on: https://chromium-review.googlesource.com/1000138
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Joshua Bell <jsbell@chromium.org>
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549395}
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/content/browser/indexed_db/indexed_db_backing_store.cc
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/content/browser/indexed_db/indexed_db_backing_store.h
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/content/browser/indexed_db/indexed_db_leveldb_operations.h
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/content/browser/indexed_db/indexed_db_metadata_coding.cc
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/content/browser/indexed_db/indexed_db_metadata_coding.h
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/content/browser/indexed_db/indexed_db_reporting.h
[modify] https://crrev.com/705d7330d828101a658d390e8ba0790b8a6d29be/tools/metrics/histograms/enums.xml

Project Member

Comment 37 by bugdroid1@chromium.org, Apr 10 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/530acd0a64c89b4ae2f64f6199035db2c66aa5a0

commit 530acd0a64c89b4ae2f64f6199035db2c66aa5a0
Author: Alan Cutter <alancutter@chromium.org>
Date: Tue Apr 10 04:17:52 2018

Revert "[IndexedDB] Schema upgrade fix, fail for corrupt blobs, fix enums.xml"

This reverts commit 705d7330d828101a658d390e8ba0790b8a6d29be.

Reason for revert: Broke WinMSVC64 (dbg) compile.
https://ci.chromium.org/buildbot/chromium.win/WinMSVC64%20%28dbg%29/4682
indexed_db_backing_store_unittest.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class leveldb::Status __cdecl content::indexed_db::GetInt<class content::LevelDBTransaction>(class content::LevelDBTransaction *,class base::BasicStringPiece<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > const &,__int64 *,bool *)" (__imp_??$GetInt@VLevelDBTransaction@content@@@indexed_db@content@@YA?AVStatus@leveldb@@PEAVLevelDBTransaction@1@AEBV?$BasicStringPiece@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@base@@PEA_JPEA_N@Z) referenced in function "public: void __cdecl <lambda_395e582d16a7cd048cd3868c3a9ede8f>::operator()(class content::IndexedDBBackingStore *,class content::IndexedDBKey,struct content::IndexedDBValue,struct `private: virtual void __cdecl content::indexed_db_backing_store_unittest::IndexedDBBackingStoreTest_SchemaUpgradeWithoutBlobsSurvives_Test::TestBody(void)'::`2'::TestState *)const " (??R<lambda_395e582d16a7cd048cd3868c3a9ede8f>@@QEBAXPEAVIndexedDBBackingStore@content@@VIndexedDBKey@2@UIndexedDBValue@2@PEAUTestState@?1??TestBody@IndexedDBBackingStoreTest_SchemaUpgradeWithoutBlobsSurvives_Test@indexed_db_backing_store_unittest@2@EEAAXXZ@@Z)

Original change's description:
> [IndexedDB] Schema upgrade fix, fail for corrupt blobs, fix enums.xml
> 
> For the last 4 years we 'saved' the new schema version number, so any v2
> databases are never marked as v3. The 'migration' always deleted all
> blob files. To correctly upgrade to v3, all v2 databases that have blob
> entries are considered corrupt and are wiped.
> 
> This also fixes the enums.xml values for IDB setup errors, which have
> been missing 'DeleteIndex' and 'ClearObjectStore' (and subsequently have
> had incorrect reporting on values > 23) since 2014:
> https://crrev.com/b05831ee
> 
> Bug:  756447 ,  829125 , 829141
> Change-Id: I1d711b5ed4bfb4e7240da56a2fc78e6ebe561ca1
> Reviewed-on: https://chromium-review.googlesource.com/1000138
> Reviewed-by: Mark Pearson <mpearson@chromium.org>
> Reviewed-by: Joshua Bell <jsbell@chromium.org>
> Commit-Queue: Daniel Murphy <dmurph@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#549395}

TBR=mpearson@chromium.org,jsbell@chromium.org,dmurph@chromium.org,pwnall@chromium.org

Change-Id: I563e3f3b77f0ff72025d3d398a6e8f5e36a818bc
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  756447 ,  829125 , 829141
Reviewed-on: https://chromium-review.googlesource.com/1004133
Reviewed-by: Alan Cutter <alancutter@chromium.org>
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549413}
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/content/browser/indexed_db/indexed_db_backing_store.cc
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/content/browser/indexed_db/indexed_db_backing_store.h
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/content/browser/indexed_db/indexed_db_leveldb_operations.h
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/content/browser/indexed_db/indexed_db_metadata_coding.cc
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/content/browser/indexed_db/indexed_db_metadata_coding.h
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/content/browser/indexed_db/indexed_db_reporting.h
[modify] https://crrev.com/530acd0a64c89b4ae2f64f6199035db2c66aa5a0/tools/metrics/histograms/enums.xml

Project Member

Comment 38 by bugdroid1@chromium.org, Apr 10 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0d1aacb9239aae9ab57b1035cf62ceb1889e8c54

commit 0d1aacb9239aae9ab57b1035cf62ceb1889e8c54
Author: Daniel Murphy <dmurph@chromium.org>
Date: Tue Apr 10 18:23:18 2018

[IndexedDB] Stop deleting blobs on open for schema version 2 dbs

Bug:  756447 ,  829125 , 829141
Change-Id: I854594ed35fc5a99df1b68534db42bcb65b81a0f
Reviewed-on: https://chromium-review.googlesource.com/996582
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#548325}(cherry picked from commit 3c0d175b5584a2e5be9d493aca8ddd46c7d78e12)
Reviewed-on: https://chromium-review.googlesource.com/1005694
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#655}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/0d1aacb9239aae9ab57b1035cf62ceb1889e8c54/content/browser/indexed_db/indexed_db_backing_store.cc

Project Member

Comment 40 by bugdroid1@chromium.org, Apr 11 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9ab30dca6ad03d9dc70f4ca9868a38f1c9b97768

commit 9ab30dca6ad03d9dc70f4ca9868a38f1c9b97768
Author: Daniel Murphy <dmurph@chromium.org>
Date: Wed Apr 11 18:08:57 2018

[IndexedDB] Log schema version

Bug:  830909 ,  756447 ,  829125 , 829141
Change-Id: Iaf467fbe9cf2c836bfcd761d558c3f7c0e7379a8
Reviewed-on: https://chromium-review.googlesource.com/1003281
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Joshua Bell <jsbell@chromium.org>
Commit-Queue: Daniel Murphy <dmurph@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#549653}(cherry picked from commit c757238fa2717fa08178def1faf522ad3c876416)
Reviewed-on: https://chromium-review.googlesource.com/1007942
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#684}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/9ab30dca6ad03d9dc70f4ca9868a38f1c9b97768/content/browser/indexed_db/indexed_db_backing_store.cc
[modify] https://crrev.com/9ab30dca6ad03d9dc70f4ca9868a38f1c9b97768/content/browser/indexed_db/indexed_db_leveldb_coding.h
[modify] https://crrev.com/9ab30dca6ad03d9dc70f4ca9868a38f1c9b97768/content/browser/indexed_db/indexed_db_reporting.cc
[modify] https://crrev.com/9ab30dca6ad03d9dc70f4ca9868a38f1c9b97768/content/browser/indexed_db/indexed_db_reporting.h
[modify] https://crrev.com/9ab30dca6ad03d9dc70f4ca9868a38f1c9b97768/tools/metrics/histograms/histograms.xml

Cc: -amineer@chromium.org
No longer on the Chrome team, e-mail me @google.com if any attention still required from me here, otherwise good luck!
Status: Fixed (was: Assigned)
This seems fixed.

Sign in to add a comment