Changeset 110463 in webkit
- Timestamp:
- Mar 12, 2012 12:57:00 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r110456 r110463 1 2012-03-12 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-11 Shawn Singh <shawnsingh@chromium.org> 2 21 -
trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp
r110373 r110463 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
r110373 r110463 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
r110373 r110463 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
r110433 r110463 1 2012-03-12 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.gyp: Skip LevelDBTest.cpp in shared component builds due to webkit_support dependency 9 * WebKit.gypi: Add LevelDBTest.cpp 10 * tests/LevelDBTest.cpp: Added. 11 (WebCore): 12 (SimpleComparator): 13 (WebCore::SimpleComparator::compare): 14 (WebCore::SimpleComparator::name): 15 (WebCore::encodeString): 16 (WebCore::TEST): 17 1 18 2012-03-12 Dana Jansens <danakj@chromium.org> 2 19 -
trunk/Source/WebKit/chromium/WebKit.gyp
r110056 r110463 749 749 'tests/AssociatedURLLoaderTest.cpp', 750 750 'tests/FrameTestHelpers.cpp', 751 'tests/LevelDBTest.cpp', 751 752 'tests/PopupMenuTest.cpp', 752 753 'tests/RenderTableCellTest.cpp', -
trunk/Source/WebKit/chromium/WebKit.gypi
r110373 r110463 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.