mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-10-15 12:15:11 +00:00
docs(sdk): 补全自动重启的真实约束(退避 / 上限 / 非无感)
原文只说「插件崩溃时平台自动拉起,保障服务可用性」,读起来像 无感瞬时恢复。实测与源码都不是这样: ## 补齐的默认参数(内核 internal/plugin/registry.go) | 参数 | 值 | 含义 | |---|---|---| | procRestartBackoff | 1s | 第 n 次重启前等 n × 1s(线性退避) | | procMaxRestarts | 3 | 窗口内重启次数上限 | | procCrashWindow | 5min | 窗口内无新崩溃则计数归零 | 即实际序列 1s → 2s → 3s;同一 5 分钟窗口内第 4 次崩溃(n > 3)不再 自动拉起,交人工介入。首次重启就要等 1s,期间该插件的工具是缺席的、 调用会报错 —— 需要秒级就位的插件应在 OnStart 里自建重连与状态重建。 ## 顺带改准一处混淆 `SetAutoRestart` 的文档写「崩溃后自动重载」—— 把「重启」说成了 「重载」。重载是换 plugin.bin 后重新加载那条路径(ReloadOne), 与崩溃自愈不是一回事。已在文档里写清,并附上退避与上限。 这个混淆与内核侧 HEAD 修正的 README/官网是同一处(源码注释里 「足够快到用户感知不到工具缺席」也是同一类无实测支撑的主观断言, 已在主仓同批改掉)。 中英双版同步更新。
This commit is contained in:
12
README.md
12
README.md
@ -487,6 +487,18 @@ enabled := sdk.AutoRestart()
|
||||
|
||||
插件崩溃时平台自动拉起,保障服务可用性。
|
||||
|
||||
重启是**有节制的**,默认参数(内核 `internal/plugin/registry.go`):
|
||||
|
||||
| 参数 | 值 | 含义 |
|
||||
|---|---|---|
|
||||
| `procRestartBackoff` | `1s` | 第 n 次重启前等 `n × 1s`(线性退避,非立即拉起) |
|
||||
| `procMaxRestarts` | `3` | 窗口内允许的重启次数上限 |
|
||||
| `procCrashWindow` | `5min` | 窗口内无新崩溃则计数归零 |
|
||||
|
||||
即崩溃后的实际序列是 **1s → 2s → 3s**;同一 5 分钟窗口内第 **4** 次崩溃
|
||||
(`n > 3`)**不再自动拉起**,交人工介入。这不是「立即无感恢复」——
|
||||
如果插件需要秒级就位,请自己在 `OnStart` 里做好重连与重建。
|
||||
|
||||
> ⚠️ `SetAutoRestart` 的典型用法是「外部连接建好后再判定能否自动重启」,而连接建立
|
||||
> 通常在后台 goroutine 里,内核又在另一个 goroutine 读它——这对读写天然并发。
|
||||
> **SDK 1.1.0 已给这个标志与全部 API 字段加锁**(`-race` 实测 11 处竞态,
|
||||
|
||||
Reference in New Issue
Block a user