@startuml actor User as user participant SegmentWriter as segWriter participant DeltaCacheWriter as dcWriter participant Segment as segment user -> segWriter: put(key,value) alt delta cache writer is closed 'open delta cache writer' segWriter -> dcWriter : open delta cache writer activate dcWriter dcWriter --> segWriter: done deactivate dcWriter end 'put' segWriter -> dcWriter : put(key,value) activate dcWriter dcWriter --> segWriter: done deactivate dcWriter 'isThereSpace' segWriter -> dcWriter: get number of written keys activate dcWriter dcWriter --> segWriter: return result 'is there more space in delta cache?' deactivate dcWriter alt there si no more space in delta cache 'close' segWriter -> dcWriter: close delta cache writer activate dcWriter dcWriter --> segWriter: done deactivate dcWriter 'compact' segWriter -> segment: compact segment activate segment note right There are some other operations end note segment -> dcWriter: evict all, delete files dcWriter --> segment segment --> segWriter: done deactivate segment end segWriter --> user @enduml