This is an automated email from the ASF dual-hosted git repository.

zuston pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git


The following commit(s) were added to refs/heads/master by this push:
     new d72a483e1 [#1308] improvement(rust): detect whether data has been 
purged in UT (#1323)
d72a483e1 is described below

commit d72a483e1a480c2064feafec04ed874fe18ee126
Author: wenlongbrother <[email protected]>
AuthorDate: Wed Nov 22 15:23:52 2023 +0800

    [#1308] improvement(rust): detect whether data has been purged in UT (#1323)
    
    ### What changes were proposed in this pull request?
    
    add code to improve purge unit test to detect whether arc reference is 0
    
    ### Why are the changes needed?
    
    Fix: #1308
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    1. UT
    
    ---------
    
    Co-authored-by: 蒋文龙 <[email protected]>
---
 rust/experimental/server/src/store/memory.rs | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/rust/experimental/server/src/store/memory.rs 
b/rust/experimental/server/src/store/memory.rs
index 8894dbf2c..c7b0de94d 100644
--- a/rust/experimental/server/src/store/memory.rs
+++ b/rust/experimental/server/src/store/memory.rs
@@ -1084,8 +1084,22 @@ mod test {
         let data = runtime.wait(store.get(reading_ctx.clone())).expect("");
         assert_eq!(1, data.from_memory().shuffle_data_block_segments.len());
 
+        // get weak reference to ensure purge can successfully free memory
+        let weak_ref_before = store
+            .state
+            .get(&uid)
+            .map(|entry| Arc::downgrade(&entry.value()));
+        assert!(
+            weak_ref_before.is_some(),
+            "Failed to obtain weak reference before purge"
+        );
+
         // purge
         runtime.wait(store.purge(app_id.to_string())).expect("");
+        assert!(
+            weak_ref_before.clone().unwrap().upgrade().is_none(),
+            "Arc should not exist after purge"
+        );
         let snapshot = runtime.wait(store.budget.snapshot());
         assert_eq!(snapshot.used, 0);
         // the remaining allocated will be removed.

Reply via email to