Azure / Azure/durabletask

External event discarded when the durable function is in Pending state

オープン
#720 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
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.
![MicrosoftTeams-image](https://user-images.githubusercontent.com/48127230/166218980-98601f05-b1c3-42a1-841a-76df0a42246b.png).
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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。