volume_up

A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

volume_up

A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Search & Navigation Content Indexing Job fails both on DXP and locally

I'm getting this error recently when trying to do a re-index of a site. The re-index job will run for 15 seconds then just stop.

EPiServer.Find.Cms.ContentIndexer: Error: 148-JCRXXY2 An exception occurred while fetching content. Invalid operation. The connection is closed..
System.InvalidOperationException: Invalid operation. The connection is closed.
   at Microsoft.Data.ProviderBase.DbConnectionClosed.CreateReferenceCollection()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String method)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at EPiServer.DataAccess.Internal.ContentListDB.ReadPublishedList(DbCommand cmd)
   at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.<>c__DisplayClass26_0`1.<Execute>b__0()
   at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
   at EPiServer.DataAccess.Internal.ContentListDB.LoadSpecificContentInstances(IList`1 contentLinks, Int32 languageBranchID)
   at EPiServer.Core.Internal.DefaultContentProvider.BatchLoad(IList`1 contentLinks, Func`2 dbLoader)
   at EPiServer.Core.Internal.DefaultContentProvider.LoadContents(IList`1 contentReferences, ILanguageSelector selector)
   at EPiServer.Core.ContentProvider.GetContentBatch(IList`1 batch, ILanguageSelector selector, List`1& contents, Dictionary`2& contentMap)
   at EPiServer.Core.ContentProvider.GetScatteredContents(IEnumerable`1 contentLinks, ILanguageSelector selector)
   at EPiServer.Core.Internal.ProviderPipelineImplementation.GetItems(ContentProvider provider, IList`1 contentLinks, LoaderOptions loaderOptions)
   at EPiServer.Core.Internal.DefaultContentLoader.GetItems(IEnumerable`1 contentLinks, LoaderOptions loaderOptions)
   at EPiServer.Find.Cms.ContentIndexer.<>c__DisplayClass52_3.<ReIndex>b__1()

On DXP I also get this kind of error with the same result that not all items are indexed

System.InvalidOperationException: Cannot create a command without an existing connection, you can use DbFactory to create stand-alone command objects
at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.CreateCommand()
at EPiServer.DataAccess.Internal.ContentListDB.<>c__DisplayClass18_0.<LoadChildrenReferencesAndTypes>b__0()
at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.<>c__DisplayClass26_0`1.<Execute>b__0()
at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
at EPiServer.DataAccess.Internal.ContentListDB.LoadChildrenReferencesAndTypes(Int32 pageId, String languageID, FilterSortOrder& parentSortOrder)
at EPiServer.Core.Internal.DefaultContentProvider.LoadChildrenReferencesAndTypes(ContentReference contentLink, String languageID, Boolean& languageSpecific)
at EPiServer.Core.ContentProvider.<>c__DisplayClass114_0`1.<TryGetChildren>b__0()
at EPiServer.Framework.Cache.ObjectInstanceCacheExtensions.ReadThroughWithWait[T](IObjectInstanceCache cache, String cacheKey, Func`1 readValue, Func`2 evictionPolicy)

Weird part is that if I try to index the site via code everything works as expected which tells me that there's maybe something wrong in Epis internal classes? I Tried this snippet just to see if something crashed and it ran without a problem.

var contentItems = _contentLoader.GetDescendents(ContentReference.StartPage).Select(x => _contentLoader.Get<IContent>(x)).ToList();
foreach (var contentItem in contentItems)
{
    SearchClient.Instance.Index(contentItem);
}
#306820
Edited, Aug 15, 2023 14:38
Joonas M. Partanen - Aug 23, 2023 12:39
Did you find any solution to this, Alexander?

I'm facing the same issue starting from EPiServer.CMS 12.22.2. With 12.22.1, the indexing job seems to work just fine.
- Aug 23, 2023 12:51
I'm afraid not. But I've opened a ticket with Optimizely support so they can look at the problem. I'll get back to you once I've got any answers.

Thank you all for reporting this issue and your findings. We are working on a fix for this.

#307402
Edited, Aug 24, 2023 7:36
Vote:

This will be fixed with next CMS and Find package

CMS-29569 BackgroundContext should be isolated
https://world.optimizely.com/support/bug-list/bug/CMS-29569

FIND-11746 Background tasks should run in own context
(Bug not made public yet)

#307579
Aug 28, 2023 15:58

Great, Thank you for the update Daniel!

#307619
Aug 29, 2023 6:20

Just tried it out and it works like a charm now!

#307750
Aug 31, 2023 12:58
error This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.