Операция WaitForInstanceCompletionAsync была отменена.
с внутренним исключением:
Запрос был отменен из-за истечения настроенного HttpClient.Timeout, равного 100 секундам.
и источник:
Microsoft.DurableTask.Client.Grpc
При этом я установил тайм-аут, превышающий 100 секунд.
Вот код, который запускает оркестровку:
Код: Выделить всё
public class Trigger(IMessageMapper mapper)
{
[Function(nameof(Trigger))]
public async Task Run(
[ServiceBusTrigger("pipelinepriorityqueue", Connection = "ServiceBusConnection", IsSessionsEnabled = false)]
ServiceBusReceivedMessage message,
ServiceBusMessageActions messageActions,
[DurableClient] DurableTaskClient taskClient,
FunctionContext context)
{
string? instanceId = null;
try
{
var mappedMessage = mapper.ToApplicationMessage(message);
instanceId = await taskClient.ScheduleNewOrchestrationInstanceAsync($"{nameof(OrganizationOrchestrator)}", Tuple.Create(mappedMessage.OrganizationId, mappedMessage.SecretId, mappedMessage.Farms));
var waitForInstanceStart = new CancellationTokenSource(TimeSpan.FromMinutes(5));
var result = await taskClient.WaitForInstanceStartAsync(instanceId, waitForInstanceStart.Token);
var waitForInstanceCompletion = new CancellationTokenSource(TimeSpan.FromMinutes(10));
result = await taskClient.WaitForInstanceCompletionAsync(instanceId, true, waitForInstanceCompletion.Token);
await messageActions.CompleteMessageAsync(message);
}
catch (Exception ex)
{
await messageActions.DeadLetterMessageAsync(message, deadLetterErrorDescription: ex.Message);
throw;
}
finally
{
await taskClient.PurgeInstanceAsync(instanceId!, new PurgeInstanceOptions { Recursive = true });
}
}
}
Я ожидал, что таймаут наступит после токен отмены. Не позже 100 секунд.
Это происходит локально, еще не тестировалось, но хотелось бы узнать причину этого.
Изменить 1:Возможно, также полезно знать, что в этом случае действия, начатые оркестровкой, будут продолжать выполняться до тех пор, пока не будут завершены.
Подробнее здесь: https://stackoverflow.com/questions/787 ... etionasync