RetryerRequiredException в оболочке Sitecore
Кто-нибудь когда-либо испытывал RetryerRequiredException
в оболочке Sitecore? Я получаю это исключение в тестовой среде (локальных проблем нет), когда я хочу опубликовать элементы или перестроить базу данных ссылок (или все, что требует сохранения в базе данных).
Я использую SC7.2 (версия 141226) с серверной частью Oracle. Элемент retryer в web.config отключен.
Это сообщение об исключении:
Retryer required for database operation. You need to wrap code into Factory.GetRetryer().Execute<int>(() => {}) context.
И трассировка стека:
[RetryerRequiredException: Retryer required for database operation. You need to wrap code into Factory.GetRetryer().Execute<int>(() => {}) context.]
Sitecore.Data.DataProviders.Sql.SqlDataApi.CreateTransaction() +354
Sitecore.Data.Security.Accounts.SqlMembershipUser.UpdateProperties(String propertyNames, String propertyValues, Byte[] binaryValues) +62
Sitecore.Data.Security.Accounts.SqlProfileProviderBase.SetPropertyValues(SettingsContext sc, SettingsPropertyValueCollection properties) +611
System.Configuration.SettingsBase.SaveCore() +474
System.Configuration.SettingsBase.Save() +104
System.Web.Profile.ProfileBase.SaveWithAssert() +42
System.Web.Profile.ProfileBase.Save() +122
Sitecore.Security.UserProfile.Save() +266
Sitecore.Web.UI.HtmlControls.Registry.SetValue(String key, String value) +222
Sitecore.Shell.Applications.ShellForm.ShowDatabaseName(String visible) +93
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0
System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +76
System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +211
Sitecore.Shell.Framework.Commands.MethodCommandProcessor.Invoke(PipelineArgs args) +534
Sitecore.Nexus.Pipelines.NexusPipelineApi.Resume(PipelineArgs args, Pipeline pipeline) +398
Sitecore.Pipelines.Pipeline.Start(PipelineArgs args, Boolean atomic) +366
Sitecore.Shell.Framework.Commands.MethodCommand.Execute(CommandContext context) +632
Sitecore.Web.UI.Sheer.ClientPage.OnPreRender(EventArgs e) +547
System.Web.UI.Control.PreRenderRecursiveInternal() +113
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4297
РЕДАКТИРОВАТЬ 1:
Я также попытался включить элемент конфигурации retryer, но это приводит к тому же исключению.
РЕДАКТИРОВАТЬ 2:
Единственное, что изменилось в последнее время - это обновление с версии 7.2 rev 140526 до версии 141226. В примечаниях к выпуску я вижу это:
Конфигурация Sitecore была изменена, чтобы использовать разные экземпляры ретритера для каждого объекта базы данных, чтобы активный ретритер для базы данных не блокировал работу с другими базами данных. (422504)
Но соответствующий web.config не показывает изменения, связанные с этим.
1 ответ
В итоге я отправил эту проблему на support.sitecore.com, и это явно ошибка. Обходной путь - закомментировать весь элемент ретритора в конфигурации:
<!--retryer disabled="true" type="Sitecore.Data.DataProviders.Retryer, Sitecore.Kernel">
<param desc="Number of tries">6</param>
<param desc="Interval between tries">00:00:00.500</param>
<param desc="Log each exception (should be used for debug only)">true</param>
</retryer-->