...
- Proxy receives a delete request, parse `expr` to get primary keys, then split into insert channels by primary keys (done)
- DataNode receives a delete request from the insert channel, save it in buffer, and write it into the delta channel
- when DataNode start up
- load all segments info from Minio into memory (done)
- update datanode flowgraph
- when DDNode receive DeleteMsg, save it into FlowGraphMsg structure, and send FlowGraphMsg to next node InsertBufferNode (done)
- when InsertBufferNode receive FlowGraphMsg, process InsertMsg in it, then wrapper DeleteMsg into another FlowGraphMsg and sent it to next node DeleteNode (done)
- when DeleteNode receive FlowGraphMsg, process DeleteMsg in it, save deleted ids and timestamps into delBuf (done)
- update DeleteNode to handle flushMsg
- add another flushChan for DeleteNode (doingdone)
- when DeleteNode receive flushMsg, save all data in delBuf into Minio
- when DataNode start up
deleted ids and timestamps are saved into two separated Minio file with name "/by-dev/deltalog/collectionID/partitionID/segmentID/xxx" (done)
- DataNode notifies IndexNode to building indexes
- finish
...