feat(memory): 留痕表正式迁移 0025 + 保留期清扫(W5)
- 迁移 0025_memory_ingest_reviews(幂等,既有部署重跑不炸/不丢行) - GC:保留期 720h + 条数上限 10 万行,挂进审查服务生命周期(Start 起 / Stop 停 / 启动先扫) - 过期即硬删(RevertMerged 只读 memory_items,删留痕不损失回滚能力) - 偏离一处并给理由:表只留 created_at(先例 0017;append-only;加 updated_at 需三份 DDL 真源) - 3 个变异自检(边界 <=/元组比较方向/Retention=0)
This commit is contained in:
1 parent
ddd3d00d09
commit
ffe2518bf4
7 files changed
+861
-9
No files matched your search
@@ -216,8 +216,8 @@ func (r *PreInsertReviewer) SessionID() string { return TidySessionID }
|
||||
// Enabled 报告审查是否被配置开启。
|
||||
func (r *PreInsertReviewer) Enabled() bool { return r.cfg.Enabled }
|
||||
|
||||
// Start 拉起工作协程。幂等;配置关闭时只记一条日志并立即返回(关闭是显式
|
||||
// 选择,绝不静默)。
|
||||
// Start 拉起工作协程(审查队列 + 留痕保留期清扫)。幂等;配置关闭时只记一条日志
|
||||
// 并立即返回(关闭是显式选择,绝不静默)。
|
||||
func (r *PreInsertReviewer) Start(ctx context.Context) {
|
||||
if !r.cfg.Enabled {
|
||||
r.log.Info("memory ingest review disabled by configuration", "env", "MEMORY_REVIEW_ENABLED")
|
||||
@@ -234,10 +234,17 @@ func (r *PreInsertReviewer) Start(ctx context.Context) {
|
||||
r.running = true
|
||||
cctx, cancel := context.WithCancel(ctx)
|
||||
r.cancel = cancel
|
||||
r.wg.Add(1)
|
||||
// 两个协程(审查工作协程 + 留痕清扫循环)**在释放锁之前**一次性登记,
|
||||
// 避免 Stop 的 wg.Wait 与随后的 Add 并发(WaitGroup 的「计数归零后不许再 Add」
|
||||
// 是硬约束,不只是风格)。
|
||||
r.wg.Add(2)
|
||||
r.mu.Unlock()
|
||||
|
||||
go r.worker(cctx)
|
||||
// 留痕清扫(design/23 §15 D3-8 的 memory_ingest_reviews)与审查工作协程同生共死:
|
||||
// 启动期扫一次、此后按间隔定时扫(口径见 preinsert_gc.go)。它删的是**已经过期
|
||||
// 的观测留痕**,与审查本身的判定/记忆行无关,因此失败只记 WARN、绝不退出。
|
||||
go r.sweepLoop(cctx)
|
||||
|
||||
r.log.Info("memory ingest review started",
|
||||
"session_id", TidySessionID,
|
||||
@@ -245,7 +252,10 @@ func (r *PreInsertReviewer) Start(ctx context.Context) {
|
||||
"scan_limit", r.cfg.ScanLimit,
|
||||
"timeout", r.cfg.Timeout.String(),
|
||||
"recall_threshold", r.cfg.Threshold,
|
||||
"rule_version", IngestRuleVersion)
|
||||
"rule_version", IngestRuleVersion,
|
||||
"sweep_interval", DefaultIngestReviewGCInterval.String(),
|
||||
"retention", DefaultIngestReviewRetention.String(),
|
||||
"max_reviews", DefaultIngestReviewMaxRows)
|
||||
}
|
||||
|
||||
// Stop 停止工作协程并等待正在审的那一条跑完。幂等;ctx 在排空前被取消时返回
|
||||
|
||||
Reference in new issue
Block a user