Как запретить Solr делать коммит при перезапуске, который удаляет индекс - PullRequest
0 голосов
/ 13 мая 2019

** update Из того, что я могу сказать, коммиты удаления и перестроения, выполненные на основном компьютере, кэшируются, а затем, когда индекс копируется на другой компьютер и перезапускается solr, он каким-то образом находит эти кэшированные коммиты и запускает их при запуске.,Это плохо для нас, потому что solr скрывается, пока он повторяет те кэшированные коммиты.

Как это отключить?

** оригинал

Мы недавно перешли с Solr 3 на Solr 8.

Индекс построен на одноммашина, а затем скопировать на 4 других машины.

Это «статический» список продуктов.Примерно раз в неделю мы удаляем и перестраиваем индекс на машине 1 и копируем на другие машины, а затем перезапускаем solr на этих машинах.Индекс не изменяется (добавляется или удаляется) между перестройками.

В Solr 3, когда мы перезапускаем Solr после копирования нового индекса, все будет работать так, как мы ожидали.Было бы просто использовать индекс, который мы скопировали.

Теперь с Solr 8 мы обнаруживаем, что перезапуск других машин заставляет DirectUpdateHandler2 / LogUpdateProcessorFactory "УДАЛИТЬ ВСЕ ДОКУМЕНТЫ ИЗ ИНДЕКСА", делать коммит и отправлять запрос на удаление.

Этого никогда не происходитна машине, на которой построен индекс, копируются только наши подчиненные машины.

Мы не считаем, что репликация необходима в нашем случае, поскольку индекс остается статическим, и для нас rsync прощеиндексы на другие машины.

У меня проблемы с поиском того, что нужно изменить в файле solrconfig.xml, чтобы он не отправлял этот deleteByQuery при запуске.Кажется, делает это, только если прошло достаточно времени с тех пор, как мы в последний раз перестраивали индекс.

Это пусто в конфигурации:

<updateHandler class="solr.DirectUpdateHandler2">
</updateHandler>

** это не имело значения, я только что добавилв надежде, что это что-то изменит:

    <deletionPolicy class="solr.SolrDeletionPolicy">

    <!-- The number of commit points to be kept -->
     <str name="maxCommitsToKeep">1</str>
    <!-- The number of optimized commit points to be kept -->
     <str name="maxOptimizedCommitsToKeep">0</str> 
    <!--
        Delete all commit points once they have reached the given age.
        Supports DateMathParser syntax e.g.
      -->
    <!--
       <str name="maxCommitAge">30MINUTES</str>
       <str name="maxCommitAge">1DAY</str>
    -->

    </deletionPolicy>

Solr запускается локально, а не в облачном режиме.Я не использую файл / bin / solr для запуска / остановки.У меня есть rc.d, который запускает его.

Вот соответствующие журналы Solr.Похоже, он выполняет запрос на удаление, а затем добавляет их обратно, но папка индекса остается пустой?

INFO  (searcherExecutor-11-thread-1-processing-x:core0) [   x:core0] o.a.s.c.SolrCore [core0] Registered new searcher Searcher@42dff6af[core0] main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_6j(8.0.0):C26532:[diagnostics={java.runtime.version=1.8.0_202-b08, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os=FreeBSD, os.arch=amd64, os.version=12.0-RELEASE-p3, source=flush, timestamp=1557748786052}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6k(8.0.0):C27135:[diagnostics={java.runtime.version=1.8.0_202-b08, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os=FreeBSD, os.arch=amd64, os.version=12.0-RELEASE-p3, source=flush, timestamp=1557748821980}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6l(8.0.0):C25295:[diagnostics={java.runtime.version=1.8.0_202-b08, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os=FreeBSD, os.arch=amd64, os.version=12.0-RELEASE-p3, source=flush, timestamp=1557748857211}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6m(8.0.0):C18995:[diagnostics={java.runtime.version=1.8.0_202-b08, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os=FreeBSD, os.arch=amd64, os.version=12.0-RELEASE-p3, source=flush, timestamp=1557748884975}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}])))}
INFO  (qtp349420578-20) [   x:core0] o.a.s.u.DirectUpdateHandler2 [core0] REMOVING ALL DOCUMENTS FROM INDEX
INFO  (qtp349420578-20) [   x:core0] o.a.s.u.DirectUpdateHandler2 start commit{,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false,prepareCommit=false}
INFO  (qtp349420578-20) [   x:core0] o.a.s.u.SolrIndexWriter Calling setCommitData with IW:org.apache.solr.update.SolrIndexWriter@29a2d524 commitCommandVersion:0
INFO  (qtp349420578-20) [   x:core0] o.a.s.s.SolrIndexSearcher Opening [Searcher@2613a525[core0] main]
INFO  (qtp349420578-20) [   x:core0] o.a.s.u.DirectUpdateHandler2 end_commit_flush
INFO  (searcherExecutor-11-thread-1-processing-x:core0) [   x:core0] o.a.s.c.QuerySenderListener QuerySenderListener sending requests to Searcher@2613a525[core0] main{ExitableDirectoryReader(UninvertingDirectoryReader())}
INFO  (searcherExecutor-11-thread-1-processing-x:core0) [   x:core0] o.a.s.c.QuerySenderListener QuerySenderListener done.
INFO  (searcherExecutor-11-thread-1-processing-x:core0) [   x:core0] o.a.s.c.SolrCore [core0] Registered new searcher Searcher@2613a525[core0] main{ExitableDirectoryReader(UninvertingDirectoryReader())}
INFO  (qtp349420578-20) [   x:core0] o.a.s.u.p.LogUpdateProcessorFactory [core0]  webapp=/solr path=/update params={commit=true}{deleteByQuery=*:*,commit=} 0 145
INFO  (qtp349420578-14) [   x:core1] o.a.s.u.DirectUpdateHandler2 [core1] REMOVING ALL DOCUMENTS FROM INDEX
INFO  (qtp349420578-14) [   x:core1] o.a.s.u.DirectUpdateHandler2 start commit{,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false,prepareCommit=false}
INFO  (qtp349420578-14) [   x:core1] o.a.s.u.SolrIndexWriter Calling setCommitData with IW:org.apache.solr.update.SolrIndexWriter@42e13429 commitCommandVersion:0
INFO  (qtp349420578-14) [   x:core1] o.a.s.s.SolrIndexSearcher Opening [Searcher@3dc3e12[core1] main]
INFO  (qtp349420578-14) [   x:core1] o.a.s.u.DirectUpdateHandler2 end_commit_flush
INFO  (searcherExecutor-10-thread-1-processing-x:core1) [   x:core1] o.a.s.c.QuerySenderListener QuerySenderListener sending requests to Searcher@3dc3e12[core1] main{ExitableDirectoryReader(UninvertingDirectoryReader())}
INFO  (searcherExecutor-10-thread-1-processing-x:core1) [   x:core1] o.a.s.c.QuerySenderListener QuerySenderListener done.
INFO  (searcherExecutor-10-thread-1-processing-x:core1) [   x:core1] o.a.s.c.SolrCore [core1] Registered new searcher Searcher@3dc3e12[core1] main{ExitableDirectoryReader(UninvertingDirectoryReader())}
INFO  (qtp349420578-14) [   x:core1] o.a.s.u.p.LogUpdateProcessorFactory [core1]  webapp=/solr path=/update params={commit=true}{deleteByQuery=*:*,commit=} 0 24
INFO  (qtp349420578-16) [   x:core0] o.a.s.u.DirectUpdateHandler2 start commit{,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false,prepareCommit=false}
INFO  (qtp349420578-16) [   x:core0] o.a.s.u.SolrIndexWriter Calling setCommitData with IW:org.apache.solr.update.SolrIndexWriter@29a2d524 commitCommandVersion:0
INFO  (qtp349420578-16) [   x:core0] o.a.s.s.SolrIndexSearcher Opening [Searcher@8c5c9e1[core0] main]
INFO  (qtp349420578-16) [   x:core0] o.a.s.u.DirectUpdateHandler2 end_commit_flush
INFO  (searcherExecutor-11-thread-1-processing-x:core0) [   x:core0] o.a.s.c.QuerySenderListener QuerySenderListener sending requests to Searcher@8c5c9e1[core0] main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_70(8.0.0):C60051:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, mergeMaxNumSegments=-1, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=merge, mergeFactor=10, os.version=12.0-RELEASE-p3, timestamp=1557766812128}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6o(8.0.0):C6151:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766730928}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6q(8.0.0):C6010:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766748246}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6z(8.0.0):C6622:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766821254}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_71(8.0.0):C5449:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766829833}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_72(8.0.0):C5439:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766837529}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_73(8.0.0):C5187:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766845144}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_74(8.0.0):C3048:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766849549}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}])))}
INFO  (searcherExecutor-11-thread-1-processing-x:core0) [   x:core0] o.a.s.c.QuerySenderListener QuerySenderListener done.
INFO  (searcherExecutor-11-thread-1-processing-x:core0) [   x:core0] o.a.s.c.SolrCore [core0] Registered new searcher Searcher@8c5c9e1[core0] main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_70(8.0.0):C60051:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, mergeMaxNumSegments=-1, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=merge, mergeFactor=10, os.version=12.0-RELEASE-p3, timestamp=1557766812128}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6o(8.0.0):C6151:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766730928}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6q(8.0.0):C6010:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766748246}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_6z(8.0.0):C6622:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766821254}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_71(8.0.0):C5449:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766829833}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_72(8.0.0):C5439:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766837529}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_73(8.0.0):C5187:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766845144}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_74(8.0.0):C3048:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766849549}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}])))}
INFO  (qtp349420578-16) [   x:core0] o.a.s.u.p.LogUpdateProcessorFactory [core0]  webapp=/solr path=/update params={commit=true}{add=[1, 3, 4, 5, 6, 7, 8, 12, 13, 17, ... (97957 adds)],commit=} 0 140797
INFO  (qtp349420578-20) [   x:core1] o.a.s.u.DirectUpdateHandler2 start commit{,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false,prepareCommit=false}
INFO  (qtp349420578-20) [   x:core1] o.a.s.u.SolrIndexWriter Calling setCommitData with IW:org.apache.solr.update.SolrIndexWriter@42e13429 commitCommandVersion:0
INFO  (qtp349420578-20) [   x:core1] o.a.s.s.SolrIndexSearcher Opening [Searcher@4f2f2289[core1] main]
INFO  (qtp349420578-20) [   x:core1] o.a.s.u.DirectUpdateHandler2 end_commit_flush
INFO  (searcherExecutor-10-thread-1-processing-x:core1) [   x:core1] o.a.s.c.QuerySenderListener QuerySenderListener sending requests to Searcher@4f2f2289[core1] main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_1e(8.0.0):C6778:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766860399}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_1f(8.0.0):C6493:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766868779}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_1g(8.0.0):C5931:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766877352}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_1h(8.0.0):C2786:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766881149}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}])))}
INFO  (searcherExecutor-10-thread-1-processing-x:core1) [   x:core1] o.a.s.c.QuerySenderListener QuerySenderListener done.
INFO  (searcherExecutor-10-thread-1-processing-x:core1) [   x:core1] o.a.s.c.SolrCore [core1] Registered new searcher Searcher@4f2f2289[core1] main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_1e(8.0.0):C6778:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766860399}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_1f(8.0.0):C6493:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766868779}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_1g(8.0.0):C5931:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766877352}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}]) Uninverting(_1h(8.0.0):C2786:[diagnostics={os=FreeBSD, java.vendor=Oracle Corporation, java.version=1.8.0_202, java.vm.version=25.202-b08, lucene.version=8.0.0, os.arch=amd64, java.runtime.version=1.8.0_202-b08, source=flush, os.version=12.0-RELEASE-p3, timestamp=1557766881149}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}])))}
INFO  (qtp349420578-20) [   x:core1] o.a.s.u.p.LogUpdateProcessorFactory [core1]  webapp=/solr path=/update params={commit=true}{add=[378, 462, 616, 649, 819, 849, 857, 869, 880, 968, ... (21988 adds)],commit=} 0 29390

1 Ответ

1 голос
/ 15 мая 2019

Устранение следующих проблем:

Изменен тип блокировки на none (это нормально для моего приложения)

Удален файл write.lock из обоих / data / index длякаждое ядро.

Отключено UpdateLogging

Удалил созданную папку / data / tlog и содержимое для каждого ядра.

Я не знаю точно, почему мне давали вещи типа блокировкитакая проблема, но это приведет к удалению файлов индекса при запуске при определенных обстоятельствах.Скорее всего, основано на времени.

В tlog / UpdateLogging было то, что заставляло другие машины запускать удаление и добавлять запросы при запуске.

* Это сработало только один раз!Мы смогли скопировать все индексные файлы на другой компьютер и перезапустить, но на этот раз сегменты не были удалены.Но через несколько дней у нас другое поведение.

Теперь он удаляет все файлы сегментов, а затем записывает один файл сегментов_1.В журнале не сказано, почему он это делает.Я не уверен, что делать, застрял снова!

** Конечным решением было использование Solr резервного копирования и восстановления API для загрузки в новый индекс.Оказывается, вы не можете редактировать или изменять файлы в папке / data / index во время работы solr, что было возможно в нашем экземпляре Solr 3, но, очевидно, не в Solr 8.

...