EXMモジュールがインストールされている場合、Webインデックスを再構築するとContent Deliveryサーバでエラーが発生する


概要

Sitecore XPインスタンスにEXMモジュールをインストール後、Webインデックスを再構築しようとした際に、Content Deliveryインスタンスのクロール ログに、下記のような例外メッセージが出力される場合があります。

FATAL Could not add field {52D572AD-9678-423F-96E2-477528418BA1} : global opt-out list for indexable sitecore://web/{...}...
Exception: System.InvalidOperationException
Message: Could not find configuration node: databases/database[@id='master']
Source: Sitecore.Kernel
   at Sitecore.Configuration.DefaultFactory.GetConfigNode(String xpath, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.CreateObject(String configPath, String[] parameters, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.GetDatabase(String name, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.GetDatabase(String name)
   at Sitecore.Web.UI.HtmlControls.Data.LookupSources.GetDatabase(String source)
   at Sitecore.Data.Fields.CustomField.GetDatabase()
   at Sitecore.Data.Fields.ReferenceField.get_Database()
   at Sitecore.Data.Fields.ReferenceField.get_TargetID()
   at Sitecore.ContentSearch.FieldReaders.LookupFieldReader.GetFieldValue(IIndexableDataField indexableField)
   at Sitecore.ContentSearch.FieldReaders.FieldReaderMap.GetFieldValue(IIndexableDataField field)
   at Sitecore.ContentSearch.SolrProvider.SolrDocumentBuilder.AddField(IIndexableDataField field)
   at Sitecore.ContentSearch.AbstractDocumentBuilder`1.CheckAndAddField(IIndexable indexable, IIndexableDataField field)

解決策 #1

この例外が発生しても、環境に対して一切影響を与えませんので、無視していただいて問題ありません。この種のメッセージをフィルタリングして、クローリング ログ ファイルに記録しないようにできます。

/App_Config/Sitecore/ContentSearch/Sitecore.ContentSearch.config ファイルに、下記のフィルターを追加してください。

<appender name="CrawlingLogFileAppender" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging">
  <file value="$(dataFolder)/logs/Crawling.log.{date}.{time}.txt" />
  <appendToFile value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
  </layout>
  <filter type="log4net.Filter.StringMatchFilter">
    <stringToMatch value="global opt-out list for indexable"/>
    <acceptOnMatch value="false" />
  </filter>
  <encoding value="utf-8" />
</appender>

解決策 #2

下記の設定ファイルをダウンロードして、適用してください。