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