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