ИШ: этапы обновления шлюза в окне обновления bj, проверка нового ИШ, свежая версия в строке НРД
- окно обновления bj после перезапуска ведёт обновление ИШ по этапам (загрузка, остановка, резервная копия, установка, запуск, проверка) и закрывается только после проверки; пока шлюз обновляется, то же окно на любой странице - bj-igate-admin: этапы stop/backup/verify; после запуска сверяются версия, служба, движок, каналы и ключ с прежними (иначе автооткат), обмен с НРД - версия ИШ в строке НРД читается всегда заново (кэш 6 ч — только сайт НРД); после установки версии пересобираются сразу Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -82,20 +82,24 @@ var (
|
||||
// сайт НРД на каждый показ статуса). Сетевая часть best-effort: при недоступности
|
||||
// сайта возвращается только установленная версия.
|
||||
func ishVersionInfo(ctx context.Context) IshVersionInfo {
|
||||
// установленную версию читаем всегда заново (ИШ мог обновиться минуту назад), сайт — из кэша
|
||||
ishVerMu.Lock()
|
||||
if ishVerCache != nil && time.Since(ishVerCache.CheckedAt) < ishVerTTL {
|
||||
c := *ishVerCache
|
||||
ishVerMu.Unlock()
|
||||
return c
|
||||
}
|
||||
site := ishVerCache
|
||||
ishVerMu.Unlock()
|
||||
|
||||
info := IshVersionInfo{
|
||||
Installed: ishInstalledVersion(),
|
||||
CheckedAt: time.Now().UTC(),
|
||||
if site == nil || time.Since(site.CheckedAt) >= ishVerTTL {
|
||||
linux, latest := ishSiteVersions(ctx)
|
||||
site = &IshVersionInfo{SiteLinux: linux, SiteLatest: latest, CheckedAt: time.Now().UTC()}
|
||||
ishVerMu.Lock()
|
||||
ishVerCache = site
|
||||
ishVerMu.Unlock()
|
||||
}
|
||||
linux, latest := ishSiteVersions(ctx)
|
||||
info.SiteLinux, info.SiteLatest = linux, latest
|
||||
info := IshVersionInfo{
|
||||
Installed: ishInstalledVersion(),
|
||||
SiteLinux: site.SiteLinux,
|
||||
SiteLatest: site.SiteLatest,
|
||||
CheckedAt: site.CheckedAt,
|
||||
}
|
||||
linux, latest := info.SiteLinux, info.SiteLatest
|
||||
|
||||
switch {
|
||||
case info.Installed == "":
|
||||
@@ -113,10 +117,6 @@ func ishVersionInfo(ctx context.Context) IshVersionInfo {
|
||||
info.UpToDate = false
|
||||
info.Note = "доступно обновление до " + linux + " (Astra-Linux)"
|
||||
}
|
||||
|
||||
ishVerMu.Lock()
|
||||
ishVerCache = &info
|
||||
ishVerMu.Unlock()
|
||||
return info
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user