RFC-20 Phase 3: GC 集成 #23

Closed
opened 2026-05-30 05:36:34 +00:00 by xingyue · 0 comments
Owner

User Story

作为用户,运行 json-cas gc 时,所有 variable 引用的 CAS 数据自动保留不被清理。没有 variable 引用的孤立数据被清除。

前置条件

Phase 1 + Phase 2 已完成。

测试步骤

准备

  • Step 0: 创建有引用和无引用的数据
    json-cas bootstrap
    json-cas schema put '{"type":"object","properties":{"name":{"type":"string"}}}'
    # → SCHEMA_HASH
    json-cas put <SCHEMA_HASH> '{"name":"referenced"}'   # → HASH_REF
    json-cas put <SCHEMA_HASH> '{"name":"orphan"}'        # → HASH_ORPHAN
    
    json-cas var create --scope test/ --value <HASH_REF>
    # → VAR_1 (引用 HASH_REF)
    

GC 验证

  • Step 1: gc 保留 variable 引用的数据

    json-cas gc
    json-cas cas get <HASH_REF>
    

    预期: HASH_REF 仍然存在,返回正常节点数据

  • Step 2: gc 清除孤立数据

    json-cas cas get <HASH_ORPHAN>
    

    预期: HASH_ORPHAN 已被 gc 清除,返回 not found

  • Step 3: 删除 variable 后再 gc

    json-cas var delete <VAR_1>
    json-cas gc
    json-cas cas get <HASH_REF>
    

    预期: HASH_REF 不再有 variable 引用,被 gc 清除

Schema 也被保留

  • Step 4: variable 引用的节点的 schema 不被 gc
    json-cas var create --scope test/ --value <HASH_REF_2>
    json-cas gc
    json-cas cas get <SCHEMA_HASH>
    
    预期: schema 节点作为被引用节点的类型,在 walk 时被遍历到,不被清除

验证完成标准

所有 checkbox 打勾
bun test 通过
bun run check 无 lint 错误

Ref: #20, #19

## User Story 作为用户,运行 `json-cas gc` 时,所有 variable 引用的 CAS 数据自动保留不被清理。没有 variable 引用的孤立数据被清除。 ## 前置条件 Phase 1 + Phase 2 已完成。 ## 测试步骤 ### 准备 - [ ] **Step 0: 创建有引用和无引用的数据** ```bash json-cas bootstrap json-cas schema put '{"type":"object","properties":{"name":{"type":"string"}}}' # → SCHEMA_HASH json-cas put <SCHEMA_HASH> '{"name":"referenced"}' # → HASH_REF json-cas put <SCHEMA_HASH> '{"name":"orphan"}' # → HASH_ORPHAN json-cas var create --scope test/ --value <HASH_REF> # → VAR_1 (引用 HASH_REF) ``` ### GC 验证 - [ ] **Step 1: gc 保留 variable 引用的数据** ```bash json-cas gc json-cas cas get <HASH_REF> ``` **预期:** HASH_REF 仍然存在,返回正常节点数据 - [ ] **Step 2: gc 清除孤立数据** ```bash json-cas cas get <HASH_ORPHAN> ``` **预期:** HASH_ORPHAN 已被 gc 清除,返回 not found - [ ] **Step 3: 删除 variable 后再 gc** ```bash json-cas var delete <VAR_1> json-cas gc json-cas cas get <HASH_REF> ``` **预期:** HASH_REF 不再有 variable 引用,被 gc 清除 ### Schema 也被保留 - [ ] **Step 4: variable 引用的节点的 schema 不被 gc** ```bash json-cas var create --scope test/ --value <HASH_REF_2> json-cas gc json-cas cas get <SCHEMA_HASH> ``` **预期:** schema 节点作为被引用节点的类型,在 walk 时被遍历到,不被清除 ## 验证完成标准 ✅ 所有 checkbox 打勾 ✅ `bun test` 通过 ✅ `bun run check` 无 lint 错误 Ref: #20, #19
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/json-cas#23