Liquid Content not updating

Issue

When a customer updates a Liquid Content item, the content is not reflected in the visualizer. It may take multiple update attempts for the content to be updated.

The stack trace will show:

[ERROR] DotNetNuke.Services.Exceptions.Exceptions - DotNetNuke.Services.Exceptions.SearchException: Unable to create Lucene writer (lock file is in use).  Please recycle AppPool in IIS to release lock. ---> System.IO.IOException: The process cannot access the file 'C:\DNN\App_Data\Search\write.lock' because it is being used by another process.
  at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  at System.IO.File.InternalDelete(String path, Boolean checkHost)
  at DotNetNuke.Services.Search.Internals.LuceneControllerImpl.get_Writer()
  --- End of inner exception stack trace ---
  at DotNetNuke.Services.Search.Internals.LuceneControllerImpl.get_Writer()
  at DotNetNuke.Services.Search.Internals.LuceneControllerImpl.Delete(Query query)
  at DotNetNuke.Services.Search.Internals.InternalSearchControllerImpl.DeleteSearchDocumentInternal(SearchDocument searchDocument, Boolean autoCommit)
  at Evoq.StructuredContent.Visualizer.Components.VisualizerSearchManager.DeleteSearchDocument(Int32 moduleId, Int32 portalId, Guid contentItemId)
  at Evoq.StructuredContent.Visualizer.Components.VisualizerSearchManager.DeleteSearchDocuments(Int32 portalId, Relationship relationship)
  at Evoq.StructuredContent.Visualizer.Components.Integrations.StructuredContentListener.ClearRenderForModules(StructuredContentChangeNotification notification, IEnumerable`1 relationships)
  at Evoq.StructuredContent.Visualizer.Components.Integrations.StructuredContentListener.Notify(StructuredContentChangeNotification notification)
  at Evoq.StructuredContent.Library.Components.Notifier.StructuredContentNotifierService.Notify(StructuredContentChangeNotification notification)
  at Evoq.StructuredContent.Library.Services.StructuredContentCacheController.Notify(StructuredContentChangeNotification changeInformation)
  at lambda_method(Closure , Object , Object[] )
  at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
  at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)

Root Cause

There currently is a bug where the Liquid Content update function is called whenever an update is done on the Content Library, and it uses the Lucene Search to delete search documents. When a web head which does not have the rights over the write.lock file attempts to call notify(), the file lock error is thrown, and the content is not updated on the site. It is updated on the MicroServices, but content on pages remain unchanged.

Workaround

  • For a customer on a single server:

    Remove the write.lock file from your /app_data/search folder as it may have been orphaned from another site. If you cannot remove the write.lock file, please recycle the application pool a few times in IIS to remove the file lock and try the deletion again.

  • For a customer on a webfarm:

    Confirm that the File Crawler is only running in one web head to avoid issues with the mutex file, and confirm that it is completing without errors. Additionally, run the file crawler only after hours to ensure that the write.lock mutex file is not present during business hours. This way, users should be able to modify the Visualizer content without any errors.



Comments

0 comments

Please sign in to leave a comment.