Sitecore XPバージョン10.2では、アプリケーションのパフォーマンスの最適化を目的としたコード変更が実施されました。しかし、これらの変更により、Sitecoreのキャッシュを破壊するおそれのある、競合状態が引き起こされる可能性があることが判明しました。この問題は、リソース アイテムの子アイテムに同時にアクセスする際に発生します。 子アイテム数が多い場合、この問題が発生しやすくなります。この問題が発生した場合、以下のメッセージがログに出力されます:
ERROR [Sitecore.Web.HttpModule] Application error. Exception: System.IndexOutOfRangeException Message: Index was outside the bounds of the array. Source: mscorlib at System.Collections.Generic.List`1.Add(T item) at Sitecore.Data.DataProviders.PrefetchData.AddChildId(ID childId) at Sitecore.Data.DataProviders.PrefetchData.AddChildrenForEmptyDefinition(IDList list) at Sitecore.Data.DataProviders.Sql.SqlDataProvider.GetChildIDs(ItemDefinition itemDefinition, CallContext context) at Sitecore.Data.DataProviders.CompositeDataProvider.<DoGetChildIDs>d__94.MoveNext() at Sitecore.Common.EnumerableExtensions.ForEach[T](IEnumerable`1 sequence, Action`1 action) at Sitecore.Data.DataProviders.CompositeDataProvider.GetChildIDs(ItemDefinition itemDefinition, CallContext context) at Sitecore.Data.DataProviders.DataProvider.GetChildIDs(ItemDefinition item, CallContext context, DataProviderCollection providers) at Sitecore.Data.DataSource.GetChildIDs(ID itemID) at Sitecore.Nexus.Data.DataCommands.GetChildrenCommand.Execute(Item item) ...
または、以下のエラー メッセージが出力される可能性もあります。
ERROR Application error. Exception: System.ArgumentNullException Message: Value cannot be null. Parameter name: key Source: mscorlib at System.Collections.Concurrent.ConcurrentDictionary`2.TryGetValue(TKey key, TValue& value) at Sitecore.Caching.Generics.Cache`1.InnerBox.DoGetEntry(TKey key, Boolean updateAccessed) at Sitecore.Caching.Generics.Cache`1.GetValue(TKey key) at Sitecore.Caching.Generics.Cache`1.ContainsKey(TKey key) at Sitecore.Data.DataProviders.Sql.SqlDataProvider.EnsureChildrenPrefetched(ID parentId, IDList childIds) at Sitecore.Data.DataProviders.Sql.SqlDataProvider.GetChildIDs(ItemDefinition itemDefinition, CallContext context) at Sitecore.Data.DataProviders.CompositeDataProvider.<DoGetChildIDs>d__94.MoveNext() at Sitecore.Common.EnumerableExtensions.ForEach[T](IEnumerable`1 sequence, Action`1 action) at Sitecore.Data.DataProviders.CompositeDataProvider.GetChildIDs(ItemDefinition itemDefinition, CallContext context) at Sitecore.Data.DataProviders.DataProvider.GetChildIDs(ItemDefinition item, CallContext context, DataProviderCollection providers) at Sitecore.Data.DataSource.GetChildIDs(ID itemID) at Sitecore.Nexus.Data.DataCommands.GetChildrenCommand.Execute(Item item) ...
この問題を解決するには、以下の解決策のいずれかの実施を検討してください。