1
私は、永続性のためにSQL Durable Instancingを使用して、worflow foundation 4でワークフローを実行しています。WF4を使用した断続的なInstanceOwnerException
場合によっては、ワークフローを再開するときにSystem.Runtime.DurableInstancing.InstanceOwnerExceptionが発生することがあります。
System.Runtime.DurableInstancing.InstanceOwnerException occurred
Message="The execution of an InstancePersistenceCommand was interrupted because the instance owner registration for owner ID 'd2db07fd-f31d-458c-be53-de163d5db8d4' has become invalid. This error indicates that the in-memory copy of all instances locked by this owner have become stale and should be discarded, along with the InstanceHandles. Typically, this error is best handled by restarting the host."
Source=System.Runtime.DurableInstancing
StackTrace:
à System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
à System.Runtime.DurableInstancing.InstancePersistenceContext.ExecuteAsyncResult.End(IAsyncResult result)
à System.Runtime.DurableInstancing.InstancePersistenceContext.OuterExecute(InstanceHandle initialInstanceHandle, InstancePersistenceCommand command, Transaction transaction, TimeSpan timeout)
à System.Runtime.DurableInstancing.InstanceStore.Execute(InstanceHandle handle, InstancePersistenceCommand command, TimeSpan timeout)
à System.Activities.WorkflowApplication.PersistenceManager.Load(TimeSpan timeout)
à System.Activities.WorkflowApplication.LoadCore(TimeSpan timeout, Boolean loadAny)
à System.Activities.WorkflowApplication.Load(Guid instanceId, TimeSpan timeout)
à System.Activities.WorkflowApplication.Load(Guid instanceId)
この例外を回避する手段はありますか?
あなたは正しいです、それはデバッグ中に起こりました。 正しく理解すると、永続化されたWorkflowインスタンスは、ロックを正しく解放しなかった以前の実行によってロックされました。この問題は、HostLockRenewalPeriodを小さくしてロックの有効期限を短くすることで制限できますが、ワークフローエンジンはロックを頻繁にリフレッシュし、データベースの負荷が増えます。 – olorin
私はちょうど私がチェックするつもりだと思ったが、元のロックが 'SurrogateLockOwnerId'によって失効されたかどうかを知ることができます(' SqlWorkflowInstanceStore'を使用している場合)。 – JasonRShaver