...
The main challenge of this approach is, if the application submits writes against the same object in multiple RPC, then there will be multiple flattened buffers for the same object, which conflicts with the initial goal of the design: the entire object can be loaded to DRAM by one SSD read. So the flattening service should be able to find and merge those flattened buffers of the same object before flushing to DT-blob. Client side flattening It also means that WAL can only be reclaimed after flattening service wrote merged buffers to DT-blob, this may require some significant changes to checkpointing and flattening services.
Giving the complexity and constraint of client side flattening, it can be an optional feature of this project.