Expired keys are served during CLIENT PAUSE: GET, EXISTS and DBSIZE return stale data
Author: vyavdoshenkoCreated Sep 9, 2026Updated Sep 9, 2026
Labelsbug
Found while running the Valkey TCL suite (unit/pause and unit/expire) against Dragonfly. While a write pause is active, passive expiry is disabled and read commands return keys that are already past their expiry, so GET returns the value, EXISTS returns 1 and DBSIZE counts the key.
Reproduce (issue the reads from a second connection so they are not themselves paused):
redis-cli set ek v px 100
redis-cli client pause 3000 write
sleep 0.4 # ek expired about 300 ms ago
redis-cli get ek # v (should be nil)
redis-cli exists ek # 1 (should be 0)
redis-cli dbsize # 1 (should be 0)Source: dragonflydb/dragonfly