Index: make sure that -k and -K always have effect. Set explicit reason when failure is due to interruption

This commit is contained in:
Jean-Francois Dockes 2019-03-12 16:10:02 +01:00
parent 113b7db12e
commit 642ea759bc
2 changed files with 20 additions and 7 deletions

View File

@ -123,7 +123,11 @@ bool ConfIndexer::index(bool resetbefore, ixType typestorun, int flags)
deleteZ(m_fsindexer); deleteZ(m_fsindexer);
m_fsindexer = new FsIndexer(m_config, &m_db, m_updater); m_fsindexer = new FsIndexer(m_config, &m_db, m_updater);
if (!m_fsindexer || !m_fsindexer->index(flags)) { if (!m_fsindexer || !m_fsindexer->index(flags)) {
addIdxReason("indexer", "Index creation failed. See log"); if (stopindexing) {
addIdxReason("indexer", "Indexing was interrupted.");
} else {
addIdxReason("indexer", "Index creation failed. See log.");
}
m_db.close(); m_db.close();
return false; return false;
} }

View File

@ -690,19 +690,28 @@ int main(int argc, char **argv)
bool rezero((op_flags & OPT_z) != 0); bool rezero((op_flags & OPT_z) != 0);
bool inPlaceReset((op_flags & OPT_Z) != 0); bool inPlaceReset((op_flags & OPT_Z) != 0);
// We do not retry previously failed files by default. If -k is // The default is not to retry previously failed files by default.
// set, we do. If the checker script says so, we do too. // If -k is set, we do.
// If the checker script says so, we do too, except if -K is set.
int indexerFlags = ConfIndexer::IxFNoRetryFailed; int indexerFlags = ConfIndexer::IxFNoRetryFailed;
if (op_flags & OPT_k) { if (op_flags & OPT_k) {
indexerFlags &= ~ConfIndexer::IxFNoRetryFailed; indexerFlags &= ~ConfIndexer::IxFNoRetryFailed;
} else { } else {
if (checkRetryFailed(config, false)) { if (op_flags & OPT_K) {
LOGDEB("recollindex: files in error will be retried\n"); indexerFlags |= ConfIndexer::IxFNoRetryFailed;
indexerFlags &= ~ConfIndexer::IxFNoRetryFailed;
} else { } else {
LOGDEB("recollindex: files in error will not be retried\n"); if (checkRetryFailed(config, false)) {
indexerFlags &= ~ConfIndexer::IxFNoRetryFailed;
} else {
indexerFlags |= ConfIndexer::IxFNoRetryFailed;
}
} }
} }
if (indexerFlags & ConfIndexer::IxFNoRetryFailed) {
LOGDEB("recollindex: files in error will not be retried\n");
} else {
LOGDEB("recollindex: files in error will be retried\n");
}
Pidfile pidfile(config->getPidfile()); Pidfile pidfile(config->getPidfile());
updater = new MyUpdater(config); updater = new MyUpdater(config);