Bug 1620917 - Ensure a failure of StartTransactionOp is correctly handled on the resulting CommitOp. r=dom-workers-and-storage-reviewers,janv

Differential Revision: https://phabricator.services.mozilla.com/D67667

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Simon Giesecke 2020-03-23 10:38:47 +00:00
parent 532b6f80be
commit 4b23573552

View File

@ -11342,7 +11342,14 @@ nsresult DatabaseConnection::DisableQuotaChecks() {
void DatabaseConnection::EnableQuotaChecks() {
AssertIsOnConnectionThread();
MOZ_ASSERT(mQuotaObject);
if (!mQuotaObject) {
MOZ_ASSERT(!mJournalQuotaObject);
// DisableQuotaChecks failed earlier, so we don't need to enable quota
// checks again.
return;
}
MOZ_ASSERT(mJournalQuotaObject);
const RefPtr<QuotaObject> quotaObject = std::move(mQuotaObject);
@ -14452,10 +14459,10 @@ nsresult Database::StartTransactionOp::DoDatabaseWork(
Transaction().SetActiveOnConnectionThread();
if (Transaction().GetMode() == IDBTransaction::Mode::Cleanup) {
nsresult rv = aConnection->DisableQuotaChecks();
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
DebugOnly<nsresult> rv = aConnection->DisableQuotaChecks();
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"DisableQuotaChecks failed, trying to continue "
"cleanup transaction with quota checks enabled");
}
if (Transaction().GetMode() != IDBTransaction::Mode::ReadOnly) {