@@ -380,6 +380,47 @@ async fn test_del_composite_recreate_hides_old_members() {
380380 storage. shutdown ( ) . await ;
381381}
382382
383+ #[ tokio:: test]
384+ async fn test_del_set_recreate_hides_old_members ( ) {
385+ let db_path = unique_test_db_path ( ) ;
386+ let mut storage = Storage :: new ( 1 , 0 ) ;
387+ let options = Arc :: new ( StorageOptions :: default ( ) ) ;
388+ let _receiver = storage. open ( options, & db_path) . unwrap ( ) ;
389+
390+ let key = b"del_recreate_set" ;
391+ assert_eq ! ( storage. sadd( key, & [ b"old-member" ] ) . unwrap( ) , 1 ) ;
392+ assert_eq ! ( storage. del( & [ key. to_vec( ) ] ) . unwrap( ) , 1 ) ;
393+ assert_eq ! ( storage. sadd( key, & [ b"new-member" ] ) . unwrap( ) , 1 ) ;
394+
395+ assert_eq ! (
396+ storage. smembers( key) . unwrap( ) ,
397+ vec![ "new-member" . to_string( ) ]
398+ ) ;
399+ assert ! ( !storage. sismember( key, b"old-member" ) . unwrap( ) ) ;
400+
401+ storage. shutdown ( ) . await ;
402+ }
403+
404+ #[ tokio:: test]
405+ async fn test_del_list_recreate_hides_old_members ( ) {
406+ let db_path = unique_test_db_path ( ) ;
407+ let mut storage = Storage :: new ( 1 , 0 ) ;
408+ let options = Arc :: new ( StorageOptions :: default ( ) ) ;
409+ let _receiver = storage. open ( options, & db_path) . unwrap ( ) ;
410+
411+ let key = b"del_recreate_list" ;
412+ assert_eq ! ( storage. rpush( key, & [ b"old-member" . to_vec( ) ] ) . unwrap( ) , 1 ) ;
413+ assert_eq ! ( storage. del( & [ key. to_vec( ) ] ) . unwrap( ) , 1 ) ;
414+ assert_eq ! ( storage. rpush( key, & [ b"new-member" . to_vec( ) ] ) . unwrap( ) , 1 ) ;
415+
416+ assert_eq ! (
417+ storage. lrange( key, 0 , -1 ) . unwrap( ) ,
418+ vec![ b"new-member" . to_vec( ) ]
419+ ) ;
420+
421+ storage. shutdown ( ) . await ;
422+ }
423+
383424#[ tokio:: test]
384425async fn test_del_writes_composite_meta_tombstone_with_new_version ( ) {
385426 let db_path = unique_test_db_path ( ) ;
@@ -406,6 +447,7 @@ async fn test_del_writes_composite_meta_tombstone_with_new_version() {
406447 let tombstone = db. get_cf ( & meta_cf, & meta_key) . unwrap ( ) . unwrap ( ) ;
407448 let parsed = ParsedBaseMetaValue :: new ( & tombstone[ ..] ) . unwrap ( ) ;
408449 assert_eq ! ( parsed. count( ) , 0 ) ;
450+ assert_eq ! ( parsed. etime( ) , 0 ) ;
409451 assert ! ( parsed. version( ) > original_version) ;
410452 }
411453
0 commit comments