DurableTaskStorageException: Value for one of the query parameters specified in the request URI is invalid
- 主要言語
- 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