Changeset 110363 in webkit
- Timestamp:
- Mar 9, 2012 7:10:08 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r110362 r110363 1 2012-03-09 Joshua Bell <jsbell@chromium.org> 2 3 IndexedDB: Handle LevelDB database corruption 4 https://bugs.webkit.org/show_bug.cgi?id=79413 5 6 Add LevelDBDatabase::destroy() method so that clients can retry if open() fails. 7 8 Reviewed by Tony Chang. 9 10 Test: webkit_unit_tests --gtest_filter='LevelDBDatabaseTest.CorruptionTest' 11 12 * Modules/indexeddb/IDBLevelDBBackingStore.cpp: Implement open/destroy/open strategy. 13 (WebCore::IDBLevelDBBackingStore::open): 14 * platform/leveldb/LevelDBDatabase.cpp: 15 (WebCore::LevelDBDatabase::destroy): 16 (WebCore): 17 * platform/leveldb/LevelDBDatabase.h: 18 (LevelDBDatabase): 19 1 20 2012-03-09 Jessie Berlin <jberlin@apple.com> 2 21 -
trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp
r109946 r110363 151 151 152 152 db = LevelDBDatabase::open(path, comparator.get()); 153 154 if (!db) { 155 LOG_ERROR("IndexedDB backing store open failed, attempting cleanup"); 156 bool success = LevelDBDatabase::destroy(path); 157 if (!success) { 158 LOG_ERROR("IndexedDB backing store cleanup failed"); 159 return PassRefPtr<IDBBackingStore>(); 160 } 161 162 LOG_ERROR("IndexedDB backing store cleanup succeeded, reopening"); 163 db = LevelDBDatabase::open(path, comparator.get()); 164 if (!db) { 165 LOG_ERROR("IndexedDB backing store reopen after recovery failed"); 166 return PassRefPtr<IDBBackingStore>(); 167 } 168 } 153 169 } 154 170 -
trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.cpp
r109946 r110363 113 113 } 114 114 115 bool LevelDBDatabase::destroy(const String& fileName) 116 { 117 leveldb::Options options; 118 const leveldb::Status s = leveldb::DestroyDB(fileName.utf8().data(), options); 119 return s.ok(); 120 } 121 115 122 PassOwnPtr<LevelDBDatabase> LevelDBDatabase::open(const String& fileName, const LevelDBComparator* comparator) 116 123 { -
trunk/Source/WebCore/platform/leveldb/LevelDBDatabase.h
r109946 r110363 51 51 static PassOwnPtr<LevelDBDatabase> open(const String& fileName, const LevelDBComparator*); 52 52 static PassOwnPtr<LevelDBDatabase> openInMemory(const LevelDBComparator*); 53 static bool destroy(const String& fileName); 53 54 ~LevelDBDatabase(); 54 55 -
trunk/Source/WebKit/chromium/ChangeLog
r110359 r110363 1 2012-03-09 Joshua Bell <jsbell@chromium.org> 2 3 IndexedDB: Handle LevelDB database corruption 4 https://bugs.webkit.org/show_bug.cgi?id=79413 5 6 Reviewed by Tony Chang. 7 8 * WebKit.gypi: 9 * tests/LevelDBTest.cpp: Added. 10 (WebCore): 11 (SimpleComparator): 12 (WebCore::SimpleComparator::compare): 13 (WebCore::SimpleComparator::name): 14 (WebCore::encodeString): 15 (WebCore::TEST): 16 1 17 2012-03-09 Tim Dresser <tdresser@chromium.org> 2 18 -
trunk/Source/WebKit/chromium/WebKit.gypi
r110344 r110363 108 108 'tests/LayerChromiumTest.cpp', 109 109 'tests/LayerTextureUpdaterTest.cpp', 110 'tests/LevelDBTest.cpp', 110 111 'tests/LocalizedNumberICUTest.cpp', 111 112 'tests/PaintAggregatorTest.cpp',
Note: See TracChangeset
for help on using the changeset viewer.