ГСЧ Валидаты: всегда живая проверка — если seed пропал (перезагрузка ВМ), мастер снова показывает датчик
Раньше готовность кэшировалась в памяти и не возвращалась в «не готов»: после перезагрузки ВМ seed Валидаты пропадал, а bj рапортовал «готов» и прятал карточку датчика — пересборка справочника падала без понятной причины. Теперь rngCheck каждый раз проверяет живьём у воркера. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -24,7 +24,8 @@ import (
|
||||
|
||||
var rngDir = "/var/lib/bj/rng"
|
||||
|
||||
// rngReady — датчик уже инициализирован (запоминаем: обратно в «не готов» он сам не возвращается).
|
||||
// rngReady — последняя известная готовность датчика (кэш UI). На виртуалке готовность может
|
||||
// вернуться в «не готов» (пропал seed), поэтому rngCheck всегда перепроверяет живьём.
|
||||
var rngReady struct {
|
||||
sync.Mutex
|
||||
ok bool
|
||||
@@ -69,21 +70,17 @@ func rngCheck(ctx context.Context) rngView {
|
||||
if rngLive(s, age) {
|
||||
return rngView{OK: true, State: s.State, Progress: s.Progress, Window: s.Window}
|
||||
}
|
||||
rngReady.Lock()
|
||||
ready := rngReady.ok
|
||||
rngReady.Unlock()
|
||||
if !ready {
|
||||
// Всегда живая проверка у воркера: на виртуальной машине seed Валидаты
|
||||
// (/opt/Validata/VDCSP/.crysvc.seed) может пропасть при перезагрузке или рестарте
|
||||
// службы ключей — тогда датчик снова «не готов», и мастер должен снова его запросить.
|
||||
res, err := runKeymediaOp(ctx, "rng-status", nil)
|
||||
if err != nil {
|
||||
return rngView{Error: "проверка датчика не удалась: " + errStr(err)}
|
||||
}
|
||||
ready = res["ready"] == true
|
||||
if ready {
|
||||
ready := res["ready"] == true
|
||||
rngReady.Lock()
|
||||
rngReady.ok = true
|
||||
rngReady.ok = ready
|
||||
rngReady.Unlock()
|
||||
}
|
||||
}
|
||||
v := rngView{OK: true, Ready: ready}
|
||||
if age < 10*time.Minute { // итог недавнего сеанса — показать, чем кончился
|
||||
switch {
|
||||
|
||||
Reference in New Issue
Block a user