Skip to content
Open
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
d923239
New command flag to indicate modification of first key only
JimB123 Mar 10, 2026
bf9312e
Client blocking mechanism for keys in use (forkless)
harrylin98 Apr 21, 2026
1edaa0e
Allocate metadata for each key to support forkless save operations
asagege Mar 12, 2026
5abfbcd
Fix crash when looking up blocked-inuse clients before initialization
harrylin98 Apr 24, 2026
8029720
Set pending_command flag consistently across all command execution pa…
harrylin98 May 27, 2026
d18b12a
Forkless, background iteration utility (forkless) (#3553)
JimB123 Jul 23, 2026
c5b3d16
bgIteration: unpause rehashing before flush (#4333)
JimB123 Aug 4, 2026
f1d5a83
Merge forkless-pre-threadsave into forkless (#4408)
nitaicaro Aug 14, 2026
0a50265
Forkless comments cleanup (#4450)
nitaicaro Aug 18, 2026
e094e32
Match BGSAVE CANCEL command documentation in bgsave.json to code (#4461)
nitaicaro Aug 18, 2026
3419a59
Schedule AOF rewrite during a forkless save instead of failing (#4462)
nitaicaro Aug 18, 2026
42f5521
Fix parameter name in bgiteration constructor doc blocks (#4463)
nitaicaro Aug 18, 2026
50ec936
For in-use blocking, check the client is in the list before removing …
nitaicaro Aug 18, 2026
0c67586
Update stale comment on BGSAVE CANCEL (#4479)
nitaicaro Aug 20, 2026
042af21
Flush and fsync the snapshot before publishing it (#4466)
nitaicaro Aug 20, 2026
9e26ccd
Only touch currentForklessSave on the main thread (#4467)
nitaicaro Aug 20, 2026
0989e39
Fix forkless save remaining time estimate (#4468)
nitaicaro Aug 20, 2026
17b2a5b
Preserve object metadata when an object is reallocated (#4475)
nitaicaro Aug 20, 2026
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
16 changes: 11 additions & 5 deletions .config/typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,16 @@ Collet = "Collet" # LZ4 author Yann Collet
nd = "nd"
Ba = "Ba"
Addd = "Addd"
forkless = "forkless"

[default.extend-identifiers]
dbe = "dbe"

[default]
extend-ignore-re = [
"SELECTed",
"WATCHed",
"[A-Z]{2,}", # Acronyms (all caps)
"[A-Z]{2,}ed", # SELECTed, WATCHed, etc.
"[A-Z]{2,}s", # SELECTs, etc.
]

[type.c]
Expand Down Expand Up @@ -59,6 +64,7 @@ seeked = "seeked"

[type.c.extend-words]
arange = "arange"
Forkless = "Forkless"
fo = "fo"
frst = "frst"
limite = "limite"
Expand All @@ -67,13 +73,13 @@ pn = "pn"
seeked = "seeked"
tre = "tre"

[type.cpp.extend-words]
fo = "fo"

[type.systemd.extend-words]
# systemd = .conf
ake = "ake"

[type.tcl.extend-words]
fo = "fo"
tre = "tre"

[type.cpp.extend-words]
fo = "fo"
2 changes: 2 additions & 0 deletions cmake/Modules/SourceFiles.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
# valkey-server source files
set(VALKEY_SERVER_SRCS
${CMAKE_SOURCE_DIR}/src/threads_mngr.c
${CMAKE_SOURCE_DIR}/src/forkless.c
${CMAKE_SOURCE_DIR}/src/adlist.c
${CMAKE_SOURCE_DIR}/src/vector.c
${CMAKE_SOURCE_DIR}/src/quicklist.c
Expand Down Expand Up @@ -38,6 +39,7 @@ set(VALKEY_SERVER_SRCS
${CMAKE_SOURCE_DIR}/src/t_hash.c
${CMAKE_SOURCE_DIR}/src/config.c
${CMAKE_SOURCE_DIR}/src/aof.c
${CMAKE_SOURCE_DIR}/src/bgiteration.c
${CMAKE_SOURCE_DIR}/src/pubsub.c
${CMAKE_SOURCE_DIR}/src/multi.c
${CMAKE_SOURCE_DIR}/src/debug.c
Expand Down
2 changes: 2 additions & 0 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,7 @@ ENGINE_SERVER_OBJ = \
allocator_defrag.o \
anet.o \
aof.o \
bgiteration.o \
bio.o \
bitops.o \
blocked.o \
Expand Down Expand Up @@ -507,6 +508,7 @@ ENGINE_SERVER_OBJ = \
expire.o \
fbtree.o \
fifo.o \
forkless.o \
functions.o \
geo.o \
geohash.o \
Expand Down
4 changes: 2 additions & 2 deletions src/aof.c
Original file line number Diff line number Diff line change
Expand Up @@ -2594,7 +2594,7 @@ int rewriteAppendOnlyFile(char *filename) {
int rewriteAppendOnlyFileBackground(void) {
pid_t childpid;

if (hasActiveChildProcess()) return C_ERR;
if (hasActiveSaveOrChild()) return C_ERR;
Comment thread
coderabbitai[bot] marked this conversation as resolved.

if (dirCreateIfMissing(server.aof_dirname) == -1) {
serverLog(LL_WARNING, "Can't open or create append-only dir %s: %s", server.aof_dirname, strerror(errno));
Expand Down Expand Up @@ -2664,7 +2664,7 @@ int rewriteAppendOnlyFileBackground(void) {
void bgrewriteaofCommand(client *c) {
if (server.child_type == CHILD_TYPE_AOF) {
addReplyError(c, "Background append only file rewriting already in progress");
} else if (hasActiveChildProcess() || server.in_exec) {
} else if (hasActiveSaveOrChild() || server.in_exec) {
server.aof_rewrite_scheduled = 1;
/* When manually triggering AOFRW we reset the count
* so that it can be executed immediately. */
Expand Down
Loading
Loading