Ответ 1
Во-первых, вы можете увидеть выражение ${solr.autoSoftCommit.maxTime:-1}
в теге. Это позволяет вам использовать замену переменных Solr . Эта функция подробно описана здесь в ссылке. Если эта переменная не была заменена каким-либо из этих средств, -1
принимается за значение для этой конфигурации.
Превращение commitMaxTime в -1 эффективно отключает автозапуск. Если вы посмотрите на соответствующий код ниже, вы увидите, что commitMaxTime
перекрывает любое значение maxDocs
, так как метод scheduleCommitWithin немедленно возвращается. Я не нашел это поведение документированным, поэтому я искал код.
private void _scheduleCommitWithin(long commitMaxTime) {
if (commitMaxTime <= 0) return;
synchronized (this) {
if (pending != null && pending.getDelay(TimeUnit.MILLISECONDS) <= commitMaxTime) {
// There is already a pending commit that will happen first, so
// nothing else to do here.
// log.info("###returning since getDelay()==" + pending.getDelay(TimeUnit.MILLISECONDS) + " less than " + commitMaxTime);
return;
}
if (pending != null) {
// we need to schedule a commit to happen sooner than the existing one,
// so lets try to cancel the existing one first.
boolean canceled = pending.cancel(false);
if (!canceled) {
// It looks like we can't cancel... it must have just started running!
// this is possible due to thread scheduling delays and a low commitMaxTime.
// Nothing else to do since we obviously can't schedule our commit *before*
// the one that just started running (or has just completed).
// log.info("###returning since cancel failed");
return;
}
}
// log.info("###scheduling for " + commitMaxTime);
// schedule our new commit
pending = scheduler.schedule(this, commitMaxTime, TimeUnit.MILLISECONDS);
}
}
Во вторую часть вашего вопроса, если вы удалите тег вместе, это будет иметь тот же результат, что и значение -1. Как вы можете видеть ниже, если выражение xpath возвращает значение null, вы получите значение -1 в качестве значения по умолчанию.
Но удаление всего выражения из конфигурации также удалит возможность переопределить эту конфигурацию с помощью замены переменных Solr.
protected UpdateHandlerInfo loadUpdatehandlerInfo() {
return new UpdateHandlerInfo(get("updateHandler/@class",null),
getInt("updateHandler/autoCommit/maxDocs",-1),
getInt("updateHandler/autoCommit/maxTime",-1),
getBool("updateHandler/autoCommit/openSearcher",true),
getInt("updateHandler/commitIntervalLowerBound",-1),
getInt("updateHandler/autoSoftCommit/maxDocs",-1),
getInt("updateHandler/autoSoftCommit/maxTime",-1),
getBool("updateHandler/commitWithin/softCommit",true));
}