Use HandleError() consistently to handle leveldb errors

This commit is contained in:
Gavin Andresen 2013-08-12 18:06:17 +10:00
parent 6cc766fa55
commit b35e993200
2 changed files with 4 additions and 7 deletions

View File

@ -777,6 +777,7 @@ bool AppInit2(boost::thread_group& threadGroup)
break; break;
} }
} catch(std::exception &e) { } catch(std::exception &e) {
if (fDebug) printf("%s\n", e.what());
strLoadError = _("Error opening block database"); strLoadError = _("Error opening block database");
break; break;
} }

View File

@ -15,6 +15,7 @@
void HandleError(const leveldb::Status &status) throw(leveldb_error) { void HandleError(const leveldb::Status &status) throw(leveldb_error) {
if (status.ok()) if (status.ok())
return; return;
printf("%s\n", status.ToString().c_str());
if (status.IsCorruption()) if (status.IsCorruption())
throw leveldb_error("Database corrupted"); throw leveldb_error("Database corrupted");
if (status.IsIOError()) if (status.IsIOError())
@ -54,8 +55,7 @@ CLevelDB::CLevelDB(const boost::filesystem::path &path, size_t nCacheSize, bool
printf("Opening LevelDB in %s\n", path.string().c_str()); printf("Opening LevelDB in %s\n", path.string().c_str());
} }
leveldb::Status status = leveldb::DB::Open(options, path.string(), &pdb); leveldb::Status status = leveldb::DB::Open(options, path.string(), &pdb);
if (!status.ok()) HandleError(status);
throw std::runtime_error(strprintf("CLevelDB(): error opening database environment %s", status.ToString().c_str()));
printf("Opened LevelDB successfully\n"); printf("Opened LevelDB successfully\n");
} }
@ -72,10 +72,6 @@ CLevelDB::~CLevelDB() {
bool CLevelDB::WriteBatch(CLevelDBBatch &batch, bool fSync) throw(leveldb_error) { bool CLevelDB::WriteBatch(CLevelDBBatch &batch, bool fSync) throw(leveldb_error) {
leveldb::Status status = pdb->Write(fSync ? syncoptions : writeoptions, &batch.batch); leveldb::Status status = pdb->Write(fSync ? syncoptions : writeoptions, &batch.batch);
if (!status.ok()) {
printf("LevelDB write failure: %s\n", status.ToString().c_str());
HandleError(status); HandleError(status);
return false;
}
return true; return true;
} }