author | Wes Kocher <wkocher@mozilla.com> |
Tue, 13 Oct 2015 12:51:24 -0700 | |
changeset 300938 | af8ff8fe5cdaeabec60c68b6caca7ea6bd2c587a |
parent 300937 | 730bd2d9fe31fd2996bfecdd48d824bbfcb6b290 (current diff) |
parent 300797 | 2387ada864282880d3a498d643abe3d8b887ee59 (diff) |
child 300939 | a67ea3f246789055d22a902606bb16c723e543b3 |
push id | 5392 |
push user | raliiev@mozilla.com |
push date | Mon, 14 Dec 2015 20:08:23 +0000 |
treeherder | mozilla-beta@16ce8562a975 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | merge |
milestone | 44.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/indexedDB/ActorsParent.cpp +++ b/dom/indexedDB/ActorsParent.cpp @@ -20125,23 +20125,19 @@ FactoryOp::DirectoryLockFailed() void FactoryOp::ActorDestroy(ActorDestroyReason aWhy) { AssertIsOnBackgroundThread(); NoteActorDestroyed(); - // There may be an event in the event queue that would do the cleanup later, - // but if we are being destroyed abnormally (not by calling - // PBackgroundIDBFactoryRequestParent::Send__delete__) we need to do the - // cleanup here and just ignore the cleanup event in FactoryOp::Run. - // Otherwise some Database objects may be still alive and registered in - // gLiveDatabaseHashtable at the time the last factory is destroyed. - if (aWhy != Deletion) { + if (mState == State::WaitingForTransactionsToComplete || + (mState == State::SendingResults && aWhy != Deletion)) { + // We didn't get an opportunity to clean up. Do that now. mState = State::SendingResults; IDB_REPORT_INTERNAL_ERR(); mResultCode = NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; SendResults(); } } bool