Azure / Azure/durabletask

Use of TypeNameHandling.All causes JsonReaderException

オープン
#1,007 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C#
スター
1.7k
フォーク
335
平均マージ
2日 23時間
マージ済み PR(30日)
6

説明

### Description
When using TypeNameHandling.All on our serialization settings for dtfx, we receive the following exception:

```
Handler: Exception: Orchestration execution failed due to unhandled exception. : Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: U. Path '', line 0, position 0.

[TaskFailedException]: Error reading JArray from JsonReader. Current JsonReader item is not an array: StartObject. Path '', line 1, position 1.
[TaskFailedExceptionDeserializationException]: Failed to deserialize exception from TaskActivity: Unhandled exception while executing task: Newtonsoft.Json.JsonReaderException: Error reading JArray from JsonReader. Current JsonReader item is not an array: StartObject. Path '', line 1, position 1.
at Newtonsoft.Json.Linq.JArray.Load(JsonReader reader, JsonLoadSettings settings)
at DurableTask.Core.Common.Utils.ConvertToJArray(String input) in /_/src/DurableTask.Core/Common/Utils.cs:line 210
at DurableTask.Core.AsyncTaskActivity`2.RunAsync(TaskContext context, String input) in /_/src/DurableTask.Core/TaskActivity.cs:line 107
at DurableTask.Core.TaskActivityDispatcher.<>c__DisplayClass14_1.<b__2>d.MoveNext() in /_/src/DurableTask.Core/TaskActivityDispatcher.cs:line 189
```

It looks like this was previously resolved for the Azure Functions durable extensions package https://github.com/Azure/azure-functions-durable-extension/pull/1392 which looks very similar to the TaskActivity code that's throwing here: https://github.com/Azure/durabletask/blob/6f902190fcf7f14d42b07e940f516e47525dbc18/src/DurableTask.Core/TaskActivity.cs#L107.

### Expected behavior
TypeNameHandling.All works and serializes properly.

### Actual behavior
The framework throws the exception above.

### App Details

- **Durable task package version (e.g. v1.8.3)**: 2.13.0

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

アクティビティ入力が処理される src/DurableTask.Core/TaskActivity.cs の 107 行目から開始し、issue にリンクされている durable-functions の修正と比較してください。Common/Utils.cs の 210 行目を確認し、TypeNameHandling.All が報告された JsonReaderException や JArray の解析失敗を引き起こさなくなっていることを検証してください。既存のテスト構造で対応できる場合は、シリアライゼーション設定のリグレッションテストを追加してください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
csharp
領域
distributed-systems
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

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

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