Merge pull request #2410 from gmaxwell/salvageharder

Make explicitly requested salvage operations keep going when there is an error.
This commit is contained in:
Gavin Andresen 2013-05-07 08:58:35 -07:00
commit e5ddaf5ec8
1 changed files with 11 additions and 2 deletions

View File

@ -164,9 +164,18 @@ bool CDBEnv::Salvage(std::string strFile, bool fAggressive,
Db db(&dbenv, 0);
int result = db.verify(strFile.c_str(), NULL, &strDump, flags);
if (result != 0)
if (result == DB_VERIFY_BAD)
{
printf("ERROR: db salvage failed\n");
printf("Error: Salvage found errors, all data may not be recoverable.\n");
if (!fAggressive)
{
printf("Error: Rerun with aggressive mode to ignore errors and continue.\n");
return false;
}
}
if (result != 0 && result != DB_VERIFY_BAD)
{
printf("ERROR: db salvage failed: %d\n",result);
return false;
}