@@ -5034,6 +5034,77 @@ TEST(MetaServiceTest, DeleteBimapCommitTxnTest) {
5034
5034
}
5035
5035
}
5036
5036
5037
+ TEST (MetaServiceTest, GetDeleteBitmapWithRetryTest) {
5038
+ auto meta_service = get_meta_service ();
5039
+ SyncPoint::get_instance ()->enable_processing ();
5040
+ size_t index = 0 ;
5041
+ SyncPoint::get_instance ()->set_call_back (" get_delete_bitmap_code" , [&](auto && args) {
5042
+ LOG (INFO) << " GET_DELETE_BITMAP_CODE,index=" << index;
5043
+ if (++index < 2 ) {
5044
+ *doris::try_any_cast<MetaServiceCode*>(args[0 ]) = MetaServiceCode::KV_TXN_TOO_OLD;
5045
+ }
5046
+ });
5047
+
5048
+ // get delete bitmap update lock
5049
+ brpc::Controller cntl;
5050
+ GetDeleteBitmapUpdateLockRequest get_lock_req;
5051
+ GetDeleteBitmapUpdateLockResponse get_lock_res;
5052
+ get_lock_req.set_cloud_unique_id (" test_cloud_unique_id" );
5053
+ get_lock_req.set_table_id (100 );
5054
+ get_lock_req.add_partition_ids (123 );
5055
+ get_lock_req.set_expiration (5 );
5056
+ get_lock_req.set_lock_id (888 );
5057
+ get_lock_req.set_initiator (-1 );
5058
+ meta_service->get_delete_bitmap_update_lock (
5059
+ reinterpret_cast <::google::protobuf::RpcController*>(&cntl), &get_lock_req,
5060
+ &get_lock_res, nullptr );
5061
+ ASSERT_EQ (get_lock_res.status ().code (), MetaServiceCode::OK);
5062
+
5063
+ // first update new key
5064
+ UpdateDeleteBitmapRequest update_delete_bitmap_req;
5065
+ UpdateDeleteBitmapResponse update_delete_bitmap_res;
5066
+ update_delete_bitmap_req.set_cloud_unique_id (" test_cloud_unique_id" );
5067
+ update_delete_bitmap_req.set_table_id (100 );
5068
+ update_delete_bitmap_req.set_partition_id (123 );
5069
+ update_delete_bitmap_req.set_lock_id (888 );
5070
+ update_delete_bitmap_req.set_initiator (-1 );
5071
+ update_delete_bitmap_req.set_tablet_id (333 );
5072
+ std::string large_value = generate_random_string (300 * 1000 * 3 );
5073
+ update_delete_bitmap_req.add_rowset_ids (" 456" );
5074
+ update_delete_bitmap_req.add_segment_ids (0 );
5075
+ update_delete_bitmap_req.add_versions (2 );
5076
+ update_delete_bitmap_req.add_segment_delete_bitmaps (large_value);
5077
+ meta_service->update_delete_bitmap (reinterpret_cast <google::protobuf::RpcController*>(&cntl),
5078
+ &update_delete_bitmap_req, &update_delete_bitmap_res,
5079
+ nullptr );
5080
+ ASSERT_EQ (update_delete_bitmap_res.status ().code (), MetaServiceCode::OK);
5081
+
5082
+ GetDeleteBitmapRequest get_delete_bitmap_req;
5083
+ GetDeleteBitmapResponse get_delete_bitmap_res;
5084
+ get_delete_bitmap_req.set_cloud_unique_id (" test_cloud_unique_id" );
5085
+ get_delete_bitmap_req.set_tablet_id (333 );
5086
+
5087
+ get_delete_bitmap_req.add_rowset_ids (" 456" );
5088
+ get_delete_bitmap_req.add_begin_versions (2 );
5089
+ get_delete_bitmap_req.add_end_versions (2 );
5090
+
5091
+ meta_service->get_delete_bitmap (reinterpret_cast <google::protobuf::RpcController*>(&cntl),
5092
+ &get_delete_bitmap_req, &get_delete_bitmap_res, nullptr );
5093
+ ASSERT_EQ (get_delete_bitmap_res.status ().code (), MetaServiceCode::OK);
5094
+ ASSERT_EQ (get_delete_bitmap_res.rowset_ids_size (), 1 );
5095
+ ASSERT_EQ (get_delete_bitmap_res.segment_ids_size (), 1 );
5096
+ ASSERT_EQ (get_delete_bitmap_res.versions_size (), 1 );
5097
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps_size (), 1 );
5098
+
5099
+ ASSERT_EQ (get_delete_bitmap_res.rowset_ids (0 ), " 456" );
5100
+ ASSERT_EQ (get_delete_bitmap_res.segment_ids (0 ), 0 );
5101
+ ASSERT_EQ (get_delete_bitmap_res.versions (0 ), 2 );
5102
+ ASSERT_EQ (get_delete_bitmap_res.segment_delete_bitmaps (0 ), large_value);
5103
+
5104
+ SyncPoint::get_instance ()->disable_processing ();
5105
+ SyncPoint::get_instance ()->clear_all_call_backs ();
5106
+ }
5107
+
5037
5108
TEST (MetaServiceTest, GetVersion) {
5038
5109
auto service = get_meta_service ();
5039
5110
0 commit comments