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

István Fajth updated HDDS-15169:
--------------------------------
    Component/s: Ozone Client

> Simplify and harden Ozone client write paths (DataStream, Ratis, EC)
> --------------------------------------------------------------------
>
>                 Key: HDDS-15169
>                 URL: https://issues.apache.org/jira/browse/HDDS-15169
>             Project: Apache Ozone
>          Issue Type: Epic
>          Components: Ozone Client
>            Reporter: István Fajth
>            Assignee: István Fajth
>            Priority: Major
>
> The Ozone client write paths — DataStream, Ratis, and EC — share a
> four-layer architecture:
>   KeyStream → EntryPool → EntryWrapper → BlockStream
> The EntryWrapper layer (BlockOutputStreamEntry, ECBlockOutputStreamEntry,
> BlockDataStreamOutputEntry) adds lazy initialization and type-unsafe
> downcasting but provides little abstraction value. Nearly every
> non-trivial method in these wrappers casts back to the concrete block
> stream type. This indirection makes the code harder to follow and reason
> about, and obscures the concurrency model at each layer boundary.
> There are also several concurrency-related edge cases across the write
> paths — exception handling gaps, unsynchronized check-then-act
> sequences, and blocking calls without timeouts — that are difficult to
> spot and test in the current structure.
> Plan:
> This JIRA tracks a phased approach to simplify the write paths and fix
> the known edge cases:
>   DataStream path:
>     Add mock-based unit tests, fix the hsync exception handling,
>     simplify internal state management, fix commit-watcher races,
>     inline the StreamCommitWatcher, remove the entry wrapper, and
>     bound the close retry logic.
>   Test coverage for Ratis and EC:
>     Extend the mock-based unit test approach to the Ratis and EC paths,
>     providing fast deterministic coverage without MiniOzoneCluster.
>   Ratis and EC structural improvements:
>     Remove the entry wrapper classes from the Ratis and EC paths,
>     unify the entry pool classes behind a pluggable factory, and
>     add timeouts to the EC blocking calls.



--
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