ИШ: страница блокируется на время обновления, автооткат при сбое, честные статусы
- Обновление ИШ из обновления bj: страница «Шлюз НРД» (мастер и «Настройка → НРД») перекрывается окном с ходом установки; успех — перезагрузка страницы, ошибка — текст и журнал. Статус ИШ отдаёт upgrade_to (получена версия, обновится сам) и installing (идёт установка) — вместо «ИШ не работает» и кнопки переустановки. - Сбой после полного бэкапа (dpkg, запуск, движок не в Running) — bj-igate-admin сам откатывает ИШ к прежней версии (этап rollback); итог — ошибка «обновление до X не прошло: …, ИШ автоматически откатан к Y и работает». Проверено на 28 искусственным сбоем после установки пакета. - Откат не опускает счётчики id в базе ИШ: иначе новые пакеты получали бы уже виденные bj номера и поллер их пропускал. - Автообновление ИШ после перезапуска ядра — через 20 с (было 2 мин), с повторами через 2 и 10 мин, если дистрибутив дописан позже. В итоге обновления bj — пояснение, что сам шлюз обновится через несколько минут. - Строка версий над разделом НРД обновляется сразу при смене версии ИШ. - Сводка «НРД → Организация» и раскрытие «Перенастроить» смотрят организацию так же, как bj (orgEff: введённое или из справочника по коду) — не «не задана», когда ИНН взят из справочника. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -252,6 +252,16 @@ func (u *Updater) ApplyUpdate(ctx context.Context, names []string) (string, erro
|
||||
return msg, err
|
||||
}
|
||||
|
||||
// igateUpgradeNote — с обновлением пришёл дистрибутив ИШ: сам шлюз bj обновит чуть позже, отдельно.
|
||||
func igateUpgradeNote(list []string) string {
|
||||
for _, x := range list {
|
||||
if v, ok := strings.CutPrefix(x, "igate-dist "); ok {
|
||||
return "; пришёл дистрибутив ИШ " + v + " — сам шлюз bj обновит автоматически в течение нескольких минут (около 2 минут шлюз недоступен; настройки и каналы сохраняются)"
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (u *Updater) applyUpdate(ctx context.Context, names []string) (string, error) {
|
||||
if licensingEnabled(u.rc) {
|
||||
ls := licenseStatus(u.rc)
|
||||
@@ -392,7 +402,7 @@ func (u *Updater) applyUpdate(ctx context.Context, names []string) (string, erro
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("установка: %w", err)
|
||||
}
|
||||
msg := "установлено: " + strings.Join(list, ", ")
|
||||
msg := "установлено: " + strings.Join(list, ", ") + igateUpgradeNote(list)
|
||||
if r, ok := res["restarted"].([]any); ok && len(r) > 0 {
|
||||
var units []string
|
||||
for _, x := range r {
|
||||
@@ -772,7 +782,7 @@ func (u *Updater) applyBundle(ctx context.Context, zipPath string) (string, erro
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("установка: %w", err)
|
||||
}
|
||||
msg := fmt.Sprintf("из файла (релиз %s) установлено: %s", m.Version, strings.Join(list, ", "))
|
||||
msg := fmt.Sprintf("из файла (релиз %s) установлено: %s", m.Version, strings.Join(list, ", ")) + igateUpgradeNote(list)
|
||||
if r, ok := res["restarted"].([]any); ok && len(r) > 0 {
|
||||
var units []string
|
||||
for _, x := range r {
|
||||
|
||||
Reference in New Issue
Block a user