@@ -4768,6 +4768,94 @@ TEST(MetaServiceTest, UpdateDeleteBitmap) {
4768
4768
ASSERT_EQ (get_delete_bitmap_res.versions (100 ), 3 );
4769
4769
ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps (100 ), " abcd4" );
4770
4770
}
4771
+
4772
+ // update existing delete bitmap key
4773
+ {
4774
+ // first update new key
4775
+ UpdateDeleteBitmapRequest update_delete_bitmap_req;
4776
+ UpdateDeleteBitmapResponse update_delete_bitmap_res;
4777
+ update_delete_bitmap_req.set_cloud_unique_id (" test_cloud_unique_id" );
4778
+ update_delete_bitmap_req.set_table_id (112 );
4779
+ update_delete_bitmap_req.set_partition_id (123 );
4780
+ update_delete_bitmap_req.set_lock_id (888 );
4781
+ update_delete_bitmap_req.set_initiator (-1 );
4782
+ update_delete_bitmap_req.set_tablet_id (333 );
4783
+ std::string large_value = generate_random_string (300 * 1000 * 3 );
4784
+ update_delete_bitmap_req.add_rowset_ids (" 456" );
4785
+ update_delete_bitmap_req.add_segment_ids (0 );
4786
+ update_delete_bitmap_req.add_versions (2 );
4787
+ update_delete_bitmap_req.add_segment_delete_bitmaps (large_value);
4788
+ meta_service->update_delete_bitmap (
4789
+ reinterpret_cast <google::protobuf::RpcController*>(&cntl),
4790
+ &update_delete_bitmap_req, &update_delete_bitmap_res, nullptr );
4791
+ ASSERT_EQ (update_delete_bitmap_res.status ().code (), MetaServiceCode::OK);
4792
+
4793
+ GetDeleteBitmapRequest get_delete_bitmap_req;
4794
+ GetDeleteBitmapResponse get_delete_bitmap_res;
4795
+ get_delete_bitmap_req.set_cloud_unique_id (" test_cloud_unique_id" );
4796
+ get_delete_bitmap_req.set_tablet_id (333 );
4797
+
4798
+ get_delete_bitmap_req.add_rowset_ids (" 456" );
4799
+ get_delete_bitmap_req.add_begin_versions (2 );
4800
+ get_delete_bitmap_req.add_end_versions (2 );
4801
+
4802
+ meta_service->get_delete_bitmap (reinterpret_cast <google::protobuf::RpcController*>(&cntl),
4803
+ &get_delete_bitmap_req, &get_delete_bitmap_res, nullptr );
4804
+ ASSERT_EQ (get_delete_bitmap_res.status ().code (), MetaServiceCode::OK);
4805
+ ASSERT_EQ (get_delete_bitmap_res.rowset_ids_size (), 1 );
4806
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps_size (), 1 );
4807
+ ASSERT_EQ (get_delete_bitmap_res.versions_size (), 1 );
4808
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps_size (), 1 );
4809
+
4810
+ ASSERT_EQ (get_delete_bitmap_res.rowset_ids (0 ), " 456" );
4811
+ ASSERT_EQ (get_delete_bitmap_res.segment_ids (0 ), 0 );
4812
+ ASSERT_EQ (get_delete_bitmap_res.versions (0 ), 2 );
4813
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps (0 ), large_value);
4814
+ }
4815
+
4816
+ {
4817
+ // compaction update delete bitmap without lock
4818
+ UpdateDeleteBitmapRequest update_delete_bitmap_req;
4819
+ UpdateDeleteBitmapResponse update_delete_bitmap_res;
4820
+ update_delete_bitmap_req.set_cloud_unique_id (" test_cloud_unique_id" );
4821
+ update_delete_bitmap_req.set_table_id (112 );
4822
+ update_delete_bitmap_req.set_partition_id (123 );
4823
+ update_delete_bitmap_req.set_unlock (true );
4824
+ update_delete_bitmap_req.set_lock_id (-3 );
4825
+ update_delete_bitmap_req.set_initiator (-1 );
4826
+ update_delete_bitmap_req.set_tablet_id (333 );
4827
+ std::string large_value = generate_random_string (300 * 1000 );
4828
+ update_delete_bitmap_req.add_rowset_ids (" 456" );
4829
+ update_delete_bitmap_req.add_segment_ids (0 );
4830
+ update_delete_bitmap_req.add_versions (2 );
4831
+ update_delete_bitmap_req.add_segment_delete_bitmaps (large_value);
4832
+ meta_service->update_delete_bitmap (
4833
+ reinterpret_cast <google::protobuf::RpcController*>(&cntl),
4834
+ &update_delete_bitmap_req, &update_delete_bitmap_res, nullptr );
4835
+ ASSERT_EQ (update_delete_bitmap_res.status ().code (), MetaServiceCode::OK);
4836
+
4837
+ GetDeleteBitmapRequest get_delete_bitmap_req;
4838
+ GetDeleteBitmapResponse get_delete_bitmap_res;
4839
+ get_delete_bitmap_req.set_cloud_unique_id (" test_cloud_unique_id" );
4840
+ get_delete_bitmap_req.set_tablet_id (333 );
4841
+
4842
+ get_delete_bitmap_req.add_rowset_ids (" 456" );
4843
+ get_delete_bitmap_req.add_begin_versions (2 );
4844
+ get_delete_bitmap_req.add_end_versions (2 );
4845
+
4846
+ meta_service->get_delete_bitmap (reinterpret_cast <google::protobuf::RpcController*>(&cntl),
4847
+ &get_delete_bitmap_req, &get_delete_bitmap_res, nullptr );
4848
+ ASSERT_EQ (get_delete_bitmap_res.status ().code (), MetaServiceCode::OK);
4849
+ ASSERT_EQ (get_delete_bitmap_res.rowset_ids_size (), 1 );
4850
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps_size (), 1 );
4851
+ ASSERT_EQ (get_delete_bitmap_res.versions_size (), 1 );
4852
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps_size (), 1 );
4853
+
4854
+ ASSERT_EQ (get_delete_bitmap_res.rowset_ids (0 ), " 456" );
4855
+ ASSERT_EQ (get_delete_bitmap_res.segment_ids (0 ), 0 );
4856
+ ASSERT_EQ (get_delete_bitmap_res.versions (0 ), 2 );
4857
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps (0 ), large_value);
4858
+ }
4771
4859
}
4772
4860
4773
4861
TEST (MetaServiceTest, UpdateDeleteBitmapWithException) {
0 commit comments