myxce/src/controller
lei.chen 805288d747 E2 Phase 2: external-license-resources 运维面 — stale 标记、last-updated 展示、xceadmin extres status
design.md 3.5 Phase 2(PEN D reason 专用名为可选项,复用 PREASON_NO_RESOURCE
已带资源名,跳过):

① esd stale 标记与 WARN
  - esd_source_t 增 stale_limit/last_ok_time;esd_source_is_stale(): 从未有值
    不算 stale、时钟超前钳到 0、严格大于(interval==limit 不抖动)、
    ESD_STALE_LIMIT_DEFAULT 150;fail-open 保持旧值不变
  - 采集失败首轮一次性 WARN,过限后每轮升级为 STALE WARN(带 age/limit/kept
    值),恢复即静默
  - status 文件 esd_status_write(): daemon/pid/started_at/generated_at/
    pushes ok/fail/sources[{name,last_value,last_ok_time,stale}],tmp+rename
    原子写;写失败仅状态转换时告警一次,绝不拖垮 poll 循环

② `xce resources` 展示 last-updated
  - controller worker.c: EXTERNAL 共享值被接受时盖 last_report——同时盖
    live resmgr 对象与 myconf 配置树副本(apiserver 定义 store 只由 join 时
    config push 供给,串行的是配置树,缺后者 CLI 永远显示 never)
  - scheduler core_events.c: RESOURCES_PUSH 原地更新拷贝 last_report(纯
    metadata,resobj.c 比较本就排除)
  - apiserver: model 带 last_report + 默认列(SelectFields 只投影默认列,
    缺失即 API/CLI 全链不可见);convert cResourceToModel 透传
  - apiserver handler.go: OnResourceLocationUpdated 对 host=="" 且定义带
    EXTERNAL(0x10) 的推送刷新 store 内 LastReport——config push 快照之外
    的活刷新;host 来源值与非 EXTERNAL 资源绝不触碰
  - xcecli: LAST_UPDATED 列(-l verbose 表格/详情/JSON 三态),0 显示 "-"

④ `xceadmin extres status`
  - 本机读 status 文件(远程读取留待 PR-2,需新 wire 协议;LAST_UPDATED
    已覆盖远程新鲜度语义)——--status-file 显式路径或
    /var/run/xce/esd-status.json 默认,无 controller 连接依赖
  - XceExtresStatusError 本地文件类错误;click default=None 装饰期冻结坑
    用调用期解析

TDD:test_extres_resvals +2(配置树盖戳/非 EXTERNAL 不盖戳)、test_esd_core
+4(stale 判式/状态文件)、apiserver models +2(默认列/json tag)、backend
integration +2(EXTERNAL 刷新/非 EXTERNAL 不刷新)、xceadmin +11(渲染/
本地读/容错)。全绿:controller 1360、scheduler 100、apiserver(cgo+nocgo)、
esd 11、xceadmin 385。

t1 E2E 实证:esd join 即推送→API last_report=join 时刻→CLI LAST_UPDATED
"Oct 27 13:52";破坏采集器后 60s 过限转 per-round STALE WARN + status
stale:true + fail-open 保值,恢复脚本即回 false;liccheck 作业提交→运行→
DONE,五 daemon 全健康。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-27 14:00:33 +00:00
..
include E2 Phase 1: external-license-resources — xceesd daemon, extres role, EXTERNAL admission 2026-10-27 03:45:28 +00:00
testsuite E2 Phase 2: external-license-resources 运维面 — stale 标记、last-updated 展示、xceadmin extres status 2026-10-27 14:00:33 +00:00
apiserver.c fix(controller): push workers before configs on apiserver join 2026-08-24 14:17:50 +00:00
CLAUDE.md fix(controller): raft_cb_persist must deny vote and roll back state on persist failure (bug-1684) 2026-08-25 07:49:49 +00:00
cluster.c E2 Phase 1: external-license-resources — xceesd daemon, extres role, EXTERNAL admission 2026-10-27 03:45:28 +00:00
commit.c Fix two flaky test failures: commit sweep timeout + array stats identity 2026-10-22 02:51:42 +00:00
config_repl.c admin-plane breakpoint 2: YAML resourcemap wiring + queue payload deep-copy 2026-10-23 14:29:29 +00:00
config_repl.h fix(controller): size the config-push barrier for loaded hosts and admit its wait (bug-1914) 2026-10-04 23:59:29 +00:00
ctrl_metrics.c feat: P3-7 ctrl_metrics — 7 atomic counters/gauges + descriptor table + persist wiring 2026-05-08 00:04:06 +00:00
ctrlstatus.c fix(controller): cold start elects in ~1.7 s, not ~10 s; ctrlstatus appliedLsn on the primary (bug-1879, bug-1878) 2026-09-28 07:35:45 +00:00
dataex.c fix(scheduler,controller): worker resource values always display as 0.00 (bug-1568) 2026-08-17 10:35:34 +00:00
egress.c feat(ha-convergence-recovery): commit-gated scheduler egress — submit_lsn tagging + watermark gate (task 1.2) 2026-06-14 02:33:36 +00:00
extres.c E2 Phase 1: external-license-resources — xceesd daemon, extres role, EXTERNAL admission 2026-10-27 03:45:28 +00:00
ha.c admin-plane breakpoint 3: done-job live GC 2026-10-23 15:47:10 +00:00
ha.h admin-plane breakpoint 3: done-job live GC 2026-10-23 15:47:10 +00:00
ha_convergence.c fix(controller): offload demotion convergence and catch-up streaming by default (bug-1450, bug-1451) 2026-09-27 05:46:09 +00:00
job.c admin-plane breakpoint 3: done-job live GC 2026-10-23 15:47:10 +00:00
join.c E2 Phase 1: external-license-resources — xceesd daemon, extres role, EXTERNAL admission 2026-10-27 03:45:28 +00:00
main.c build: eliminate all remaining compile warnings 2026-10-21 15:38:42 +00:00
meson.build E2 Phase 1: external-license-resources — xceesd daemon, extres role, EXTERNAL admission 2026-10-27 03:45:28 +00:00
misc.c feat(controller): compute the LSF CPU peak and efficiency fields (bug-1736) 2026-10-02 04:14:35 +00:00
myapp.c fix: spurious errors/warnings from a pc13v HA deploy (bug-1872..1877) 2026-09-28 04:35:19 +00:00
myconf.c fix(config): serialize load_primary_config against concurrent invocations (bug-1476) 2026-07-28 08:13:54 +00:00
opget.c refactor(controller,xceadmin): drop generic Resource.unit, hardcode bytes for maxmem 2026-08-13 08:27:16 +00:00
opupd.c E2 Phase 1: external-license-resources — xceesd daemon, extres role, EXTERNAL admission 2026-10-27 03:45:28 +00:00
persist.c worker: handle pre-exec failure without dying; persist: skip snapshot queues not in config 2026-10-22 07:17:01 +00:00
queue.c admin-plane breakpoint 2: YAML resourcemap wiring + queue payload deep-copy 2026-10-23 14:29:29 +00:00
repl.c build: remove nix dependency layer -- apt system libs + meson wrap subprojects 2026-10-20 18:04:22 +00:00
reply.c fix(persist): zero nresvals_to_sched after free_name_val_list 2026-05-20 09:39:07 +00:00
resources.c update controller code 2025-11-05 16:58:57 +08:00
resync.c fix(controller): persist a failed job's finish_time through WAL_JOB_FAIL (bug-1747) 2026-09-26 09:33:55 +00:00
sched.c admin-plane breakpoint 2: YAML resourcemap wiring + queue payload deep-copy 2026-10-23 14:29:29 +00:00
slowlane.c fix(controller): offload demotion convergence and catch-up streaming by default (bug-1450, bug-1451) 2026-09-27 05:46:09 +00:00
startup_validation.c fix(controller): restored-but-stale raft term permanently blocked re-election after restart (bug-1695) 2026-08-25 16:11:37 +00:00
task.c save works 2026-03-04 18:18:53 +08:00
worker.c E2 Phase 2: external-license-resources 运维面 — stale 标记、last-updated 展示、xceadmin extres status 2026-10-27 14:00:33 +00:00