It looks like Drupal, is exporting the Solr Configuration zip archive erroneously.

In solrconfig_extra.xml you have the definition of the suggesters. In this case: en, fr, and und.
Drupal fails to set a folder for each of those suggester dictionary, thus telling Solr, to build all those 3 dictionaries, in the same folder (the default one analyzingInfixLookupFactory), causing a write.lock conflict in Solr, which in turn causes all types of errors in the Solr index, where users are not able to use the /suggest requestHandler and other requestHandlers, at random times, obviously, when Solr is trying to build those dictionaries

To the point, here is the snippet generated by Drupal in solrconfig_extra.xml

<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
      <str name="name">en</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">twm_suggest</str>
      <str name="suggestAnalyzerFieldType">text_en</str>
      <str name="contextField">sm_context_tags</str>
      <str name="buildOnCommit">true</str>
      <str name="buildOnStartup">false</str>
    </lst>
  
    <lst name="suggester">
      <str name="name">fr</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">twm_suggest</str>
      <str name="suggestAnalyzerFieldType">text_fr</str>
      <str name="contextField">sm_context_tags</str>
      <str name="buildOnCommit">true</str>
      <str name="buildOnStartup">false</str>
    </lst>
  
    <lst name="suggester">
      <str name="name">und</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">twm_suggest</str>
      <str name="suggestAnalyzerFieldType">text_und</str>
      <str name="contextField">sm_context_tags</str>
      <str name="buildOnCommit">true</str>
      <str name="buildOnStartup">false</str>
    </lst>
  </searchComponent>

And this is what we added, in order to tell Solr to create the dictionaries in 3 separate folders, for each of these suggesters.
Please observe the parameter below, added to each suggester.

<str name="indexPath">./fr</str>
<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
      <str name="name">en</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">twm_suggest</str>
      <str name="suggestAnalyzerFieldType">text_en</str>
      <str name="contextField">sm_context_tags</str>
      <str name="buildOnCommit">true</str>
      <str name="buildOnStartup">false</str>
      <str name="indexPath">./en</str>
    </lst>
  
    <lst name="suggester">
      <str name="name">fr</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">twm_suggest</str>
      <str name="suggestAnalyzerFieldType">text_fr</str>
      <str name="contextField">sm_context_tags</str>
      <str name="buildOnCommit">true</str>
      <str name="buildOnStartup">false</str>
      <str name="indexPath">./fr</str>
    </lst>
  
    <lst name="suggester">
      <str name="name">und</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">twm_suggest</str>
      <str name="suggestAnalyzerFieldType">text_und</str>
      <str name="contextField">sm_context_tags</str>
      <str name="buildOnCommit">true</str>
      <str name="buildOnStartup">false</str>
      <str name="indexPath">./und</str>
    </lst>
  </searchComponent>

It is imperative that this gets fixed at the Drupal Module level, where users download the generated configuration zip archive, so that they won't overwrite any fixes they made on the Opensolr, or their local Solr side, on updating the configset in the future.

This should also be added wherever else multiple dictionaries are being built.

I hope this helps, and that it makes sense.

Thanks guys!
Ciprian
Opensolr.com

Comments

opensolr created an issue. See original summary.

opensolr’s picture

opensolr’s picture

Priority: Critical » Normal
opensolr’s picture

Status: Needs work » Needs review
opensolr’s picture

mkalkbrenner’s picture

Status: Needs review » Active
Issue tags: -suggesters, -solrconfig_extra.xml, -solr, -write.lock

Thanks for reporting this issue. I'll take a look.
There's no patch to review, so setting the status back to Active.

  • mkalkbrenner committed 23663669 on 4.x
    Issue #3396442 by opensolr, mkalkbrenner: solrconfig_extra.xml Causes...
mkalkbrenner’s picture

Version: 4.3.0 » 4.x-dev
Status: Active » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.