External event discarded when the durable function is in Pending state
- 主要言語
- C#
- スター
- 1.7k
- フォーク
- 335
- 平均マージ
- 2日 23時間
- マージ済み PR(30日)
- 6
説明
**Description**
After a long period of inactivity, if we start a new instance of the durable function the initial status is _OrchestrationRuntimeStatus.Pending_ and after 2 seconds the status is updated to _Running_.
If we send and external event to the durable function, invoking the _IDurableOrchestrationClient.RaiseEventAsync()_, while the status is Pending, sometimes the event is discarded!
**Expected behavior**
We expect that the event is not discarded while the status is pending.
**Actual behavior**
As from the application insights the event is dequeued and discarded because the instance of the durable function not exists ("No such instance") but it's not true.
.
After the RaiseEventAsync(), our application log a message with the status of the durable fuction that was _Pending_ (_"Orchestrator '0cbedce2-61b8-41fc-84bf-697d31b80a10' status:'Pending'."_) .
**App Details**
Durable Functions extension version: 2.6.0
Azure Functions runtime version: 4.0.1
Programming language used: .NET (C#)
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
まず、IDurableOrchestrationClient.RaiseEventAsync() が使用する外部イベントのパスと、OrchestrationRuntimeStatus.Pending のインスタンスをどのように処理するかを調査します。Durable Functions extension 2.6.0 と Azure Functions runtime 4.0.1 で説明されているタイミングを再現し、その後、Pending 中に発生させたイベントが "No such instance" としてデキューされず、オーケストレーションが Running に到達した時点で利用可能であることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- azure, csharp
- 領域
- backend, distributed-systems
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100