Open
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## 8.0 #3133 +/- ##
==========================================
- Coverage 70.85% 70.79% -0.06%
==========================================
Files 114 114
Lines 63096 61836 -1260
==========================================
- Hits 44706 43778 -928
+ Misses 18390 18058 -332
🚀 New features to boost your workflow:
|
Contributor
|
@enjoy-binbin @madolson should #1813 be backported to 8.0? It might have fixed the #969 |
zuiderkwast
reviewed
Feb 20, 2026
Contributor
zuiderkwast
left a comment
There was a problem hiding this comment.
I don't think we should backport Rax size tracking (#688). It's a new feature, not a bugfix. My guess it was in the 8.0 project but it missed the GA release and we forgot to remove it from the 8.0 project.
So (unless you disagree) I think we should skip that one.
Also, if you don't mind, combine the two commits that updates the release notes into one commit.
Avoid tmpfs as fadvise(FADV_DONTNEED) has no effect on memory-backed filesystems. Fixes valkey-io#897 --------- Signed-off-by: Ran Shidlansik <ranshid@amazon.com> Signed-off-by: ranshid <88133677+ranshid@users.noreply.github.com> Co-authored-by: ranshid <88133677+ranshid@users.noreply.github.com> Co-authored-by: Ran Shidlansik <ranshid@amazon.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Resolves valkey-io#2267 Timed out test gets logged at the end of the test run. ``` !!! WARNING The following tests failed: *** [TIMEOUT]: WAIT should not acknowledge 2 additional copies of the data in tests/unit/wait.tcl Cleanup: may take some time... OK ``` Signed-off-by: Sarthak Aggarwal <sarthagg@amazon.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
) This PR fixes the freebsd daily job that has been failing consistently for the last days with the error "pkg: No packages available to install matching 'lang/tclx' have been found in the repositories". The package name is corrected from `lang/tclx` to `lang/tclX`. The lowercase version worked previously but appears to have stopped working in an update of freebsd's pkg tool to 2.4.x. Example of failed job: https://github.com/valkey-io/valkey/actions/runs/19282092345/job/55135193499 Signed-off-by: Sarthak Aggarwal <sarthagg@amazon.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
GitHub has deprecated older macOS runners, and macos-13 is no longer supported. 1. The latest version of cross-platform-actions/action does allow running on ubuntu-latest (Linux runner) and does not strictly require macOS. 2. Previously, cross-platform-actions/action@v0.22.0 used runs-on: macos-13. I checked the latest version of cross-platform-actions, and the official examples now use runs-on: ubuntu. I think we can switch from macOS to Ubuntu. --------- Signed-off-by: Vitah Lin <vitahlin@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…-io#2983) There is a crash in freeReplicationBacklog: ``` Discarding previously cached primary state. ASSERTION FAILED 'listLength(server.replicas) == 0' is not true freeReplicationBacklog ``` The reason is that during dual channel operation, the RDB channel is protected. In the chained replica case, `disconnectReplicas` is called to disconnect all replica clients, but since the RDB channel is protected, `freeClient` does not actually free the replica client. Later, we encounter an assertion failure in `freeReplicationBacklog`. ``` void replicationAttachToNewPrimary(void) { /* Replica starts to apply data from new primary, we must discard the cached * primary structure. */ serverAssert(server.primary == NULL); replicationDiscardCachedPrimary(); /* Cancel any in progress imports (we will now use the primary's) */ clusterCleanSlotImportsOnFullSync(); disconnectReplicas(); /* Force our replicas to resync with us as well. */ freeReplicationBacklog(); /* Don't allow our chained replicas to PSYNC. */ } ``` Dual channel replication was introduced in valkey-io#60. Signed-off-by: Binbin <binloveplay1314@qq.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…erhead (valkey-io#3005) The metric `used_memory_dataset` turned into an insanely large number close to 2^64 (actually overflowed negative value), as reported in valkey-io#2994. When server starts, the global variable `server.initial_memory_usage` is used to record a memory baseline in InitServerLast. This `server.initial_memory_usage` has clearly included initial database memory, since databases are created in initServer. In function getMemoryOverheadData, the `mem_total` is firstly assigned the baseline, which includes initial database memory. And then all extra memory usage of databases are added to mem_total. The initial database memory are therefore counted TWICE. This eventually caused wrongly larger `used_memory_overhead`. For a database with only a couple of keys, the `used_memory_overhead` is easily larger than `used_memory` and causes an overflowed `used_memory_dataset`. In function getMemoryOverheadData(), kvstores without any allocated hashtable are ignored from calculation: ```c if (db == NULL || !kvstoreNumAllocatedHashtables(db->keys)) continue; ``` However, even the kvstore has no allocated hashtable, there are still some memory allocated by kvstoreCreate(), including `hashtable_size_index`, which can be larger than 128 KiB. On the contrary, this caused wrongly smaller `used_memory_overhead` for an empty database. When we insert only ONE key to the database, the database is suddenly taken into account, and `used_memory_overhead` will increase (for `used_memory_dataset` decrease) by more than 128 KiB due to the single key insertion. Signed-off-by: Ace Breakpoint <chemistudio@gmail.com> Signed-off-by: bpint <chemistudio@gmail.com> Signed-off-by: Madelyn Olson <madelyneolson@gmail.com> Co-authored-by: Binbin <binloveplay1314@qq.com> Co-authored-by: Madelyn Olson <madelyneolson@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
increased the wait time to a total of 10 seconds where we check the log for `Done loading RDB` message Fixes valkey-io#2694 CI run (100 times): https://github.com/roshkhatri/valkey/actions/runs/18576201712/job/52961907806 Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…oved (valkey-io#2787) There’s an issue with the LTRIM command. When LTRIM does not actually modify the key — for example, with `LTRIM key 0 -1` — the server.dirty counter is not updated because both ltrim and rtrim values are 0. As a result, the command is not propagated. However, `signalModifiedKey` is still called regardless of whether server.dirty changes. This behavior is unexpected and can cause a mismatch between the source and target during propagation, since the LTRIM command is not sent. Signed-off-by: Harry Lin <harrylhl@amazon.com> Co-authored-by: Harry Lin <harrylhl@amazon.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…delay between failover of each shard (valkey-io#2793) Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…o#2874) fedorarawhide CI reports these warnings: ``` networking.c: In function 'afterErrorReply': networking.c:821:30: error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers] 821 | char *spaceloc = memchr(s, ' ', len < 32 ? len : 32); ``` Signed-off-by: Binbin <binloveplay1314@qq.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
After valkey-io#3103 time sensitive `test-ubuntu-reclaim-cache` started to fail because now startup always includes 30ms of calibration of HW clock, that's why we get this output: ``` Run echo "test SAVE doesn't increase cache" test SAVE doesn't increase cache 2460491776 Could not connect to Valkey at 127.0.0.1:8080: Connection refused ``` Added waits for server to start, locally run, it helps --------- Signed-off-by: Daniil Kashapov <daniil.kashapov.ykt@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…-io#3151) Closes valkey-io#3146 The following two test cases are flaky - `evict clients only until below limit` - uses exact math expecting exactly half the clients evicted - `evict clients in right order (large to small)` - uses exact math expecting specific clients evicted in order It's fine to skip them in TLS because the core logic being tested (client eviction) doesn't change based on TLS vs non-TLS. The `decrease maxmemory-clients causes client eviction` test case could potentially be flaky as well (has not shown flakiness on CI yet), but since it has more tolerant assertion: `connected_clients > 0 && connected_clients < $client_count`, I think it's okay not to bother skipping it. Other test cases are not flaky because they use large thresholds or check binary outcomes (yes/no eviction), not exact counts. Signed-off-by: Zhijun <dszhijun@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…te loop on macOS 15.4 (valkey-io#1940) This PR fixes an issue in the CI test for client-output-buffer-limit, which was causing an infinite loop when running on macOS 15.4. ### Problem This test start two clients, R and R1: ```c R1 subscribe foo R publish foo bar ``` When R executes `PUBLISH foo bar`, the server first stores the message `bar` in R1‘s buf. Only when the space in buf is insufficient does it call `_addReplyProtoToList`. Inside this function, `closeClientOnOutputBufferLimitReached` is invoked to check whether the client’s R1 output buffer has reached its configured limit. On macOS 15.4, because the server writes to the client at a high speed, R1’s buf never gets full. As a result, `closeClientOnOutputBufferLimitReached` in the test is never triggered, causing the test to never exit and fall into an infinite loop. ### Fixed I changed `r publish foo bar` to `r publish foo [string repeat bar 50]` to ensure the buffer is filled, which correctly reproduces the scenario where omem increases. Signed-off-by: vitah <vitahlin@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
If the client executing `ACL LOAD` is a user that is removed from ACL file, it frees itself while still executing the command. Same happens for user while removing it's channel permissions. This causes `c->conn` pointer to become `null` and later `serverAssert(c->conn)` fails for that client on write in `prepareClientToWrite()`. Solution is to flag current client to be closed after command completes and reply is written, later this client is freed async. Resolves valkey-io#3181 --------- Signed-off-by: Daniil Kashapov <daniil.kashapov.ykt@gmail.com> Co-authored-by: Madelyn Olson <madelyneolson@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…alkey-io#3185) Updates to latest versions for each of the github actions used. Pinning prevents an attack where the upstream action dependency is compromised and the "v4" tag for example gets edited to point to a malicious version. We already do this for most checkout actions in our workflows. --------- Signed-off-by: Rain Valentine <rsg000@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…alkey-io#3205) Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
…ommands (valkey-io#3160) Summary: Prevent MODULE UNLOAD when ACL rules reference a module subcommand. Avoids crash during ACL recompute after module removal. Adds coverage for subcommand ACL rules. Tests: make test Fixes valkey-io#2797 --------- Signed-off-by: sachinvmurthy <sachin.murthy97@gmail.com> Signed-off-by: Sachin Venkatesha Murthy <sachin.murthy97@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
zuiderkwast
reviewed
Feb 22, 2026
sarthakaggarwal97
approved these changes
Feb 23, 2026
… message Signed-off-by: Roshan Khatri <rvkhatri@amazon.com> Co-authored-by: Madelyn Olson <madelyneolson@gmail.com>
Co-authored-by: Madelyn Olson <madelyneolson@gmail.com> Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
madolson
approved these changes
Feb 23, 2026
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Remove -encoding binary from fconfigure as it is no longer supported in Tcl 9 (Fedora Rawhide and Daily / test-fedoralatest-jemalloc (pull_request)). -translation binary alone is sufficient. ``` https://github.com/valkey-io/valkey/actions/runs/22324297258/job/64590589777?pr=3225 ===== Start of server log (pid 17617) ===== ### Starting server for test 17617:M 23 Feb 2026 21:21:47.846 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see jemalloc/jemalloc#1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 17617:M 23 Feb 2026 21:21:47.846 * oO0OoO0OoO0Oo Valkey is starting oO0OoO0OoO0Oo 17617:M 23 Feb 2026 21:21:47.846 * Valkey version=9.0.3, bits=64, commit=00000000, modified=0, pid=17617, just started 17617:M 23 Feb 2026 21:21:47.846 * Configuration loaded 17617:M 23 Feb 2026 21:21:47.847 * monotonic clock: POSIX clock_gettime .+^+. .+#########+. .+########+########+. Valkey 9.0.3 (00000000/0) 64 bit .+########+' '+########+. .########+' .+. '+########. Running in cluster mode |####+' .+#######+. '+####| Port: 25121 |###| .+###############+. |###| PID: 17617 |###| |#####*'' ''*#####| |###| |###| |####' .-. '####| |###| |###| |###( (@@@) )###| |###| https://valkey.io/ |###| |####. '-' .####| |###| |###| |#####*. .*#####| |###| |###| '+#####| |#####+' |###| |####+. +##| |#+' .+####| '#######+ |##| .+########' '+###| |##| .+########+' '| |####+########+' +#########+' '+v+' 17617:M 23 Feb 2026 21:21:47.849 * No cluster configuration found, I'm 5501916ccdf76dee6b652cab10402cab3a8f9152 17617:M 23 Feb 2026 21:21:47.852 * Server initialized 17617:M 23 Feb 2026 21:21:47.852 * Ready to accept connections tcp 17617:M 23 Feb 2026 21:21:47.852 * Ready to accept connections unix 17617:M 23 Feb 2026 21:21:47.963 - Accepted 127.0.0.1:37791 17617:M 23 Feb 2026 21:21:47.963 - Client closed connection id=2 addr=127.0.0.1:37791 laddr=127.0.0.1:25121 fd=12 name= age=0 idle=0 flags=N capa= db=0 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=0 qbuf-free=20474 argv-mem=0 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=37504 events=r cmd=ping user=default redir=-1 resp=2 lib-name= lib-ver= tot-net-in=7 tot-net-out=7 tot-cmds=1 17617:M 23 Feb 2026 21:21:47.969 - Accepted 127.0.0.1:39251 17617:M 23 Feb 2026 21:21:47.970 * configEpoch set to 1 via CLUSTER SET-CONFIG-EPOCH 17617:M 23 Feb 2026 21:21:47.975 # Missing implement of connection type tls 17617:M 23 Feb 2026 21:21:47.976 # DEBUG LOG: ========== I am primary 0 ========== 17617:M 23 Feb 2026 21:21:49.872 * Cluster state changed: ok ### Starting test Packet with missing gossip messages don't cause invalid read in tests/unit/cluster/packet.tcl 17617:M 23 Feb 2026 21:21:49.879 - Accepting cluster node connection from 127.0.0.1:33701 17617:M 23 Feb 2026 21:21:49.880 - Client closed connection id=3 addr=127.0.0.1:39251 laddr=127.0.0.1:25121 fd=12 name= age=2 idle=0 flags=N capa= db=0 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=0 qbuf-free=20474 argv-mem=0 multi-mem=0 rbs=1024 rbp=426 obl=0 oll=0 omem=0 tot-mem=22144 events=r cmd=cluster|info user=default redir=-1 resp=2 lib-name= lib-ver= tot-net-in=1363 tot-net-out=17324 tot-cmds=47 17617:signal-handler (1771881709) Received SIGTERM scheduling shutdown... 17617:M 23 Feb 2026 21:21:49.973 * User requested shutdown... 17617:M 23 Feb 2026 21:21:49.973 * Removing the pid file. 17617:M 23 Feb 2026 21:21:49.973 * Saving the cluster configuration file before exiting. 17617:M 23 Feb 2026 21:21:49.978 * Removing the unix socket file. 17617:M 23 Feb 2026 21:21:49.978 # Valkey is now ready to exit, bye bye... ===== End of server log (pid 17617) ===== ===== Start of server stderr log (pid 17617) ===== ===== End of server stderr log (pid 17617) ===== [exception]: Executing test client: unknown encoding "binary": No longer supported. please use either "-translation binary" or "-encoding iso8859-1". unknown encoding "binary": No longer supported. please use either "-translation binary" or "-encoding iso8859-1" while executing "fconfigure $sock -translation binary -encoding binary -buffering none -blocking 1" ("uplevel" body line 18) invoked from within "uplevel 1 $code" (procedure "test" line 62) invoked from within "test "Packet with missing gossip messages don't cause invalid read" { set base_port [srv 0 port] set cluster_port [expr {$base_port + ..." ("uplevel" body line 2) invoked from within "uplevel 1 $code" (procedure "cluster_setup" line 41) invoked from within "cluster_setup 1 0 1 continuous_slot_allocation default_replica_allocation { test "Packet with missing gossip messages don't cause invalid read" { ..." ("uplevel" body line 1) invoked from within "uplevel 1 $code " (procedure "start_server" line 2) invoked from within "start_server {overrides {cluster-enabled yes cluster-ping-interval 100 cluster-node-timeout 3000 cluster-databases 16 cluster-slot-stats-enabled yes} ..." ("uplevel" body line 1) invoked from within "uplevel 1 $code" (procedure "start_multiple_servers" line 5) invoked from within "start_multiple_servers $node_count $options $code" (procedure "start_cluster" line 17) invoked from within "start_cluster 1 0 {tags {external:skip cluster tls:skip}} { test "Packet with missing gossip messages don't cause invalid read" { set base..." (file "tests/unit/cluster/packet.tcl" line 84) invoked from within "source $path" (procedure "execute_test_file" line 4) invoked from within "execute_test_file $data" (procedure "test_client_main" line 10) invoked from within "test_client_main $::test_server_port " Killing still running Valkey server 10700 Killing still running Valkey server 11659 Killing still running Valkey server 11705 Killing still running Valkey server 12735 Killing still running Valkey server 12775 Killing still running Valkey server 12808 Killing still running Valkey server 12858 Killing still running Valkey server 12901 Killing still running Valkey server 12940 Killing still running Valkey server 12972 Killing still running Valkey server 13004 Killing still running Valkey server 13036 Killing still running Valkey server 13073 Killing still running Valkey server 14952 Killing still running Valkey server 16631 Killing still running Valkey server 16670 Killing still running Valkey server 16686 Killing still running Valkey server 16702 Killing still running Valkey server 16718 Killing still running Valkey server 16734 Killing still running Valkey server 16753 Killing still running Valkey server 16771 Killing still running Valkey server 17094 Killing still running Valkey server 17112 Killing still running Valkey server 17133 Killing still running Valkey server 17262 Killing still running Valkey server 17278 Killing still running Valkey server 17316 Killing still running Valkey server 17349 Killing still running Valkey server 17379 Killing still running Valkey server 17410 Killing still running Valkey server 17430 Killing still running Valkey server 17443 Killing still running Valkey server 17459 Killing still running Valkey server 17478 Killing still running Valkey server 17491 Killing still running Valkey server 17507 Killing still running Valkey server 17526 Killing still running Valkey server 17545 Killing still running Valkey server 17561 Killing still running Valkey server 17577 Killing still running Valkey server 17716 Killing still running Valkey server 17778 Killing still running Valkey server 17825 Killing still running Valkey server 17848 Killing still running Valkey server 17896 Killing still running Valkey server 17931 Killing still running Valkey server 17953 Killing still running Valkey server 17973 Killing still running Valkey server 17991 Killing still running Valkey server 18010 Killing still running Valkey server 18064 Killing still running Valkey server 18082 Killing still running Valkey server 18134 Killing still running Valkey server 18118 Killing still running Valkey server 18150 Killing still running Valkey server 18166 Killing still running Valkey server 18188 Killing still running Valkey server 18209 ``` Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Includes bugfixes for 8.0.7
Updates version.h
Adds release notes for new version