Skip to content

BslLanguageServerDownloader: проверка релиза без connect/read timeout может зависнуть #80

Description

@Jimmo910

Контекст: используем 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/коннектор с таймаутом или обернуть запрос списка релизов в ограничение по времени.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions