diadocsdk-csharp
diadocsdk-csharp copied to clipboard
Зависает GetDocflowEvents
Добрый день!
У нас есть джоба, которая через каждые n
времени проверяет статусы загруженных документов.
По неизвестным причинам через разное время (примерно через 1-3 дня) джоба зависает. Пытались выяснить что не так, обложили все логами, выяснилось, что зависает запрос GetDocflowEvents. При этом до возникновения зависания этот вызов может долго исправно работать при предыдущих запусках джобы.
У нас также есть другие задачи по крону и в коде происходит работа с другими методами DiadocApi (GetOrganizationByInnKpp, GetDocumentTypes, PostMessage), но проблем и зависаний не возникает и они исправно работают и не отваливаются даже когда GetDocflowEvents уже находится в подвешенном состоянии.
С чем это может быть связано?
И еще вопрос, можно ли добавить в асинхронные версии методов DiadocApi проброс токена отмены операции? На случай если вызов DiadocApi превышает установленные нами временные лимиты. Недавно мы создавали PR с добавлением этой фичи -> https://github.com/diadoc/diadocsdk-csharp/pull/735
Спасибо!
DiadocSDK 2.8.1
Добрый день. Спасибо за PR, у нас разработчики в ближайшее время посмотрят его.
В целом по GetDocflowEvents мы такой проблемы не видим. Покажите префикс вашего ключа, boxId в контексте которого происходит зависание и примерное время зависшего вызова
Сегодня зависло примерно после 2020-10-02 14:17:30.1757 (скорее всего время НСК) Токен, при котором произошло, к сожалению, не определить. Текущий токен и ящик:
var token = "SPQjHCKyxs27zKjsBM+Qwd0UvLJlF8wr1PdO6Z9SLBvpAQSH0w0G8TZzMcVQKHOrvr1UvFHgwVsiz1rm28mezkad63rpZXkSutse1nxFDRUMxJ2pxHgyljU8CWEQLHutv6D1BojZeAC4KsaNEJzjwMOL+v4GGm1/sySIB5v5lDg=";
var boxId = "[email protected]";
GetDocflowEvents(token, boxId, getDocflowEventsRequest)
Параметр запроса GetDocflowEventsRequest
может быть как по индексу:
Так и по времени:
А что вы вкладываете в понятие "зависает"?
Вызывается метод GetDocflowEvents, но сколько бы много времени не прошло с момента этого вызова, ответ так и не приходит и не выбрасывается никаких исключений.
А это точно не какие-нибудь дедлоки в приложении? По вашему ящику в логах нашел только один более менее долгий запрос, который 2 секунды длился. Это наталкивает на мысль, что проблемы могут быть в самом приложении
Спасибо, проверяем постоянно, но пока ничего такого, что могло заблокировать работу DiadocApi не нашли. У Вас в логах по нашему ящику был вообще запрос GetDocflowEvents в период примерно >= 2020-10-02 10:17:30.1757 (МСК)?
Возникает такая ситуация не очень часто, как писали ранее, примерно раз в 1-3 дня. Будем дальше изучать.
Могут быть какие-нибудь проблемы с освобождением ресурсов при работе с WebRequest? Например, в этих местах ->https://github.com/diadoc/diadocsdk-csharp/pull/744
Вижу по логам постоянные запросы на /v2/searchdocflows, которые заканчиваются в 2020-10-02 10:17:35 мск. Затем периодические запросы раз в 10 минут на аутентификацию (/authenticate). Затем в 11:48:55 снова начинаются постоянные запросы на /v2/searchdocflows
не думаю, что проблема с WebRequest-ом (попозже посмотрю пул реквест). Выглядит как проблема именно с потоками, а не с ресурсами