Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- [ReportEvent / GetHostCacheState 小 block 性能记录](design/report_event_performance.md) - local/Redis 指标解释、锁与可见性语义、有界并发、容量基准及后续优化边界
- [高可用与选主机制](design/ha_leader_elector.md) - HA 架构、LeaderElector 状态机、CoordinationBackend、Leader 发现
- [CacheReclaimer 异步删除与过度逐出优化](design/cache_reclaimer_async_delete.md) - 异步删除生命周期、in-flight credit、反压与无进展退避
- [KVCM × PACE CopyGA 异步化设计](design/async_copyga.md) - 复用 PACE 现有异步接口的 KVCM 端到端异步方案、持久 guard fencing、drain-safe 回收、quarantine 容量门控与恢复
- [后台扫描 GC](design/cache_garbage_collector.md) - 基于 authoritative cursor 的后台全量巡检;V1 清理长期 orphan WRITING 和普通 SERVING storage-missing,并提供无副作用读取、精确值条件 CAS 与 HA 生命周期

### 开发文档
Expand Down
43 changes: 43 additions & 0 deletions docs/api/admin_service.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,49 @@ curl -g -vvv -X POST http://localhost:6492/api/removeCache \
}'
```

## List Async Copy Quarantine

Lists asynchronous Copy operations whose remote drain cannot yet be proven. An empty
`instance_group_name` lists every group. This API is read-only; timeout or record age does not make a target safe to
reuse.

```bash
curl -g -vvv -X POST http://localhost:6492/api/listAsyncCopyQuarantine \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"trace_id": "list_async_copy_quarantine_01",
"instance_group_name": "test_group"
}'
```

Each returned record identifies the exact operation, source and target locations, backend task IDs, guarded bytes,
guard timestamps and the last error.

## Break-glass Release Async Copy

This is a privileged recovery API for an `UNKNOWN` asynchronous Copy guard. Use it only after an independent external
fencing procedure proves that the old remote operation can never resume writing its target. Operator confirmation or
elapsed time alone is not sufficient evidence. The request is rejected unless all evidence fields are non-empty and
`external_fencing_confirmed` is `true`.

```bash
curl -g -vvv -X POST http://localhost:6492/api/breakGlassReleaseAsyncCopy \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"trace_id": "break_glass_async_copy_01",
"operation_id": "operation-id-from-list-api",
"operator_name": "operator-name",
"external_fencing_evidence": "change-ticket-or-fencing-record",
"external_fencing_confirmed": true
}'
```

The Manager performs an exact compare-and-set on operation ID and guard state, writes an audit log, and only then
releases the quarantined target. See [KVCM × PACE CopyGA asynchronous design](../design/async_copyga.md) for the guard,
recovery and rollback contract.

## Register Instance
```bash
curl -g -vvv -X POST http://localhost:6492/api/registerInstance \
Expand Down
Loading
Loading