Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions tests/cluster/tests/17-diskless-load-swapdb.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,12 @@ test "Main db not affected when fail to diskless load" {
set rd [redis_deferring_client redis $master_id]
for {set j 0} {$j < $num} {incr j} {
$rd set $j $value
}
for {set j 0} {$j < $num} {incr j} {
$rd read

if {($j + 1) % 500 == 0} {
for {set i 0} {$i < 500} {incr i} {
$rd read
}
}
}

# Start the replica again
Expand Down
23 changes: 21 additions & 2 deletions tests/helpers/gen_write_load.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,18 @@ proc gen_write_load {host port seconds tls {key ""} {size 0} {sleep 0}} {
set start_time [clock seconds]
set r [redis $host $port 1 $tls]
$r client setname LOAD_HANDLER
catch {$r select 9} ;# select 9 will fail in cluster mode
$r read
catch {
$r select 9
$r read
} ;# select 9 will fail in cluster mode

# fixed size value
if {$size != 0} {
set value [string repeat "x" $size]
}

set count 0
while 1 {
if {$size == 0} {
set value [expr rand()]
Expand All @@ -39,13 +44,27 @@ proc gen_write_load {host port seconds tls {key ""} {size 0} {sleep 0}} {
} else {
$r set $key $value
}

incr count
if {$count % 500 == 0} {
for {set i 0} {$i < 500} {incr i} {
$r read
}
}

if {[clock seconds]-$start_time > $seconds} {
exit 0
break
}
if {$sleep ne 0} {
after $sleep
}
}

# Read remaining replies
for {set i 0} {$i < $count} {incr i} {
$r read
}
exit 0
}

gen_write_load [lindex $argv 0] [lindex $argv 1] [lindex $argv 2] [lindex $argv 3] [lindex $argv 4] [lindex $argv 5] [lindex $argv 6]
1 change: 0 additions & 1 deletion tests/integration/replication.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -1888,7 +1888,6 @@ foreach type {script function} {
$master config set repl-diskless-sync-delay 0
# Set small client output buffer limit to trigger fullsync quickly
$master config set client-output-buffer-limit "replica 1k 1k 0"
$replica config set repl-diskless-load yes
$replica config set busy-reply-threshold 1 ;# script timeout in 1 ms

# Load function
Expand Down
31 changes: 23 additions & 8 deletions tests/unit/memefficiency.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,12 @@ proc test_memory_efficiency {range} {
incr written [string length $key]
incr written [string length $val]
incr written 2 ;# A separator is the minimum to store key-value data.
}
for {set j 0} {$j < 10000} {incr j} {
$rd read ; # Discard replies

if {($j + 1) % 500 == 0} {
for {set i 0} {$i < 500} {incr i} {
$rd read ; # Discard replies
}
}
}

set current_mem [s used_memory]
Expand Down Expand Up @@ -352,7 +355,7 @@ run_solo {defrag} {
# create big keys with 10k items
# Use batching to avoid TCP deadlock
set rd [redis_deferring_client]
set batch_size 1000
set batch_size 100
for {set j 0} {$j < 10000} {incr j} {
$rd hset bighash $j [concat "asdfasdfasdf" $j]
$rd lpush biglist [concat "asdfasdfasdf" $j]
Expand Down Expand Up @@ -602,15 +605,27 @@ run_solo {defrag} {
# Populate memory with interleaving IDMP stream-key pattern of same size
set dummy_iid "[string repeat x 400]"
set rd [redis_deferring_client]

# Use batching to avoid TCP deadlock
set batch_size 1000
for {set j 0} {$j < $n} {incr j} {
set producer_id "producer[expr {$j % 10}]"
set iid "$dummy_iid[format "%06d" $j]"
$rd xadd idmpstream IDMP $producer_id $iid * field value
$rd set k$j $iid

if {($j + 1) % $batch_size == 0} {
for {set i 0} {$i < [expr {$batch_size * 2}]} {incr i} {
$rd read
}
}
}
for {set j 0} {$j < [expr {$n * 2}]} {incr j} {
$rd read ; # Discard replies
# Read remaining responses
set remaining [expr {($n % $batch_size) * 2}]
for {set j 0} {$j < $remaining} {incr j} {
$rd read
}

after 120 ;# serverCron only updates the info once in 100ms
if {$::verbose} {
puts "used [s allocator_allocated]"
Expand All @@ -620,7 +635,7 @@ run_solo {defrag} {
}
assert_lessthan [s allocator_frag_ratio] 1.05

# Verify IDMP structures were created
# Verify IDMP structures were created
set idmp_info [r xinfo stream idmpstream full]
set num_producers [dict get $idmp_info pids-tracked]
set num_entries [dict get $idmp_info iids-tracked]
Expand Down Expand Up @@ -925,7 +940,7 @@ run_solo {defrag} {
$rd lpush biglist2 $val

incr count
discard_replies_every $rd $count 10000 20000
discard_replies_every $rd $count 1000 2000
}

# create some fragmentation
Expand Down
17 changes: 16 additions & 1 deletion tests/unit/type/set.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -1026,7 +1026,22 @@ foreach type {single multiple single_multiple} {
break
}
}
r srem $myset {*}$members
r deferred 1
set count 0
foreach m $members {
r srem $myset $m
incr count
if {$count == 500} {
for {set i 0} {$i < 500} {incr i} {
r read
}
set count 0
}
}
for {set i 0} {$i < $count} {incr i} {
r read
}
r deferred 0
}

proc verify_rehashing_completed_key {myset table_size keys} {
Expand Down
Loading