milvus/internal/datanode
congqixia eaabe0293b
fix: Update segment compactTo when compactTo segment is compacted (#28755)
Related to #28736 #28748
See also #27675
Previous PR: #28646

This PR fixes `SegmentNotFound` issue when compaction happens multiple
times and the buffer of first generation segment is sync due to stale
policy

Now the `CompactSegments` API of metacache shall update the compactTo
field of segmentInfo if the compactTo segment is also compacted to keep
the bloodline clean

Also, add the `CompactedSegment` SyncPolicy to sync the compacted
segment asap to keep metacache clean

Now the `SyncPolicy` is an interface instead of a function type so that
when it selects some segments to sync, we colud log the reason and
target segment

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2023-11-27 19:48:26 +08:00
..
allocator Replace manual composed grpc call with Broker methods (#27676) 2023-10-13 09:55:34 +08:00
broker enhance:Remove msgbase unnecessary assignments (#28511) 2023-11-24 15:02:39 +08:00
iterators Add iterators (#27643) 2023-10-18 19:34:08 +08:00
metacache fix: Update segment compactTo when compactTo segment is compacted (#28755) 2023-11-27 19:48:26 +08:00
syncmgr fix: Skip statslog generation flushing empty L0 segment (#28733) 2023-11-25 15:10:25 +08:00
writebuffer fix: Update segment compactTo when compactTo segment is compacted (#28755) 2023-11-27 19:48:26 +08:00
binlog_io_test.go Use writebuffer, sync manager refactory in datanode (#28320) 2023-11-15 15:24:18 +08:00
binlog_io.go Use writebuffer, sync manager refactory in datanode (#28320) 2023-11-15 15:24:18 +08:00
cache_test.go Make duplicate flush recalls success and other logic update (#16755) 2022-05-06 17:49:51 +08:00
cache.go Use typeutil.ConcurrentMap instead of sync.Map (#25846) 2023-07-24 10:23:01 +08:00
channel_manager_test.go [skip e2e] Fix unstable ut (#27618) 2023-10-11 07:21:32 +08:00
channel_manager.go Refine state check (#27541) 2023-10-11 21:01:35 +08:00
compaction_executor_test.go Enable getting multiple segments in plan result (#28350) 2023-11-14 15:56:19 +08:00
compaction_executor.go Enable getting multiple segments in plan result (#28350) 2023-11-14 15:56:19 +08:00
compactor_test.go fix: Add length check for storage.NewPrimaryKeyStats (#28576) 2023-11-21 10:28:21 +08:00
compactor.go fix: Add length check for storage.NewPrimaryKeyStats (#28576) 2023-11-21 10:28:21 +08:00
data_node_test.go Replace manual composed grpc call with Broker methods (#27676) 2023-10-13 09:55:34 +08:00
data_node.go enhance: Add logs for each step during service initialization (#28624) 2023-11-27 16:30:26 +08:00
data_sync_service_test.go feat: integrate storage v2 into the write path (#28440) 2023-11-23 17:26:24 +08:00
data_sync_service.go feat: integrate storage v2 into the write path (#28440) 2023-11-23 17:26:24 +08:00
event_manager_test.go Refine datanode Timetick Sender (#28393) 2023-11-13 21:46:20 +08:00
event_manager.go Reduce the goroutine in flowgraph to 2 (#28233) 2023-11-13 10:50:17 +08:00
flow_graph_dd_node_test.go Format the code (#27275) 2023-09-21 09:45:27 +08:00
flow_graph_dd_node.go Reduce the goroutine in flowgraph to 2 (#28233) 2023-11-13 10:50:17 +08:00
flow_graph_dmstream_input_node_test.go Support to replicate the mq message (#27240) 2023-10-20 14:26:09 +08:00
flow_graph_dmstream_input_node.go Enhance newDataSyncService (#27277) 2023-09-27 11:07:25 +08:00
flow_graph_manager_test.go Use writebuffer, sync manager refactory in datanode (#28320) 2023-11-15 15:24:18 +08:00
flow_graph_manager.go Use writebuffer, sync manager refactory in datanode (#28320) 2023-11-15 15:24:18 +08:00
flow_graph_message_test.go Format the code (#27275) 2023-09-21 09:45:27 +08:00
flow_graph_message.go Format the code (#27275) 2023-09-21 09:45:27 +08:00
flow_graph_node.go Make flow graph retry longer (#24355) 2023-05-25 09:53:30 +08:00
flow_graph_time_tick_node.go enhance: Remove commented code and fix naming issue (#28450) 2023-11-16 00:22:20 +08:00
flow_graph_time_ticker.go enhance: create goroutine only once (#28594) 2023-11-22 10:26:28 +08:00
flow_graph_write_node.go enhance: Remove commented code and fix naming issue (#28450) 2023-11-16 00:22:20 +08:00
flush_task_counter_test.go Fix flushManager.isFull is too slow (#28141) 2023-11-03 14:42:17 +08:00
flush_task_counter.go Fix flushManager.isFull is too slow (#28141) 2023-11-03 14:42:17 +08:00
io_pool_test.go Fix copylocks linter errors (#26217) 2023-08-08 20:41:15 +08:00
io_pool.go Fix getting incorrect CPU num (#28146) 2023-11-06 06:02:16 +08:00
meta_service_test.go Replace manual composed grpc call with Broker methods (#27676) 2023-10-13 09:55:34 +08:00
meta_service.go Replace manual composed grpc call with Broker methods (#27676) 2023-10-13 09:55:34 +08:00
meta_util.go Use go-api/v2 for milvus-proto (#24770) 2023-06-09 01:28:37 +08:00
metrics_info.go Refine state check (#27541) 2023-10-11 21:01:35 +08:00
mock_test.go fix: Add length check for storage.NewPrimaryKeyStats (#28576) 2023-11-21 10:28:21 +08:00
OWNERS [skip ci]Update OWNERS files (#11898) 2021-11-16 15:41:11 +08:00
rate_collector_test.go Move some modules from internal to public package (#22572) 2023-04-06 19:14:32 +08:00
rate_collector.go Format the code (#27275) 2023-09-21 09:45:27 +08:00
README.md [skip ci]Change uppercase of MinIO (#9539) 2021-10-09 11:22:58 +08:00
services_test.go enhance: Add back clean compacted segment info logic (#28646) 2023-11-24 15:38:25 +08:00
services.go enhance:Remove msgbase unnecessary assignments (#28511) 2023-11-24 15:02:39 +08:00
stats_updater_test.go Use writebuffer, sync manager refactory in datanode (#28320) 2023-11-15 15:24:18 +08:00
stats_updater.go enhance:Remove msgbase unnecessary assignments (#28511) 2023-11-24 15:02:39 +08:00
timetick_sender_test.go Refine datanode Timetick Sender (#28393) 2023-11-13 21:46:20 +08:00
timetick_sender.go Refine datanode Timetick Sender (#28393) 2023-11-13 21:46:20 +08:00
util.go Format the code (#27275) 2023-09-21 09:45:27 +08:00

Data Node

DataNode is the component to write insert and delete messages into persistent blob storage, for example MinIO or S3.

Dependency

  • KV store: a kv store that persists messages into blob storage.
  • Message stream: receive messages and publish imformation
  • Root Coordinator: get the latest unique IDs.
  • Data Coordinator: get the flush information and which message stream to subscribe.