diff --git a/src/t_list.c b/src/t_list.c index 7b95c326346..45472fb0070 100644 --- a/src/t_list.c +++ b/src/t_list.c @@ -559,9 +559,9 @@ void popGenericCommand(client *c, int where) { quicklistDelRange(o->ptr,rangestart,rangelen); #ifdef ENABLE_SWAP if (where == LIST_HEAD) - swapListMetaDelRange(c->db,c->argv[1],-rangelen,0); + swapListMetaDelRange(c->db,c->argv[1],rangelen,0); else - swapListMetaDelRange(c->db,c->argv[1],0,-rangelen); + swapListMetaDelRange(c->db,c->argv[1],0,rangelen); listElementsRemoved(c,c->argv[1],where,o,om,rangelen); #else listElementsRemoved(c,c->argv[1],where,o,rangelen); diff --git a/tests/swap/ported/unit/type/list.tcl b/tests/swap/ported/unit/type/list.tcl index ecb0fa8d926..c1a7074a70a 100644 --- a/tests/swap/ported/unit/type/list.tcl +++ b/tests/swap/ported/unit/type/list.tcl @@ -43,4 +43,21 @@ start_server { r lpush srclist element $watching_client read } {somevalue} + + test "check meta len - LPOP" { + r del list1{t} + for {set i 0} {$i < 100} {incr i} { + set entry "entry_$i" + r rpush list1{t} $entry + } + assert_equal 100 [r llen list1{t}] + + r swap.evict list1{t} + r LPOP list1{t} 1 + assert_equal 99 [r llen list1{t}] + + r swap.evict list1{t} + r RPOP list1{t} 2 + assert_equal 97 [r llen list1{t}] + } }