[ 
https://issues.apache.org/jira/browse/HDDS-16433?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Siyao Meng reassigned HDDS-16433:
---------------------------------

    Assignee: Siyao Meng

> Formal verification for Ozone DataNode container replication, EC 
> reconstruction, and disk balancer with TLA+
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: HDDS-16433
>                 URL: https://issues.apache.org/jira/browse/HDDS-16433
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Siyao Meng
>            Assignee: Siyao Meng
>            Priority: Major
>
> Use TLA+ (via the Specula pipeline) to model and verify DataNode side 
> container replication: EC reconstruction and scrub interaction, the container 
> state machine, block deletion, and DiskBalancer container moves, across crash 
> and restart reconciliation. Model check the specification and validate real 
> DataNode traces against it. Bugs found by this effort are linked under this 
> issue.
> h3. Run environment
> {noformat}
> Ozone commit: 9fbf9ee0cb1bd2f5f5d437b6719ebbe5309351fb
> Specula:      v1.1.0 (commit c6aa3dfa)
> Agent/model:  claude-code, Claude Opus 4.8 (1M context)
> {noformat}
> h3. Coverage
> ||Target||Effort||Guidance||Result||
> |dn-ec-reconstruction|high|{{campaigns/ozone-9fbf9ee/targets/022-dn-ec-reconstruction/.prompt-extra.md}}|2
>  reproduced High, 1 masked Low|
> |dn-disk-balancer|medium|{{campaigns/ozone-9fbf9ee/targets/021-dn-disk-balancer/.prompt-extra.md}}|2
>  reproduced High, 1 masked Medium|
> |dn-block-deletion|medium|{{campaigns/ozone-9fbf9ee/targets/017-dn-block-deletion/.prompt-extra.md}}|1
>  masked Medium|
> |dn-container-state-machine|medium|{{campaigns/ozone-9fbf9ee/targets/020-dn-container-state-machine/.prompt-extra.md}}|1
>  env-limited High|
> h3. Reproduce
> {code:none}
> specula run --agent=claude-code --effort=<effort> --keep-original 
> --max-parallel=2 \
>   --enable-reviews --confirm-debate --tlc-memory-limit=28G 
> --tlc-worker-limit=8 \
>   "<target>|apache/ozone|Java|Use the target-specific .prompt-extra.md"
> {code}
> h3. Bugs (link via "Testing discovered")
> * (REPRODUCED, High) HDDS-16455: a stale scrub task silently demotes a 
> successfully CLOSED reconstructed EC replica to UNHEALTHY with no ICR, so on 
> the next full container report SCM deletes and re reconstructs a valid 
> replica. [dn-ec-reconstruction MC-1]
> * (REPRODUCED, High) HDDS-16456: a non atomic timeout re arm on the write RPC 
> tail resurrects a recoveringContainerMap entry for a container that 
> concurrently moved to CLOSING or CLOSED, and the scrub then marks that valid 
> replica UNHEALTHY. [dn-ec-reconstruction MC-2]
> * (REPRODUCED, High) HDDS-16457: an EC replica move plus a mid move crash and 
> restart leaves a durable two copy inconsistency (CLOSED source plus UNHEALTHY 
> destination) that no DataNode local mechanism reclaims. [dn-disk-balancer 
> MC-1]
> * (REPRODUCED, High) HDDS-16458: after a DiskBalancer EC move a crash before 
> the source is durably marked for delete drops the volatile pending deletion 
> queue, and restart reconciliation leaves the extra copy. [dn-disk-balancer 
> MC-2]
> * (ENV_LIMITED, High) HDDS-16459: a non atomic snapshot of (lastAppliedIndex, 
> container2BCSIDMap) can mark a healthy container UNHEALTHY after a crash that 
> loses the unsynced container WAL while the Ratis snapshot survives, driving 
> unnecessary re replication, env-limited to crash with selective WAL loss. 
> [dn-container-state-machine CR-2]
> * (MASKED, Low) HDDS-16460: the container delete path leaves a zombie 
> recoveringContainerMap entry, masked at HEAD by the scrub null guard, non 
> reused container IDs, and auto create rejection, a hygiene gap. 
> [dn-ec-reconstruction MC-3]
> * (MASKED, Medium) HDDS-16461: an asymmetric decrement leaves the persisted 
> pendingDeleteBlockCount inflated on a drained container, masked by 
> resetPendingDeleteBlockCount on restart, surfacing only as one wasted 
> deletion pass. [dn-block-deletion MC-1]
> Generated with Specula (Claude Opus 4.8).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to