SaaS CMS has officially launched! Learn more now.

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)
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.
Alexander Wagner - 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.

Edited, Aug 24, 2023 7:36

This will be fixed with next CMS and Find package

CMS-29569 BackgroundContext should be isolated

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

Aug 28, 2023 15:58

Great, Thank you for the update Daniel!

Aug 29, 2023 6:20

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

Aug 31, 2023 12:58
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.