Azure / Azure/durabletask

DurableTaskStorageException: Value for one of the query parameters specified in the request URI is invalid

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

説明

We are running in an issue with DTFx. Sometimes (and only in one region where our service is running - WestEurope), when enqueuing a queue message to start an orchestration, the queueing fails because of a bad parameter in the query string.

Sample query:
https://mystorage.queue.core.windows.net:443/devcenterjobs-control-00/messages?messagettl=%E2%88%921

Error and stacktrace:

> DurableTask.AzureStorage.Storage.DurableTaskStorageException: Value for one of the query parameters specified in the request URI is invalid.
> ---> Microsoft.WindowsAzure.Storage.StorageException: Value for one of the query parameters specified in the request URI is invalid.
> at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteAsyncInternal[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
> at DurableTask.AzureStorage.Storage.AzureStorageClient.WrapFunctionWithReturnType(Func`3 storageRequest, OperationContext context, CancellationToken cancellationToken) in /_/src/DurableTask.AzureStorage/Storage/AzureStorageClient.cs:line 158
> at DurableTask.AzureStorage.TimeoutHandler.ExecuteWithTimeout[T](String operationName, String account, AzureStorageOrchestrationServiceSettings settings, Func`3 operation, AzureStorageOrchestrationServiceStats stats, String clientRequestId)
> at DurableTask.AzureStorage.Storage.AzureStorageClient.MakeStorageRequest[T](Func`3 storageRequest, String accountName, String operationName, String clientRequestId, Boolean force) in /_/src/DurableTask.AzureStorage/Storage/AzureStorageClient.cs:line 149

Looking at the [code](https://github.com/Azure/durabletask/blob/eada7c1b64ea41edc78eb37133df46aefe294c1d/src/DurableTask.AzureStorage/Storage/Queue.cs#:~:text=TimeSpan%3F%20timeToLive,%23endif) here, the value of the messagettl param should always be -1 (as we are not using NET462). And looking at storage client [code](https://github.com/Azure/azure-storage-net/blob/cbe605f9faa01bfc3003d75fc5a16b2eaccfe102/Lib/ClassLibraryCommon/Queue/Protocol/QueueHttpRequestMessageFactory.cs#L187:~:text=public%20static%20StorageRequestMessage%20AddMessage,%7D), it should append it.

Any help to resolve this issue would be appreciated.

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

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

調査の方向性

src/DurableTask.AzureStorage/Storage/Queue.cs から始め、messagettl が Azure Storage's QueueHttpRequestMessageFactory.cs にどのように渡されるかを追跡します。報告された WestEurope の失敗とサンプル URI を使って、パラメーターが無効になる理由を調査し、その後、不正なクエリ値なしでキュー メッセージをエンキューできることを確認します。

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

評価

技術スタック
azure, csharp
領域
backend, cloud
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

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

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