ワークフローを実行している Windows サービスがあります。ワークフローはデータベースから読み込まれた XAML です (ユーザーは再ホストされたデザイナーを使用して独自のワークフローを定義できます)。アイドル状態になったときにワークフローを永続化するために、SQLWorkflowInstanceStore の 1 つのインスタンスで構成されます。(これは基本的に、Microsoft の WCF/WF サンプルの \ControllingWorkflowApplications のサンプル コードから派生したものです)。
しかし、時々私は以下のようなエラーを受け取ります:
System.Runtime.DurableInstancing.InstanceOwnerException: 所有者 ID 'a426269a-be53-44e1-8580-4d0c396842e8' のインスタンス所有者登録が無効になったため、InstancePersistenceCommand の実行が中断されました。このエラーは、この所有者によってロックされたすべてのインスタンスのメモリ内コピーが古くなり、InstanceHandles と共に破棄する必要があることを示しています。通常、このエラーはホストを再起動することで処理するのが最適です。
原因を突き止めようとしましたが、開発環境で再現するのは難しく、実稼働サーバーではたまに発生します。私が見つけた 1 つのヒント: LockOwnersTable を見ると、LockOnwersTable lockexpiration が 01/01/2000 0:0:0 に設定されていて、もう更新されていませんが、通常の状況では x 秒ごとに更新する必要があります。ホストロックの更新期間...
では、SQLWorkflowInstanceStore がこの LockExpiration の更新を停止するのはなぜですか? また、その原因を検出するにはどうすればよいでしょうか?