Skip to content

Commit 27e9bef

Browse files
committed
fix(storage): address DEL review feedback
1 parent c100eef commit 27e9bef

2 files changed

Lines changed: 56 additions & 3 deletions

File tree

src/storage/src/redis_strings.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2052,7 +2052,11 @@ impl Redis {
20522052
let mut batch = self.create_batch()?;
20532053
batch.delete(ColumnFamilyIndex::MetaCF, &encoded_meta_key)?;
20542054
batch.commit()?;
2055-
self.update_specific_key_statistics(DataType::String, &key_str, 1)?;
2055+
if let Err(error) =
2056+
self.update_specific_key_statistics(DataType::String, &key_str, 1)
2057+
{
2058+
log::warn!("failed to update key statistics for {key_str}: {error:?}");
2059+
}
20562060
}
20572061
DataType::Hash | DataType::Set | DataType::ZSet => {
20582062
let mut parsed = ParsedBaseMetaValue::new(&value[..])?;
@@ -2071,7 +2075,10 @@ impl Redis {
20712075
parsed.encoded(),
20722076
)?;
20732077
batch.commit()?;
2074-
self.update_specific_key_statistics(data_type, &key_str, count)?;
2078+
if let Err(error) = self.update_specific_key_statistics(data_type, &key_str, count)
2079+
{
2080+
log::warn!("failed to update key statistics for {key_str}: {error:?}");
2081+
}
20752082
}
20762083
DataType::List => {
20772084
let mut parsed = ParsedListsMetaValue::new(&value[..])?;
@@ -2085,7 +2092,11 @@ impl Redis {
20852092
let mut batch = self.create_batch()?;
20862093
batch.put(ColumnFamilyIndex::MetaCF, &encoded_meta_key, parsed.value())?;
20872094
batch.commit()?;
2088-
self.update_specific_key_statistics(DataType::List, &key_str, count)?;
2095+
if let Err(error) =
2096+
self.update_specific_key_statistics(DataType::List, &key_str, count)
2097+
{
2098+
log::warn!("failed to update key statistics for {key_str}: {error:?}");
2099+
}
20892100
}
20902101
_ => return Ok(false),
20912102
}

src/storage/tests/ttl_test.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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]
384425
async 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

Comments
 (0)