Контекст: используем BslLanguageServerDownloader как ориентир (и, возможно, как зависимость) в плагине SonarQ in EDT под 1C:EDT. Обсуждение — в нашем issue #8 (там вы предложили подготовить фикс — спасибо!).
Наблюдение. У пути скачивания ассета таймаут есть: в BslLanguageServerDownloader.download(...) запрос строится с .timeout(DOWNLOAD_TIMEOUT) (10 мин) и дополнительно сторожится watchdog'ом. А вот путь проверки релиза — GitHubReleaseClient.latestRelease(...) — идёт через new GitHubBuilder().withConnector(new HttpClientGitHubConnector()) с дефолтным HttpClient, у которого, насколько я вижу, не задан connect/read timeout (поправьте, если ошибаюсь — внутренности github-api я целиком не читал).
Риск. Если api.github.com принимает соединение, но не отвечает (например, «чёрная дыра» на прокси/фаерволе), вызов downloadIfNeeded(...) может зависнуть на этапе проверки версии, а не завершиться по таймауту.
Предложение. Задать connect timeout (и, где возможно, read/response timeout) для github-запросов проверки релиза — например, сконфигурировать HttpClient/коннектор с таймаутом или обернуть запрос списка релизов в ограничение по времени.
Контекст: используем
BslLanguageServerDownloaderкак ориентир (и, возможно, как зависимость) в плагине SonarQ in EDT под 1C:EDT. Обсуждение — в нашем issue #8 (там вы предложили подготовить фикс — спасибо!).Наблюдение. У пути скачивания ассета таймаут есть: в
BslLanguageServerDownloader.download(...)запрос строится с.timeout(DOWNLOAD_TIMEOUT)(10 мин) и дополнительно сторожится watchdog'ом. А вот путь проверки релиза —GitHubReleaseClient.latestRelease(...)— идёт черезnew GitHubBuilder().withConnector(new HttpClientGitHubConnector())с дефолтнымHttpClient, у которого, насколько я вижу, не задан connect/read timeout (поправьте, если ошибаюсь — внутренности github-api я целиком не читал).Риск. Если
api.github.comпринимает соединение, но не отвечает (например, «чёрная дыра» на прокси/фаерволе), вызовdownloadIfNeeded(...)может зависнуть на этапе проверки версии, а не завершиться по таймауту.Предложение. Задать connect timeout (и, где возможно, read/response timeout) для github-запросов проверки релиза — например, сконфигурировать
HttpClient/коннектор с таймаутом или обернуть запрос списка релизов в ограничение по времени.