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);
m_fsindexer = new FsIndexer(m_config, &m_db, m_updater);
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();
return false;
}

View File

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