Skip to content

Comments

Test PR benchmarking#3

Closed
roshkhatri wants to merge 25 commits intounstablefrom
test-pr-benchmarking
Closed

Test PR benchmarking#3
roshkhatri wants to merge 25 commits intounstablefrom
test-pr-benchmarking

Conversation

@roshkhatri
Copy link
Owner

add a sleep in process command to benchmark slowness

roshkhatri and others added 11 commits August 7, 2025 04:00
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
---------

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
@github-actions
Copy link

Benchmark Comparison by Command

SET

Metric Baseline PR Diff % Change
rps 499999.97 4.00 -499995.97 -100.00%
latency_avg_ms 0.72 2994.32 2993.59 +413479.97%
latency_p50_ms 0.73 3000.32 2999.58 +408106.67%
latency_p95_ms 1.18 3000.32 2999.14 +255246.30%
latency_p99_ms 1.24 3000.32 2999.08 +242056.50%

Benchmark Comparison by Command, Cluster and TLS

SET | cluster off | tls off

Metric Baseline PR Diff % Change
rps 499999.97 4.00 -499995.97 -100.00%
latency_avg_ms 0.72 2994.32 2993.59 +413479.97%
latency_p50_ms 0.73 3000.32 2999.58 +408106.67%
latency_p95_ms 1.18 3000.32 2999.14 +255246.30%
latency_p99_ms 1.24 3000.32 2999.08 +242056.50%

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
@github-actions
Copy link

Benchmark Comparison by Command

SET

Metric Baseline PR Diff % Change
rps 499999.97 4.00 -499995.97 -100.00%
latency_avg_ms 0.74 2994.32 2993.58 +404537.70%
latency_p50_ms 0.69 3000.32 2999.62 +431600.58%
latency_p95_ms 1.08 3000.32 2999.24 +277964.78%
latency_p99_ms 1.14 3000.32 2999.18 +264245.29%

Benchmark Comparison by Command, Cluster and TLS

SET | cluster off | tls off

Metric Baseline PR Diff % Change
rps 499999.97 4.00 -499995.97 -100.00%
latency_avg_ms 0.74 2994.32 2993.58 +404537.70%
latency_p50_ms 0.69 3000.32 2999.62 +431600.58%
latency_p95_ms 1.08 3000.32 2999.24 +277964.78%
latency_p99_ms 1.14 3000.32 2999.18 +264245.29%

Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Signed-off-by: Roshan Khatri <rvkhatri@amazon.com>
Repository owner deleted a comment from github-actions bot Sep 25, 2025
@github-actions
Copy link

Benchmark Comparison 8.1.0-rc1 vs 9.0.0-rc2

Machine: ec2-ubuntu-24.04-benchmarking
Versions Compared:

  • Version 1: 8.1.0-rc1
  • Version 2: 9.0.0-rc2

Config: benchmark-config-x86.json
Workflow Run: View Details


Benchmark Comparison by Configuration

Configuration:

  • benchmark_mode: duration
  • clients: 650
  • cluster_mode: False
  • data_size: 512
  • duration: 300
  • io_threads: 9
  • pipeline: 1
  • tls: False
  • valkey-benchmark-threads: 50
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 732223.06 701487.31 -30735.75 -4.20%
latency_avg_ms 0.88 0.92 0.04 +4.43%
latency_p50_ms 0.78 0.80 0.02 +2.04%
latency_p95_ms 1.31 1.34 0.03 +2.44%
latency_p99_ms 1.39 1.41 0.02 +1.15%

SET

Metric Baseline PR Diff % Change
rps 693539.94 680064.12 -13475.82 -1.94%
latency_avg_ms 0.93 0.95 0.02 +1.93%
latency_p50_ms 0.80 0.82 0.02 +3.00%
latency_p95_ms 1.37 1.38 0.01 +0.59%
latency_p99_ms 1.44 1.45 0.01 +0.56%

Configuration:

  • benchmark_mode: duration
  • clients: 650
  • cluster_mode: False
  • data_size: 512
  • duration: 300
  • io_threads: 9
  • pipeline: 4
  • tls: False
  • valkey-benchmark-threads: 50
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 887465.38 1909539.88 1022074.50 +115.17%
latency_avg_ms 2.92 1.34 -1.58 -53.99%
latency_p50_ms 2.94 1.41 -1.53 -52.06%
latency_p95_ms 3.15 1.74 -1.42 -44.94%
latency_p99_ms 3.20 1.93 -1.27 -39.76%

SET

Metric Baseline PR Diff % Change
rps 696205.19 1141531.62 445326.43 +63.96%
latency_avg_ms 3.73 2.27 -1.46 -39.23%
latency_p50_ms 3.74 2.29 -1.46 -38.90%
latency_p95_ms 3.86 2.64 -1.22 -31.69%
latency_p99_ms 3.98 2.74 -1.24 -31.13%

@github-actions
Copy link

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking-arm64
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-arm.json
Workflow Run: View Details


Benchmark Comparison by Configuration

Configuration:

  • benchmark_mode: duration
  • clients: 2500
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 1
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 1322725.12 1359730.50 37005.38 +2.80%
latency_avg_ms 1.88 1.83 -0.05 -2.76%
latency_p50_ms 1.77 1.71 -0.06 -3.61%
latency_p95_ms 2.59 2.62 0.03 +1.24%
latency_p99_ms 3.83 3.93 0.10 +2.51%

SET

Metric Baseline PR Diff % Change
rps 1394819.12 1380457.62 -14361.50 -1.03%
latency_avg_ms 1.79 1.80 0.02 +1.01%
latency_p50_ms 1.72 1.74 0.02 +0.93%
latency_p95_ms 2.50 2.54 0.03 +1.28%
latency_p99_ms 2.73 2.78 0.05 +1.76%

Configuration:

  • benchmark_mode: duration
  • clients: 2500
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 4
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 1094716.75 2509166.75 1414450.00 +129.21%
latency_avg_ms 9.13 3.96 -5.16 -56.57%
latency_p50_ms 9.13 3.85 -5.27 -57.76%
latency_p95_ms 9.45 4.80 -4.65 -49.20%
latency_p99_ms 10.49 6.84 -3.65 -34.79%

SET

Metric Baseline PR Diff % Change
rps 985397.88 1721048.88 735651.00 +74.66%
latency_avg_ms 10.14 5.80 -4.34 -42.83%
latency_p50_ms 10.13 5.77 -4.37 -43.10%
latency_p95_ms 10.42 6.05 -4.37 -41.91%
latency_p99_ms 10.56 6.70 -3.86 -36.52%

@github-actions
Copy link

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-x86.json
Workflow Run: View Details


Benchmark Comparison by Configuration

Configuration:

  • benchmark_mode: duration
  • clients: 2500
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 1
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 928749.31 991855.88 63106.57 +6.79%
latency_avg_ms 2.68 2.51 -0.17 -6.48%
latency_p50_ms 2.69 2.61 -0.09 -3.27%
latency_p95_ms 2.92 3.49 0.57 +19.46%
latency_p99_ms 3.13 4.05 0.92 +29.35%

SET

Metric Baseline PR Diff % Change
rps 1045206.50 1027642.75 -17563.75 -1.68%
latency_avg_ms 2.38 2.42 0.04 +1.72%
latency_p50_ms 2.64 2.61 -0.03 -1.21%
latency_p95_ms 3.02 3.06 0.04 +1.32%
latency_p99_ms 3.26 3.35 0.09 +2.70%

Configuration:

  • benchmark_mode: duration
  • clients: 2500
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 4
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 825117.88 2154679.25 1329561.37 +161.14%
latency_avg_ms 12.11 4.50 -7.61 -62.87%
latency_p50_ms 12.09 4.58 -7.50 -62.08%
latency_p95_ms 12.35 5.03 -7.32 -59.27%
latency_p99_ms 12.38 5.37 -7.02 -56.66%

SET

Metric Baseline PR Diff % Change
rps 658492.75 1215569.38 557076.63 +84.60%
latency_avg_ms 15.18 8.18 -7.00 -46.12%
latency_p50_ms 15.33 8.73 -6.60 -43.06%
latency_p95_ms 15.43 9.36 -6.07 -39.35%
latency_p99_ms 15.49 9.70 -5.80 -37.43%

@github-actions
Copy link

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking-arm64
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-arm.json
Workflow Run: View Details


Benchmark Comparison by Configuration

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 1
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 1328266.62 1385212.00 56945.38 +4.29%
latency_avg_ms 1.20 1.15 -0.05 -4.25%
latency_p50_ms 1.15 1.07 -0.08 -6.95%
latency_p95_ms 1.57 1.57 0.00 +0.00%
latency_p99_ms 2.66 2.60 -0.06 -2.40%

SET

Metric Baseline PR Diff % Change
rps 1401445.00 1392647.75 -8797.25 -0.63%
latency_avg_ms 1.14 1.14 0.01 +0.62%
latency_p50_ms 1.11 1.10 -0.01 -0.72%
latency_p95_ms 1.47 1.50 0.03 +2.18%
latency_p99_ms 1.71 1.74 0.03 +1.87%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 4
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 1123726.62 2523752.75 1400026.13 +124.59%
latency_avg_ms 5.69 2.52 -3.17 -55.71%
latency_p50_ms 5.69 2.44 -3.25 -57.11%
latency_p95_ms 5.97 3.11 -2.86 -47.86%
latency_p99_ms 6.86 4.71 -2.14 -31.28%

SET

Metric Baseline PR Diff % Change
rps 999477.69 1730237.12 730759.43 +73.11%
latency_avg_ms 6.40 3.69 -2.71 -42.29%
latency_p50_ms 6.41 3.67 -2.74 -42.70%
latency_p95_ms 6.63 4.02 -2.61 -39.33%
latency_p99_ms 6.75 4.42 -2.34 -34.60%

@github-actions
Copy link

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-x86.json
Workflow Run: View Details


Benchmark Comparison by Configuration

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 1
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 706534.00 1082209.88 375675.88 +53.17%
latency_avg_ms 2.26 1.47 -0.79 -34.84%
latency_p50_ms 2.28 1.54 -0.74 -32.29%
latency_p95_ms 2.56 1.90 -0.66 -25.64%
latency_p99_ms 3.02 2.24 -0.78 -25.93%

SET

Metric Baseline PR Diff % Change
rps 795195.88 1009513.44 214317.56 +26.95%
latency_avg_ms 2.00 1.58 -0.43 -21.22%
latency_p50_ms 2.13 1.66 -0.47 -22.11%
latency_p95_ms 2.50 1.91 -0.59 -23.65%
latency_p99_ms 3.06 2.07 -0.98 -32.21%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 4
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 767943.94 1924817.75 1156873.81 +150.65%
latency_avg_ms 8.33 3.25 -5.08 -61.01%
latency_p50_ms 8.46 3.33 -5.12 -60.56%
latency_p95_ms 8.63 3.64 -4.99 -57.84%
latency_p99_ms 8.73 3.85 -4.89 -55.96%

SET

Metric Baseline PR Diff % Change
rps 642651.44 1170878.62 528227.18 +82.19%
latency_avg_ms 9.95 5.43 -4.52 -45.41%
latency_p50_ms 10.10 5.66 -4.44 -43.95%
latency_p95_ms 10.38 5.98 -4.39 -42.33%
latency_p99_ms 10.54 6.17 -4.36 -41.39%

@github-actions
Copy link

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking-arm64
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-arm.json
Workflow Run: View Details


Benchmark Comparison by Configuration

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 1
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 1335336.50 1352901.12 17564.62 +1.32%
latency_avg_ms 1.19 1.18 -0.02 -1.34%
latency_p50_ms 1.15 1.09 -0.06 -4.87%
latency_p95_ms 1.56 1.64 0.08 +5.13%
latency_p99_ms 2.38 2.38 0.00 +0.00%

SET

Metric Baseline PR Diff % Change
rps 1401099.88 1366903.75 -34196.13 -2.44%
latency_avg_ms 1.14 1.16 0.03 +2.47%
latency_p50_ms 1.10 1.11 0.01 +0.73%
latency_p95_ms 1.48 1.55 0.07 +4.87%
latency_p99_ms 1.70 1.86 0.16 +9.40%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 4
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 1120800.75 2531339.25 1410538.50 +125.85%
latency_avg_ms 5.70 2.51 -3.19 -55.92%
latency_p50_ms 5.70 2.46 -3.25 -56.95%
latency_p95_ms 5.97 2.91 -3.06 -51.28%
latency_p99_ms 6.58 4.42 -2.15 -32.73%

SET

Metric Baseline PR Diff % Change
rps 997050.38 1714520.50 717470.12 +71.96%
latency_avg_ms 6.41 3.73 -2.69 -41.92%
latency_p50_ms 6.42 3.73 -2.70 -41.97%
latency_p95_ms 6.65 4.03 -2.62 -39.36%
latency_p99_ms 6.78 4.25 -2.52 -37.20%

@github-actions
Copy link

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-x86.json
Workflow Run: View Details


Benchmark Comparison by Configuration

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 1
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 909498.62 1063529.88 154031.26 +16.94%
latency_avg_ms 1.75 1.50 -0.26 -14.61%
latency_p50_ms 1.76 1.58 -0.18 -10.01%
latency_p95_ms 1.92 1.91 -0.01 -0.42%
latency_p99_ms 2.13 2.23 0.10 +4.89%

SET

Metric Baseline PR Diff % Change
rps 1010099.00 952589.94 -57509.06 -5.69%
latency_avg_ms 1.58 1.67 0.09 +6.02%
latency_p50_ms 1.66 1.76 0.10 +5.77%
latency_p95_ms 1.87 1.98 0.11 +5.99%
latency_p99_ms 2.05 2.10 0.06 +2.74%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • io_threads: 9
  • pipeline: 4
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180

GET

Metric Baseline PR Diff % Change
rps 823289.19 1782252.50 958963.31 +116.48%
latency_avg_ms 7.77 3.49 -4.27 -55.02%
latency_p50_ms 7.75 3.53 -4.22 -54.50%
latency_p95_ms 7.98 3.85 -4.14 -51.81%
latency_p99_ms 8.02 3.98 -4.04 -50.36%

SET

Metric Baseline PR Diff % Change
rps 667088.25 1019274.75 352186.50 +52.79%
latency_avg_ms 9.59 6.25 -3.34 -34.87%
latency_p50_ms 9.58 6.48 -3.10 -32.39%
latency_p95_ms 9.89 6.77 -3.12 -31.56%
latency_p99_ms 9.94 6.90 -3.04 -30.57%

@github-actions
Copy link

github-actions bot commented Oct 6, 2025

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-x86.json
Workflow Run: View Details


Benchmark Comparison: 8.1 vs 9.0

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 9 915183.62 1084287.75 169104.13 +18.48%
GET avg_latency 1 9 1.74 1.47 -0.27 -15.68%
GET p50_latency 1 9 1.75 1.54 -0.21 -11.88%
GET p95_latency 1 9 1.90 1.88 -0.02 -1.26%
GET p99_latency 1 9 2.10 2.21 0.10 +4.95%
GET rps 4 9 812396.94 1874064.12 1061667.18 +130.68%
GET avg_latency 4 9 7.87 3.32 -4.55 -57.81%
GET p50_latency 4 9 7.86 3.38 -4.48 -57.03%
GET p95_latency 4 9 8.08 3.71 -4.37 -54.07%
GET p99_latency 4 9 8.12 3.89 -4.23 -52.12%
GET rps 10 9 815766.38 1823062.50 1007296.12 +123.48%
GET avg_latency 10 9 19.60 8.69 -10.91 -55.65%
GET p50_latency 10 9 19.57 8.89 -10.67 -54.54%
GET p95_latency 10 9 19.84 9.21 -10.63 -53.59%
GET p99_latency 10 9 19.87 9.36 -10.51 -52.90%
SET rps 1 9 1017300.31 974169.38 -43130.93 -4.24%
SET avg_latency 1 9 1.57 1.64 0.07 +4.41%
SET p50_latency 1 9 1.68 1.72 0.04 +2.38%
SET p95_latency 1 9 1.87 1.96 0.09 +4.70%
SET p99_latency 1 9 2.03 2.10 0.06 +3.15%
SET rps 4 9 674619.00 1087023.38 412404.38 +61.13%
SET avg_latency 4 9 9.48 5.86 -3.62 -38.22%
SET p50_latency 4 9 9.46 6.09 -3.38 -35.68%
SET p95_latency 4 9 9.77 6.38 -3.38 -34.65%
SET p99_latency 4 9 9.81 6.53 -3.29 -33.50%
SET rps 10 9 637686.56 1088845.12 451158.56 +70.75%
SET avg_latency 10 9 25.08 14.62 -10.46 -41.70%
SET p50_latency 10 9 25.10 14.70 -10.40 -41.43%
SET p95_latency 10 9 25.45 15.04 -10.42 -40.92%
SET p99_latency 10 9 25.57 15.16 -10.41 -40.71%

@github-actions
Copy link

github-actions bot commented Oct 6, 2025

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking-arm64
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-arm.json
Workflow Run: View Details


Benchmark Comparison: 8.1 vs 9.0

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 9 1326144.38 1375007.38 48863.00 +3.68%
GET avg_latency 1 9 1.20 1.16 -0.04 -3.66%
GET p50_latency 1 9 1.16 1.09 -0.07 -6.21%
GET p95_latency 1 9 1.55 1.56 0.01 +0.52%
GET p99_latency 1 9 2.37 2.37 0.00 +0.00%
GET rps 4 9 1109234.25 2593567.00 1484332.75 +133.82%
GET avg_latency 4 9 5.76 2.45 -3.31 -57.44%
GET p50_latency 4 9 5.73 2.38 -3.34 -58.39%
GET p95_latency 4 9 6.24 2.98 -3.26 -52.19%
GET p99_latency 4 9 6.92 4.25 -2.67 -38.62%
GET rps 10 9 1091787.75 2721468.00 1629680.25 +149.27%
GET avg_latency 10 9 14.64 5.84 -8.80 -60.08%
GET p50_latency 10 9 14.63 5.80 -8.83 -60.36%
GET p95_latency 10 9 14.98 6.62 -8.37 -55.85%
GET p99_latency 10 9 16.08 8.40 -7.68 -47.76%
SET rps 1 9 1392228.38 1388587.75 -3640.63 -0.26%
SET avg_latency 1 9 1.14 1.15 0.00 +0.26%
SET p50_latency 1 9 1.09 1.10 0.01 +0.73%
SET p95_latency 1 9 1.51 1.50 -0.01 -0.53%
SET p99_latency 1 9 1.77 1.74 -0.04 -2.25%
SET rps 4 9 990730.94 1761927.62 771196.68 +77.84%
SET avg_latency 4 9 6.46 3.62 -2.83 -43.84%
SET p50_latency 4 9 6.43 3.61 -2.82 -43.91%
SET p95_latency 4 9 6.74 3.96 -2.78 -41.22%
SET p99_latency 4 9 7.28 4.36 -2.92 -40.12%
SET rps 10 9 942499.31 1812120.88 869621.57 +92.27%
SET avg_latency 10 9 16.97 8.81 -8.16 -48.09%
SET p50_latency 10 9 16.93 8.77 -8.16 -48.21%
SET p95_latency 10 9 17.34 9.10 -8.24 -47.51%
SET p99_latency 10 9 17.89 9.73 -8.15 -45.57%

@github-actions
Copy link

github-actions bot commented Oct 7, 2025

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking-arm64
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-arm.json
Workflow Run: View Details


Benchmark Comparison: 8.1 vs 9.0

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 9 1304988.88 1372539.50 67550.62 +5.18%
GET avg_latency 1 9 1.22 1.16 -0.06 -5.00%
GET p50_latency 1 9 1.17 1.09 -0.08 -6.86%
GET p95_latency 1 9 1.66 1.58 -0.07 -4.35%
GET p99_latency 1 9 2.45 2.49 0.04 +1.63%
GET rps 4 9 1111278.25 2508853.75 1397575.50 +125.76%
GET avg_latency 4 9 5.75 2.54 -3.22 -55.91%
GET p50_latency 4 9 5.75 2.46 -3.29 -57.17%
GET p95_latency 4 9 6.03 3.13 -2.90 -48.02%
GET p99_latency 4 9 6.59 4.43 -2.16 -32.77%
GET rps 10 9 1079907.75 2652417.00 1572509.25 +145.62%
GET avg_latency 10 9 14.80 6.00 -8.80 -59.47%
GET p50_latency 10 9 14.80 5.94 -8.86 -59.84%
GET p95_latency 10 9 15.17 6.85 -8.32 -54.86%
GET p99_latency 10 9 16.38 8.68 -7.70 -47.00%
SET rps 1 9 1369345.75 1385821.88 16476.13 +1.20%
SET avg_latency 1 9 1.16 1.15 -0.01 -1.20%
SET p50_latency 1 9 1.11 1.10 -0.01 -0.72%
SET p95_latency 1 9 1.54 1.52 -0.02 -1.56%
SET p99_latency 1 9 1.87 1.75 -0.12 -6.41%
SET rps 4 9 976960.12 1702720.88 725760.76 +74.29%
SET avg_latency 4 9 6.55 3.75 -2.79 -42.68%
SET p50_latency 4 9 6.52 3.73 -2.78 -42.71%
SET p95_latency 4 9 6.85 4.08 -2.77 -40.43%
SET p99_latency 4 9 7.45 4.45 -3.00 -40.28%
SET rps 10 9 939254.50 1747325.38 808070.88 +86.03%
SET avg_latency 10 9 17.03 9.14 -7.89 -46.32%
SET p50_latency 10 9 17.02 9.10 -7.92 -46.53%
SET p95_latency 10 9 17.34 9.41 -7.93 -45.71%
SET p99_latency 10 9 17.50 10.03 -7.47 -42.69%

@github-actions
Copy link

github-actions bot commented Oct 7, 2025

Benchmark Comparison 8.1 vs 9.0

Machine: ec2-ubuntu-24.04-benchmarking
Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Config: benchmark-config-x86.json
Workflow Run: View Details


Benchmark Comparison: 8.1 vs 9.0

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 9 899368.75 1081731.12 182362.37 +20.28%
GET avg_latency 1 9 1.77 1.47 -0.30 -16.99%
GET p50_latency 1 9 1.79 1.55 -0.24 -13.40%
GET p95_latency 1 9 1.96 1.88 -0.08 -4.08%
GET p99_latency 1 9 2.12 2.20 0.08 +3.78%
GET rps 4 9 820725.56 1863947.50 1043221.94 +127.11%
GET avg_latency 4 9 7.79 3.33 -4.46 -57.21%
GET p50_latency 4 9 7.78 3.39 -4.38 -56.39%
GET p95_latency 4 9 8.00 3.76 -4.24 -53.01%
GET p99_latency 4 9 8.04 3.94 -4.10 -51.05%
GET rps 10 9 821255.06 1781737.75 960482.69 +116.95%
GET avg_latency 10 9 19.47 8.88 -10.59 -54.37%
GET p50_latency 10 9 19.45 8.99 -10.46 -53.79%
GET p95_latency 10 9 19.71 9.26 -10.46 -53.05%
GET p99_latency 10 9 19.76 9.38 -10.38 -52.51%
SET rps 1 9 1026240.38 981469.75 -44770.63 -4.36%
SET avg_latency 1 9 1.55 1.62 0.07 +4.57%
SET p50_latency 1 9 1.64 1.71 0.07 +4.39%
SET p95_latency 1 9 1.85 1.96 0.10 +5.61%
SET p99_latency 1 9 2.07 2.13 0.06 +2.70%
SET rps 4 9 680515.19 1088828.62 408313.43 +60.00%
SET avg_latency 4 9 9.40 5.84 -3.56 -37.85%
SET p50_latency 4 9 9.40 6.09 -3.31 -35.24%
SET p95_latency 4 9 9.69 6.38 -3.31 -34.19%
SET p99_latency 4 9 9.74 6.52 -3.22 -33.09%
SET rps 10 9 635139.69 1079233.50 444093.81 +69.92%
SET avg_latency 10 9 25.18 14.74 -10.44 -41.45%
SET p50_latency 10 9 25.14 14.78 -10.35 -41.19%
SET p95_latency 10 9 25.45 15.09 -10.37 -40.73%
SET p99_latency 10 9 25.52 15.16 -10.36 -40.60%

@github-actions
Copy link

github-actions bot commented Oct 8, 2025

Multi-Architecture Benchmark Comparison: 8.1 vs 9.0

Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Runs: 5 per configuration
Workflow Run: View Details


X86 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 5 total runs, 1 configurations (avg 5.0 runs per config)
  • 9.0: 5 total runs, 1 configurations (avg 5.0 runs per config)

Note: Values with (n=X, σ=Y, CV=Z%) indicate averages from X runs with standard deviation Y and coefficient of variation Z%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1020337.51 (n=5, σ=20258.19, CV=2.0%) 995208.31 (n=5, σ=27006.77, CV=2.7%) -25129.20 -2.46%

ARM64 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 5 total runs, 1 configurations (avg 5.0 runs per config)
  • 9.0: 5 total runs, 1 configurations (avg 5.0 runs per config)

Note: Values with (n=X, σ=Y, CV=Z%) indicate averages from X runs with standard deviation Y and coefficient of variation Z%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1388456.95 (n=5, σ=10628.19, CV=0.8%) 1391265.20 (n=5, σ=2284.26, CV=0.2%) 2808.25 +0.20%

@github-actions
Copy link

github-actions bot commented Oct 8, 2025

Multi-Architecture Benchmark Comparison: 8.1 vs 9.0

Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Runs: 15 per configuration
Workflow Run: View Details


X86 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 15 total runs, 1 configurations (avg 15.0 runs per config)
  • 9.0: 15 total runs, 1 configurations (avg 15.0 runs per config)

Note: Values with (n=X, σ=Y, CV=Z%) indicate averages from X runs with standard deviation Y and coefficient of variation Z%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1029520.45 (n=15, σ=13477.07, CV=1.3%) 994448.21 (n=15, σ=18320.96, CV=1.8%) -35072.24 -3.41%

ARM64 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 15 total runs, 1 configurations (avg 15.0 runs per config)
  • 9.0: 15 total runs, 1 configurations (avg 15.0 runs per config)

Note: Values with (n=X, σ=Y, CV=Z%) indicate averages from X runs with standard deviation Y and coefficient of variation Z%

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 480
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1386743.57 (n=15, σ=6409.84, CV=0.5%) 1389246.22 (n=15, σ=7561.25, CV=0.5%) 2502.65 +0.18%

@github-actions
Copy link

github-actions bot commented Oct 9, 2025

Multi-Architecture Benchmark Comparison: 8.1 vs 9.0

Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Runs: 9 per configuration
Workflow Run: View Details


X86 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 9 total runs, 1 configurations (avg 9.00 runs per config)
  • 9.0: 9 total runs, 1 configurations (avg 9.00 runs per config)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, [A, B]) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and confidence interval bounds [A, B]

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1017660.217 (n=9, σ=2754.009, CV=0.27%, CI99%=±0.303%, PI99%=±0.957%, CI[1014579.961, 1020740.472], PI[1007919.594, 1027400.839]) 1016070.376 (n=9, σ=4118.418, CV=0.41%, CI99%=±0.453%, PI99%=±1.434%, CI[1011464.079, 1020676.672], PI[1001503.988, 1030636.763]) -1589.841 -0.156%

ARM64 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 9 total runs, 1 configurations (avg 9.00 runs per config)
  • 9.0: 9 total runs, 1 configurations (avg 9.00 runs per config)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, [A, B]) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and confidence interval bounds [A, B]

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1381370.238 (n=9, σ=8448.399, CV=0.61%, CI99%=±0.684%, PI99%=±2.163%, CI[1371921.021, 1390819.455], PI[1351489.190, 1411251.285]) 1379293.153 (n=9, σ=10464.266, CV=0.76%, CI99%=±0.849%, PI99%=±2.683%, CI[1367589.265, 1390997.042], PI[1342282.209, 1416304.097]) -2077.084 -0.150%

Repository owner deleted a comment from github-actions bot Oct 9, 2025
@github-actions
Copy link

Multi-Architecture Benchmark Comparison: 8.1 vs 9.0

Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Runs: 50 per configuration
Workflow Run: View Details


X86 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 50 total runs, 1 configurations (avg 50.00 runs per config)
  • 9.0: 50 total runs, 1 configurations (avg 50.00 runs per config)

Statistical Notes:

  • CI99%: 99% Confidence Interval - range where the true population mean is likely to fall
  • PI99%: 99% Prediction Interval - range where a single future observation is likely to fall
  • CV: Coefficient of Variation - relative variability (σ/μ × 100%)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, PI99%=±V%) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and 99% prediction interval margin of error ±V% of the mean. CI bounds [A, B] and PI bounds [C, D] show the actual interval ranges.

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1025216.368 (n=50, σ=16425.453, CV=1.60%, CI99%=±0.607%, PI99%=±4.336%, CI[1018991.081, 1031441.655], PI[980758.929, 1069673.807]) 1001967.107 (n=50, σ=14606.412, CV=1.46%, CI99%=±0.552%, PI99%=±3.946%, CI[996431.241, 1007502.973], PI[962433.117, 1041501.097]) -23249.261 -2.268%

ARM64 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 50 total runs, 1 configurations (avg 50.00 runs per config)
  • 9.0: 50 total runs, 1 configurations (avg 50.00 runs per config)

Statistical Notes:

  • CI99%: 99% Confidence Interval - range where the true population mean is likely to fall
  • PI99%: 99% Prediction Interval - range where a single future observation is likely to fall
  • CV: Coefficient of Variation - relative variability (σ/μ × 100%)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, PI99%=±V%) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and 99% prediction interval margin of error ±V% of the mean. CI bounds [A, B] and PI bounds [C, D] show the actual interval ranges.

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
SET rps 1 9 1386817.187 (n=50, σ=8037.831, CV=0.58%, CI99%=±0.220%, PI99%=±1.569%, CI[1383770.830, 1389863.545], PI[1365061.843, 1408572.531]) 1387875.426 (n=50, σ=6788.959, CV=0.49%, CI99%=±0.185%, PI99%=±1.324%, CI[1385302.394, 1390448.458], PI[1369500.301, 1406250.550]) 1058.239 +0.076%

@github-actions
Copy link

github-actions bot commented Oct 13, 2025

Multi-Architecture Benchmark Comparison: 8.1 vs 9.0

Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Runs: 3 per configuration
Workflow Run: View Details


X86 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 24 total runs, 8 configurations (avg 3.00 runs per config)
  • 9.0: 24 total runs, 8 configurations (avg 3.00 runs per config)

Statistical Notes:

  • CI99%: 99% Confidence Interval - range where the true population mean is likely to fall
  • PI99%: 99% Prediction Interval - range where a single future observation is likely to fall
  • CV: Coefficient of Variation - relative variability (σ/μ × 100%)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, PI99%=±V%) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and 99% prediction interval margin of error ±V% of the mean. CI bounds [A, B] and PI bounds [C, D] show the actual interval ranges.

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 1 180549.810 (n=3, σ=575.600, CV=0.32%, CI99%=±1.827%, PI99%=±3.654%, CI[177251.556, 183848.064], PI[173953.302, 187146.318]) 175726.980 (n=3, σ=221.737, CV=0.13%, CI99%=±0.723%, PI99%=±1.446%, CI[174456.401, 176997.559], PI[173185.821, 178268.139]) -4822.830 -2.671%
GET rps 1 9 900990.960 (n=3, σ=13209.474, CV=1.47%, CI99%=±8.401%, PI99%=±16.802%, CI[825299.210, 976682.710], PI[749607.459, 1052374.461]) 1104182.500 (n=3, σ=29422.032, CV=2.66%, CI99%=±15.268%, PI99%=±30.537%, CI[935590.991, 1272774.009], PI[766999.483, 1441365.517]) 203191.540 +22.552%
GET rps 10 1 586136.747 (n=3, σ=1573.512, CV=0.27%, CI99%=±1.538%, PI99%=±3.077%, CI[577120.347, 595153.146], PI[568103.948, 604169.545]) 705818.437 (n=3, σ=3093.149, CV=0.44%, CI99%=±2.511%, PI99%=±5.022%, CI[688094.350, 723542.524], PI[670370.263, 741266.611]) 119681.690 +20.419%
GET rps 10 9 838012.917 (n=3, σ=10954.930, CV=1.31%, CI99%=±7.491%, PI99%=±14.981%, CI[775239.951, 900785.883], PI[712466.985, 963558.848]) 1965324.207 (n=3, σ=40350.670, CV=2.05%, CI99%=±11.765%, PI99%=±23.529%, CI[1734110.391, 2196538.023], PI[1502896.574, 2427751.839]) 1127311.290 +134.522%
SET rps 1 1 176857.123 (n=3, σ=84.072, CV=0.05%, CI99%=±0.272%, PI99%=±0.545%, CI[176375.380, 177338.866], PI[175893.637, 177820.610]) 172618.053 (n=3, σ=69.738, CV=0.04%, CI99%=±0.231%, PI99%=±0.463%, CI[172218.446, 173017.660], PI[171818.840, 173417.267]) -4239.070 -2.397%
SET rps 1 9 1027990.500 (n=3, σ=14971.212, CV=1.46%, CI99%=±8.345%, PI99%=±16.690%, CI[942203.796, 1113777.204], PI[856417.092, 1199563.908]) 984488.543 (n=3, σ=17151.669, CV=1.74%, CI99%=±9.983%, PI99%=±19.966%, CI[886207.578, 1082769.509], PI[787926.612, 1181050.475]) -43501.957 -4.232%
SET rps 10 1 572351.000 (n=3, σ=3428.455, CV=0.60%, CI99%=±3.432%, PI99%=±6.865%, CI[552705.574, 591996.426], PI[533060.148, 611641.852]) 730225.603 (n=3, σ=755.479, CV=0.10%, CI99%=±0.593%, PI99%=±1.186%, CI[725896.623, 734554.583], PI[721567.644, 738883.563]) 157874.603 +27.584%
SET rps 10 9 635853.417 (n=3, σ=8168.693, CV=1.28%, CI99%=±7.361%, PI99%=±14.723%, CI[589045.902, 682660.931], PI[542238.388, 729468.445]) 1127810.083 (n=3, σ=36174.207, CV=3.21%, CI99%=±18.379%, PI99%=±36.758%, CI[920527.868, 1335092.298], PI[713245.654, 1542374.513]) 491956.667 +77.370%

ARM64 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 24 total runs, 8 configurations (avg 3.00 runs per config)
  • 9.0: 24 total runs, 8 configurations (avg 3.00 runs per config)

Statistical Notes:

  • CI99%: 99% Confidence Interval - range where the true population mean is likely to fall
  • PI99%: 99% Prediction Interval - range where a single future observation is likely to fall
  • CV: Coefficient of Variation - relative variability (σ/μ × 100%)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, PI99%=±V%) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and 99% prediction interval margin of error ±V% of the mean. CI bounds [A, B] and PI bounds [C, D] show the actual interval ranges.

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 1 206570.883 (n=3, σ=1335.220, CV=0.65%, CI99%=±3.704%, PI99%=±7.408%, CI[198919.925, 214221.842], PI[191268.966, 221872.801]) 205019.093 (n=3, σ=283.902, CV=0.14%, CI99%=±0.793%, PI99%=±1.587%, CI[203392.303, 206645.883], PI[201765.513, 208272.674]) -1551.790 -0.751%
GET rps 1 9 1299839.957 (n=3, σ=3523.936, CV=0.27%, CI99%=±1.553%, PI99%=±3.107%, CI[1279647.412, 1320032.501], PI[1259454.867, 1340225.046]) 1376449.920 (n=3, σ=10266.086, CV=0.75%, CI99%=±4.274%, PI99%=±8.547%, CI[1317624.106, 1435275.734], PI[1258798.292, 1494101.548]) 76609.963 +5.894%
GET rps 10 1 609060.713 (n=3, σ=483.430, CV=0.08%, CI99%=±0.455%, PI99%=±0.910%, CI[606290.607, 611830.819], PI[603520.501, 614600.926]) 742383.770 (n=3, σ=3754.732, CV=0.51%, CI99%=±2.898%, PI99%=±5.796%, CI[720868.741, 763898.799], PI[699353.711, 785413.829]) 133323.057 +21.890%
GET rps 10 9 1107909.627 (n=3, σ=4485.427, CV=0.40%, CI99%=±2.320%, PI99%=±4.640%, CI[1082207.631, 1133611.622], PI[1056505.636, 1159313.617]) 2061000.627 (n=3, σ=33413.112, CV=-1.62%, CI[2252461.463, 1869539.791], PI[2443922.299, 1678078.955]) 953091 +86.026%
SET rps 1 1 206179.743 (n=3, σ=904.300, CV=0.44%, CI99%=±2.513%, PI99%=±5.026%, CI[200998.002, 211361.485], PI[195816.260, 216543.227]) 203969.053 (n=3, σ=87.539, CV=0.04%, CI99%=±0.246%, PI99%=±0.492%, CI[203467.448, 204470.659], PI[202965.842, 204972.265]) -2210.690 -1.072%
SET rps 1 9 1392808.877 (n=3, σ=4339.145, CV=0.31%, CI99%=±1.785%, PI99%=±3.570%, CI[1367945.093, 1417672.660], PI[1343081.309, 1442536.444]) 1393263.543 (n=3, σ=4266.181, CV=0.31%, CI99%=±1.755%, PI99%=±3.509%, CI[1368817.850, 1417709.236], PI[1344372.157, 1442154.929]) 454.667 +0.033%
SET rps 10 1 639454.123 (n=3, σ=824.999, CV=0.13%, CI99%=±0.739%, PI99%=±1.479%, CI[634726.786, 644181.460], PI[629999.450, 648908.797]) 871663.357 (n=3, σ=603.857, CV=0.07%, CI99%=±0.397%, PI99%=±0.794%, CI[868203.187, 875123.527], PI[864743.017, 878583.696]) 232209.233 +36.314%
SET rps 10 9 945313.000 (n=3, σ=5868.597, CV=0.62%, CI99%=±3.557%, PI99%=±7.115%, CI[911685.290, 978940.710], PI[878057.580, 1012568.420]) 1800623.583 (n=3, σ=28371.297, CV=1.58%, CI99%=±9.029%, PI99%=±18.057%, CI[1638052.905, 1963194.262], PI[1475482.226, 2125764.941]) 855310.583 +90.479%

roshkhatri pushed a commit that referenced this pull request Oct 14, 2025
With valkey-io#1401, we introduced additional filters to CLIENT LIST/KILL
subcommand. The intended behavior was to pick the last value of the
filter. However, we introduced memory leak for all the preceding
filters.

Before this change:
```
> CLIENT LIST IP 127.0.0.1 IP 127.0.0.1
id=4 addr=127.0.0.1:37866 laddr=127.0.0.1:6379 fd=10 name= age=0 idle=0 flags=N capa= db=0 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=0 qbuf-free=0 argv-mem=21 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=16989 events=r cmd=client|list user=default redir=-1 resp=2 lib-name= lib-ver= tot-net-in=49 tot-net-out=0 tot-cmds=0
```
Leak:
```
Direct leak of 11 byte(s) in 1 object(s) allocated from:
    #0 0x7f2901aa557d in malloc (/lib64/libasan.so.4+0xd857d)
    #1 0x76db76 in ztrymalloc_usable_internal /workplace/harkrisp/valkey/src/zmalloc.c:156
    #2 0x76db76 in zmalloc_usable /workplace/harkrisp/valkey/src/zmalloc.c:200
    #3 0x4c4121 in _sdsnewlen.constprop.230 /workplace/harkrisp/valkey/src/sds.c:113
    valkey-io#4 0x4dc456 in parseClientFiltersOrReply.constprop.63 /workplace/harkrisp/valkey/src/networking.c:4264
    valkey-io#5 0x4bb9f7 in clientListCommand /workplace/harkrisp/valkey/src/networking.c:4600
    valkey-io#6 0x641159 in call /workplace/harkrisp/valkey/src/server.c:3772
    valkey-io#7 0x6431a6 in processCommand /workplace/harkrisp/valkey/src/server.c:4434
    valkey-io#8 0x4bfa9b in processCommandAndResetClient /workplace/harkrisp/valkey/src/networking.c:3571
    valkey-io#9 0x4bfa9b in processInputBuffer /workplace/harkrisp/valkey/src/networking.c:3702
    valkey-io#10 0x4bffa3 in readQueryFromClient /workplace/harkrisp/valkey/src/networking.c:3812
    valkey-io#11 0x481015 in callHandler /workplace/harkrisp/valkey/src/connhelpers.h:79
    valkey-io#12 0x481015 in connSocketEventHandler.lto_priv.394 /workplace/harkrisp/valkey/src/socket.c:301
    valkey-io#13 0x7d3fb3 in aeProcessEvents /workplace/harkrisp/valkey/src/ae.c:486
    valkey-io#14 0x7d4d44 in aeMain /workplace/harkrisp/valkey/src/ae.c:543
    valkey-io#15 0x453925 in main /workplace/harkrisp/valkey/src/server.c:7319
    valkey-io#16 0x7f2900cd7139 in __libc_start_main (/lib64/libc.so.6+0x21139)
```

Note: For filter ID / NOT-ID we group all the option and perform
filtering whereas for remaining filters we only pick the last filter
option.

---------

Signed-off-by: Harkrishn Patro <harkrisp@amazon.com>
@github-actions
Copy link

Multi-Architecture Benchmark Comparison: 8.1 vs 9.0

Versions Compared:

  • Version 1: 8.1
  • Version 2: 9.0

Runs: 3 per configuration
Workflow Run: View Details


X86 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 6 total runs, 2 configurations (avg 3.00 runs per config)
  • 9.0: 6 total runs, 2 configurations (avg 3.00 runs per config)

Statistical Notes:

  • CI99%: 99% Confidence Interval - range where the true population mean is likely to fall
  • PI99%: 99% Prediction Interval - range where a single future observation is likely to fall
  • CV: Coefficient of Variation - relative variability (σ/μ × 100%)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, PI99%=±V%) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and 99% prediction interval margin of error ±V% of the mean. CI bounds [A, B] and PI bounds [C, D] show the actual interval ranges.

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 9 876096.853 (n=3, σ=10320.592, CV=1.18%, CI99%=±6.750%, PI99%=±13.500%, CI[816958.717, 935234.990], PI[757820.581, 994373.126]) 811770.790 (n=3, σ=27214.248, CV=3.35%, CI99%=±19.210%, PI99%=±38.420%, CI[655830.132, 967711.448], PI[499889.474, 1123652.106]) -64326.063 -7.342%
SET rps 1 9 862033.187 (n=3, σ=16192.761, CV=1.88%, CI99%=±10.764%, PI99%=±21.527%, CI[769246.871, 954819.503], PI[676460.555, 1047605.819]) 844936.000 (n=3, σ=13071.106, CV=1.55%, CI99%=±8.864%, PI99%=±17.729%, CI[770037.113, 919834.887], PI[695138.227, 994733.773]) -17097.187 -1.983%

ARM64 Architecture Results

Benchmark Comparison: 8.1 vs 9.0 (averaged) - rps metrics

Run Summary:

  • 8.1: 6 total runs, 2 configurations (avg 3.00 runs per config)
  • 9.0: 6 total runs, 2 configurations (avg 3.00 runs per config)

Statistical Notes:

  • CI99%: 99% Confidence Interval - range where the true population mean is likely to fall
  • PI99%: 99% Prediction Interval - range where a single future observation is likely to fall
  • CV: Coefficient of Variation - relative variability (σ/μ × 100%)

Note: Values with (n=X, σ=Y, CV=Z%, CI99%=±W%, PI99%=±V%) indicate averages from X runs with standard deviation Y, coefficient of variation Z%, 99% confidence interval margin of error ±W% of the mean, and 99% prediction interval margin of error ±V% of the mean. CI bounds [A, B] and PI bounds [C, D] show the actual interval ranges.

Configuration:

  • benchmark_mode: duration
  • clients: 1600
  • cluster_mode: False
  • data_size: 512
  • duration: 900
  • tls: False
  • valkey-benchmark-threads: 90
  • warmup: 180
Command Metric Pipeline io_threads 8.1 9.0 Diff % Change
GET rps 1 9 1307962.333 (n=3, σ=15035.678, CV=1.15%, CI99%=±6.587%, PI99%=±13.174%, CI[1221806.228, 1394118.438], PI[1135650.123, 1480274.543]) 1350811.790 (n=3, σ=7532.320, CV=0.56%, CI99%=±3.195%, PI99%=±6.390%, CI[1307650.758, 1393972.822], PI[1264489.727, 1437133.853]) 42849.457 +3.276%
SET rps 1 9 1394603.080 (n=3, σ=11819.239, CV=0.85%, CI99%=±4.856%, PI99%=±9.713%, CI[1326877.530, 1462328.630], PI[1259151.979, 1530054.181]) 1385707.583 (n=3, σ=10247.511, CV=0.74%, CI99%=±4.238%, PI99%=±8.475%, CI[1326988.212, 1444426.955], PI[1268268.840, 1503146.326]) -8895.497 -0.638%

roshkhatri pushed a commit that referenced this pull request Oct 16, 2025
With valkey-io#1401, we introduced additional filters to CLIENT LIST/KILL
subcommand. The intended behavior was to pick the last value of the
filter. However, we introduced memory leak for all the preceding
filters.

Before this change:
```
> CLIENT LIST IP 127.0.0.1 IP 127.0.0.1
id=4 addr=127.0.0.1:37866 laddr=127.0.0.1:6379 fd=10 name= age=0 idle=0 flags=N capa= db=0 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=0 qbuf-free=0 argv-mem=21 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=16989 events=r cmd=client|list user=default redir=-1 resp=2 lib-name= lib-ver= tot-net-in=49 tot-net-out=0 tot-cmds=0
```
Leak:
```
Direct leak of 11 byte(s) in 1 object(s) allocated from:
    #0 0x7f2901aa557d in malloc (/lib64/libasan.so.4+0xd857d)
    #1 0x76db76 in ztrymalloc_usable_internal /workplace/harkrisp/valkey/src/zmalloc.c:156
    #2 0x76db76 in zmalloc_usable /workplace/harkrisp/valkey/src/zmalloc.c:200
    #3 0x4c4121 in _sdsnewlen.constprop.230 /workplace/harkrisp/valkey/src/sds.c:113
    valkey-io#4 0x4dc456 in parseClientFiltersOrReply.constprop.63 /workplace/harkrisp/valkey/src/networking.c:4264
    valkey-io#5 0x4bb9f7 in clientListCommand /workplace/harkrisp/valkey/src/networking.c:4600
    valkey-io#6 0x641159 in call /workplace/harkrisp/valkey/src/server.c:3772
    valkey-io#7 0x6431a6 in processCommand /workplace/harkrisp/valkey/src/server.c:4434
    valkey-io#8 0x4bfa9b in processCommandAndResetClient /workplace/harkrisp/valkey/src/networking.c:3571
    valkey-io#9 0x4bfa9b in processInputBuffer /workplace/harkrisp/valkey/src/networking.c:3702
    valkey-io#10 0x4bffa3 in readQueryFromClient /workplace/harkrisp/valkey/src/networking.c:3812
    valkey-io#11 0x481015 in callHandler /workplace/harkrisp/valkey/src/connhelpers.h:79
    valkey-io#12 0x481015 in connSocketEventHandler.lto_priv.394 /workplace/harkrisp/valkey/src/socket.c:301
    valkey-io#13 0x7d3fb3 in aeProcessEvents /workplace/harkrisp/valkey/src/ae.c:486
    valkey-io#14 0x7d4d44 in aeMain /workplace/harkrisp/valkey/src/ae.c:543
    valkey-io#15 0x453925 in main /workplace/harkrisp/valkey/src/server.c:7319
    valkey-io#16 0x7f2900cd7139 in __libc_start_main (/lib64/libc.so.6+0x21139)
```

Note: For filter ID / NOT-ID we group all the option and perform
filtering whereas for remaining filters we only pick the last filter
option.

---------

Signed-off-by: Harkrishn Patro <harkrisp@amazon.com>
@roshkhatri roshkhatri closed this Nov 11, 2025
@roshkhatri roshkhatri deleted the test-pr-benchmarking branch November 11, 2025 20:31
roshkhatri pushed a commit that referenced this pull request Jan 21, 2026
…y-io#2257)

**Current state**
During `hashtableScanDefrag`, rehashing is paused to prevent entries
from moving, but the scan callback can still delete entries which
triggers `hashtableShrinkIfNeeded`. For example, the
`expireScanCallback` can delete expired entries.

**Issue**
This can cause the table to be resized and the old memory to be freed
while the scan is still accessing it, resulting in the following memory
access violation:

```
[err]: Sanitizer error: =================================================================
==46774==ERROR: AddressSanitizer: heap-use-after-free on address 0x611000003100 at pc 0x0000004704d3 bp 0x7fffcb062000 sp 0x7fffcb061ff0
READ of size 1 at 0x611000003100 thread T0
    #0 0x4704d2 in isPositionFilled /home/gusakovy/Projects/valkey/src/hashtable.c:422
    #1 0x478b45 in hashtableScanDefrag /home/gusakovy/Projects/valkey/src/hashtable.c:1768
    #2 0x4789c2 in hashtableScan /home/gusakovy/Projects/valkey/src/hashtable.c:1729
    #3 0x47e3ca in kvstoreScan /home/gusakovy/Projects/valkey/src/kvstore.c:402
    valkey-io#4 0x6d9040 in activeExpireCycle /home/gusakovy/Projects/valkey/src/expire.c:297
    valkey-io#5 0x4859d2 in databasesCron /home/gusakovy/Projects/valkey/src/server.c:1269
    valkey-io#6 0x486e92 in serverCron /home/gusakovy/Projects/valkey/src/server.c:1577
    valkey-io#7 0x4637dd in processTimeEvents /home/gusakovy/Projects/valkey/src/ae.c:370
    valkey-io#8 0x4643e3 in aeProcessEvents /home/gusakovy/Projects/valkey/src/ae.c:513
    valkey-io#9 0x4647ea in aeMain /home/gusakovy/Projects/valkey/src/ae.c:543
    valkey-io#10 0x4a61fc in main /home/gusakovy/Projects/valkey/src/server.c:7291
    valkey-io#11 0x7f471957c139 in __libc_start_main (/lib64/libc.so.6+0x21139)
    valkey-io#12 0x452e39 in _start (/local/home/gusakovy/Projects/valkey/src/valkey-server+0x452e39)

0x611000003100 is located 0 bytes inside of 256-byte region [0x611000003100,0x611000003200)
freed by thread T0 here:
    #0 0x7f471a34a1e5 in __interceptor_free (/lib64/libasan.so.4+0xd81e5)
    #1 0x4aefbc in zfree_internal /home/gusakovy/Projects/valkey/src/zmalloc.c:400
    #2 0x4aeff5 in valkey_free /home/gusakovy/Projects/valkey/src/zmalloc.c:415
    #3 0x4707d2 in rehashingCompleted /home/gusakovy/Projects/valkey/src/hashtable.c:456
    valkey-io#4 0x471b5b in resize /home/gusakovy/Projects/valkey/src/hashtable.c:656
    valkey-io#5 0x475bff in hashtableShrinkIfNeeded /home/gusakovy/Projects/valkey/src/hashtable.c:1272
    valkey-io#6 0x47704b in hashtablePop /home/gusakovy/Projects/valkey/src/hashtable.c:1448
    valkey-io#7 0x47716f in hashtableDelete /home/gusakovy/Projects/valkey/src/hashtable.c:1459
    valkey-io#8 0x480038 in kvstoreHashtableDelete /home/gusakovy/Projects/valkey/src/kvstore.c:847
    valkey-io#9 0x50c12c in dbGenericDeleteWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:490
    valkey-io#10 0x515f28 in deleteExpiredKeyAndPropagateWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:1831
    valkey-io#11 0x516103 in deleteExpiredKeyAndPropagate /home/gusakovy/Projects/valkey/src/db.c:1844
    valkey-io#12 0x6d8642 in activeExpireCycleTryExpire /home/gusakovy/Projects/valkey/src/expire.c:70
    valkey-io#13 0x6d8706 in expireScanCallback /home/gusakovy/Projects/valkey/src/expire.c:139
    valkey-io#14 0x478bd8 in hashtableScanDefrag /home/gusakovy/Projects/valkey/src/hashtable.c:1770
    valkey-io#15 0x4789c2 in hashtableScan /home/gusakovy/Projects/valkey/src/hashtable.c:1729
    valkey-io#16 0x47e3ca in kvstoreScan /home/gusakovy/Projects/valkey/src/kvstore.c:402
    valkey-io#17 0x6d9040 in activeExpireCycle /home/gusakovy/Projects/valkey/src/expire.c:297
    valkey-io#18 0x4859d2 in databasesCron /home/gusakovy/Projects/valkey/src/server.c:1269
    valkey-io#19 0x486e92 in serverCron /home/gusakovy/Projects/valkey/src/server.c:1577
    valkey-io#20 0x4637dd in processTimeEvents /home/gusakovy/Projects/valkey/src/ae.c:370
    valkey-io#21 0x4643e3 in aeProcessEvents /home/gusakovy/Projects/valkey/src/ae.c:513
    valkey-io#22 0x4647ea in aeMain /home/gusakovy/Projects/valkey/src/ae.c:543
    valkey-io#23 0x4a61fc in main /home/gusakovy/Projects/valkey/src/server.c:7291
    valkey-io#24 0x7f471957c139 in __libc_start_main (/lib64/libc.so.6+0x21139)

previously allocated by thread T0 here:
    #0 0x7f471a34a753 in __interceptor_calloc (/lib64/libasan.so.4+0xd8753)
    #1 0x4ae48c in ztrycalloc_usable_internal /home/gusakovy/Projects/valkey/src/zmalloc.c:214
    #2 0x4ae757 in valkey_calloc /home/gusakovy/Projects/valkey/src/zmalloc.c:257
    #3 0x4718fc in resize /home/gusakovy/Projects/valkey/src/hashtable.c:645
    valkey-io#4 0x475bff in hashtableShrinkIfNeeded /home/gusakovy/Projects/valkey/src/hashtable.c:1272
    valkey-io#5 0x47704b in hashtablePop /home/gusakovy/Projects/valkey/src/hashtable.c:1448
    valkey-io#6 0x47716f in hashtableDelete /home/gusakovy/Projects/valkey/src/hashtable.c:1459
    valkey-io#7 0x480038 in kvstoreHashtableDelete /home/gusakovy/Projects/valkey/src/kvstore.c:847
    valkey-io#8 0x50c12c in dbGenericDeleteWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:490
    valkey-io#9 0x515f28 in deleteExpiredKeyAndPropagateWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:1831
    valkey-io#10 0x516103 in deleteExpiredKeyAndPropagate /home/gusakovy/Projects/valkey/src/db.c:1844
    valkey-io#11 0x6d8642 in activeExpireCycleTryExpire /home/gusakovy/Projects/valkey/src/expire.c:70
    valkey-io#12 0x6d8706 in expireScanCallback /home/gusakovy/Projects/valkey/src/expire.c:139
    valkey-io#13 0x478bd8 in hashtableScanDefrag /home/gusakovy/Projects/valkey/src/hashtable.c:1770
    valkey-io#14 0x4789c2 in hashtableScan /home/gusakovy/Projects/valkey/src/hashtable.c:1729
    valkey-io#15 0x47e3ca in kvstoreScan /home/gusakovy/Projects/valkey/src/kvstore.c:402
    valkey-io#16 0x6d9040 in activeExpireCycle /home/gusakovy/Projects/valkey/src/expire.c:297
    valkey-io#17 0x4859d2 in databasesCron /home/gusakovy/Projects/valkey/src/server.c:1269
    valkey-io#18 0x486e92 in serverCron /home/gusakovy/Projects/valkey/src/server.c:1577
    valkey-io#19 0x4637dd in processTimeEvents /home/gusakovy/Projects/valkey/src/ae.c:370
    valkey-io#20 0x4643e3 in aeProcessEvents /home/gusakovy/Projects/valkey/src/ae.c:513
    valkey-io#21 0x4647ea in aeMain /home/gusakovy/Projects/valkey/src/ae.c:543
    valkey-io#22 0x4a61fc in main /home/gusakovy/Projects/valkey/src/server.c:7291
    valkey-io#23 0x7f471957c139 in __libc_start_main (/lib64/libc.so.6+0x21139)

SUMMARY: AddressSanitizer: heap-use-after-free /home/gusakovy/Projects/valkey/src/hashtable.c:422 in isPositionFilled
Shadow bytes around the buggy address:
  0x0c227fff85d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff85e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff85f0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x0c227fff8600: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff8610: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
=>0x0c227fff8620:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff8630: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff8640: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c227fff8650: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c227fff8660: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c227fff8670: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==46774==ABORTING
```


**Solution**
Suggested solution is to also pause auto shrinking during
`hashtableScanDefrag`. I noticed that there was already a
`hashtablePauseAutoShrink` method and `pause_auto_shrink` counter, but
it wasn't actually used in `hashtableShrinkIfNeeded` so I fixed that.

**Testing**
I created a simple tcl test that (most of the times) triggers this
error, but it's a little clunky so I didn't add it as part of the PR:

```
start_server {tags {"expire hashtable defrag"}} {
    test {hashtable scan defrag on expiry} {

        r config set hz 100

        set num_keys 20
        for {set i 0} {$i < $num_keys} {incr i} {
            r set "key_$i" "value_$i"
        }

        for {set j 0} {$j < 50} {incr j} {
            set expire_keys 100
            for {set i 0} {$i < $expire_keys} {incr i} {
                # Short expiry time to ensure they expire quickly
                r psetex "expire_key_${i}_${j}" 100 "expire_value_${i}_${j}"
            }

            # Verify keys are set
            set initial_size [r dbsize]
            assert_equal $initial_size [expr $num_keys + $expire_keys]
            
            after 150
            for {set i 0} {$i < 10} {incr i} {
                r get "expire_key_${i}_${j}"
                after 10
            }
        }

        set remaining_keys [r dbsize]
        assert_equal $remaining_keys $num_keys

        # Verify server is still responsive
        assert_equal [r ping] {PONG}
    } {}
}
```
Compiling with ASAN using `make noopt SANITIZER=address valkey-server`
and running the test causes error above. Applying the fix resolves the
issue.

Signed-off-by: Yakov Gusakov <yaakov0015@gmail.com>
roshkhatri pushed a commit that referenced this pull request Jan 29, 2026
…y-io#2257)

**Current state**
During `hashtableScanDefrag`, rehashing is paused to prevent entries
from moving, but the scan callback can still delete entries which
triggers `hashtableShrinkIfNeeded`. For example, the
`expireScanCallback` can delete expired entries.

**Issue**
This can cause the table to be resized and the old memory to be freed
while the scan is still accessing it, resulting in the following memory
access violation:

```
[err]: Sanitizer error: =================================================================
==46774==ERROR: AddressSanitizer: heap-use-after-free on address 0x611000003100 at pc 0x0000004704d3 bp 0x7fffcb062000 sp 0x7fffcb061ff0
READ of size 1 at 0x611000003100 thread T0
    #0 0x4704d2 in isPositionFilled /home/gusakovy/Projects/valkey/src/hashtable.c:422
    #1 0x478b45 in hashtableScanDefrag /home/gusakovy/Projects/valkey/src/hashtable.c:1768
    #2 0x4789c2 in hashtableScan /home/gusakovy/Projects/valkey/src/hashtable.c:1729
    #3 0x47e3ca in kvstoreScan /home/gusakovy/Projects/valkey/src/kvstore.c:402
    valkey-io#4 0x6d9040 in activeExpireCycle /home/gusakovy/Projects/valkey/src/expire.c:297
    valkey-io#5 0x4859d2 in databasesCron /home/gusakovy/Projects/valkey/src/server.c:1269
    valkey-io#6 0x486e92 in serverCron /home/gusakovy/Projects/valkey/src/server.c:1577
    valkey-io#7 0x4637dd in processTimeEvents /home/gusakovy/Projects/valkey/src/ae.c:370
    valkey-io#8 0x4643e3 in aeProcessEvents /home/gusakovy/Projects/valkey/src/ae.c:513
    valkey-io#9 0x4647ea in aeMain /home/gusakovy/Projects/valkey/src/ae.c:543
    valkey-io#10 0x4a61fc in main /home/gusakovy/Projects/valkey/src/server.c:7291
    valkey-io#11 0x7f471957c139 in __libc_start_main (/lib64/libc.so.6+0x21139)
    valkey-io#12 0x452e39 in _start (/local/home/gusakovy/Projects/valkey/src/valkey-server+0x452e39)

0x611000003100 is located 0 bytes inside of 256-byte region [0x611000003100,0x611000003200)
freed by thread T0 here:
    #0 0x7f471a34a1e5 in __interceptor_free (/lib64/libasan.so.4+0xd81e5)
    #1 0x4aefbc in zfree_internal /home/gusakovy/Projects/valkey/src/zmalloc.c:400
    #2 0x4aeff5 in valkey_free /home/gusakovy/Projects/valkey/src/zmalloc.c:415
    #3 0x4707d2 in rehashingCompleted /home/gusakovy/Projects/valkey/src/hashtable.c:456
    valkey-io#4 0x471b5b in resize /home/gusakovy/Projects/valkey/src/hashtable.c:656
    valkey-io#5 0x475bff in hashtableShrinkIfNeeded /home/gusakovy/Projects/valkey/src/hashtable.c:1272
    valkey-io#6 0x47704b in hashtablePop /home/gusakovy/Projects/valkey/src/hashtable.c:1448
    valkey-io#7 0x47716f in hashtableDelete /home/gusakovy/Projects/valkey/src/hashtable.c:1459
    valkey-io#8 0x480038 in kvstoreHashtableDelete /home/gusakovy/Projects/valkey/src/kvstore.c:847
    valkey-io#9 0x50c12c in dbGenericDeleteWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:490
    valkey-io#10 0x515f28 in deleteExpiredKeyAndPropagateWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:1831
    valkey-io#11 0x516103 in deleteExpiredKeyAndPropagate /home/gusakovy/Projects/valkey/src/db.c:1844
    valkey-io#12 0x6d8642 in activeExpireCycleTryExpire /home/gusakovy/Projects/valkey/src/expire.c:70
    valkey-io#13 0x6d8706 in expireScanCallback /home/gusakovy/Projects/valkey/src/expire.c:139
    valkey-io#14 0x478bd8 in hashtableScanDefrag /home/gusakovy/Projects/valkey/src/hashtable.c:1770
    valkey-io#15 0x4789c2 in hashtableScan /home/gusakovy/Projects/valkey/src/hashtable.c:1729
    valkey-io#16 0x47e3ca in kvstoreScan /home/gusakovy/Projects/valkey/src/kvstore.c:402
    valkey-io#17 0x6d9040 in activeExpireCycle /home/gusakovy/Projects/valkey/src/expire.c:297
    valkey-io#18 0x4859d2 in databasesCron /home/gusakovy/Projects/valkey/src/server.c:1269
    valkey-io#19 0x486e92 in serverCron /home/gusakovy/Projects/valkey/src/server.c:1577
    valkey-io#20 0x4637dd in processTimeEvents /home/gusakovy/Projects/valkey/src/ae.c:370
    valkey-io#21 0x4643e3 in aeProcessEvents /home/gusakovy/Projects/valkey/src/ae.c:513
    valkey-io#22 0x4647ea in aeMain /home/gusakovy/Projects/valkey/src/ae.c:543
    valkey-io#23 0x4a61fc in main /home/gusakovy/Projects/valkey/src/server.c:7291
    valkey-io#24 0x7f471957c139 in __libc_start_main (/lib64/libc.so.6+0x21139)

previously allocated by thread T0 here:
    #0 0x7f471a34a753 in __interceptor_calloc (/lib64/libasan.so.4+0xd8753)
    #1 0x4ae48c in ztrycalloc_usable_internal /home/gusakovy/Projects/valkey/src/zmalloc.c:214
    #2 0x4ae757 in valkey_calloc /home/gusakovy/Projects/valkey/src/zmalloc.c:257
    #3 0x4718fc in resize /home/gusakovy/Projects/valkey/src/hashtable.c:645
    valkey-io#4 0x475bff in hashtableShrinkIfNeeded /home/gusakovy/Projects/valkey/src/hashtable.c:1272
    valkey-io#5 0x47704b in hashtablePop /home/gusakovy/Projects/valkey/src/hashtable.c:1448
    valkey-io#6 0x47716f in hashtableDelete /home/gusakovy/Projects/valkey/src/hashtable.c:1459
    valkey-io#7 0x480038 in kvstoreHashtableDelete /home/gusakovy/Projects/valkey/src/kvstore.c:847
    valkey-io#8 0x50c12c in dbGenericDeleteWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:490
    valkey-io#9 0x515f28 in deleteExpiredKeyAndPropagateWithDictIndex /home/gusakovy/Projects/valkey/src/db.c:1831
    valkey-io#10 0x516103 in deleteExpiredKeyAndPropagate /home/gusakovy/Projects/valkey/src/db.c:1844
    valkey-io#11 0x6d8642 in activeExpireCycleTryExpire /home/gusakovy/Projects/valkey/src/expire.c:70
    valkey-io#12 0x6d8706 in expireScanCallback /home/gusakovy/Projects/valkey/src/expire.c:139
    valkey-io#13 0x478bd8 in hashtableScanDefrag /home/gusakovy/Projects/valkey/src/hashtable.c:1770
    valkey-io#14 0x4789c2 in hashtableScan /home/gusakovy/Projects/valkey/src/hashtable.c:1729
    valkey-io#15 0x47e3ca in kvstoreScan /home/gusakovy/Projects/valkey/src/kvstore.c:402
    valkey-io#16 0x6d9040 in activeExpireCycle /home/gusakovy/Projects/valkey/src/expire.c:297
    valkey-io#17 0x4859d2 in databasesCron /home/gusakovy/Projects/valkey/src/server.c:1269
    valkey-io#18 0x486e92 in serverCron /home/gusakovy/Projects/valkey/src/server.c:1577
    valkey-io#19 0x4637dd in processTimeEvents /home/gusakovy/Projects/valkey/src/ae.c:370
    valkey-io#20 0x4643e3 in aeProcessEvents /home/gusakovy/Projects/valkey/src/ae.c:513
    valkey-io#21 0x4647ea in aeMain /home/gusakovy/Projects/valkey/src/ae.c:543
    valkey-io#22 0x4a61fc in main /home/gusakovy/Projects/valkey/src/server.c:7291
    valkey-io#23 0x7f471957c139 in __libc_start_main (/lib64/libc.so.6+0x21139)

SUMMARY: AddressSanitizer: heap-use-after-free /home/gusakovy/Projects/valkey/src/hashtable.c:422 in isPositionFilled
Shadow bytes around the buggy address:
  0x0c227fff85d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff85e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff85f0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x0c227fff8600: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff8610: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
=>0x0c227fff8620:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff8630: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c227fff8640: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c227fff8650: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c227fff8660: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c227fff8670: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==46774==ABORTING
```


**Solution**
Suggested solution is to also pause auto shrinking during
`hashtableScanDefrag`. I noticed that there was already a
`hashtablePauseAutoShrink` method and `pause_auto_shrink` counter, but
it wasn't actually used in `hashtableShrinkIfNeeded` so I fixed that.

**Testing**
I created a simple tcl test that (most of the times) triggers this
error, but it's a little clunky so I didn't add it as part of the PR:

```
start_server {tags {"expire hashtable defrag"}} {
    test {hashtable scan defrag on expiry} {

        r config set hz 100

        set num_keys 20
        for {set i 0} {$i < $num_keys} {incr i} {
            r set "key_$i" "value_$i"
        }

        for {set j 0} {$j < 50} {incr j} {
            set expire_keys 100
            for {set i 0} {$i < $expire_keys} {incr i} {
                # Short expiry time to ensure they expire quickly
                r psetex "expire_key_${i}_${j}" 100 "expire_value_${i}_${j}"
            }

            # Verify keys are set
            set initial_size [r dbsize]
            assert_equal $initial_size [expr $num_keys + $expire_keys]
            
            after 150
            for {set i 0} {$i < 10} {incr i} {
                r get "expire_key_${i}_${j}"
                after 10
            }
        }

        set remaining_keys [r dbsize]
        assert_equal $remaining_keys $num_keys

        # Verify server is still responsive
        assert_equal [r ping] {PONG}
    } {}
}
```
Compiling with ASAN using `make noopt SANITIZER=address valkey-server`
and running the test causes error above. Applying the fix resolves the
issue.

Signed-off-by: Yakov Gusakov <yaakov0015@gmail.com>
roshkhatri pushed a commit that referenced this pull request Jan 29, 2026
We are updating this variable in the main thread, and the
child threads can printing the logs at the same time. This
generating a warning in SANITIZER=thread:
```
WARNING: ThreadSanitizer: data race (pid=74208)
  Read of size 4 at 0x000102875c10 by thread T3:
    #0 serverLogRaw <null>:52173615 (valkey-server:x86_64+0x10003c556)
    #1 _serverLog <null>:52173615 (valkey-server:x86_64+0x10003ca89)
    #2 bioProcessBackgroundJobs <null>:52173615 (valkey-server:x86_64+0x1001402c9)

  Previous write of size 4 at 0x000102875c10 by main thread (mutexes: write M0):
    #0 afterSleep <null>:52173615 (valkey-server:x86_64+0x10004989b)
    #1 aeProcessEvents <null>:52173615 (valkey-server:x86_64+0x100031e52)
    #2 main <null>:52173615 (valkey-server:x86_64+0x100064a3c)
    #3 start <null>:52173615 (dyld:x86_64+0xfffffffffff5c365)
    valkey-io#4 start <null>:52173615 (dyld:x86_64+0xfffffffffff5c365)
```

The refresh of daylight_active is not real time, we update
it in aftersleep, so we don't need a strong synchronization,
so using memory_order_relaxed. But also noted we are doing
load/store operations only for daylight_active, which is an
aligned 32-bit integer, so using memory_order_relaxed will
not provide more consistency than what we have today.

So this is just a cleanup that to clear the warning.

Signed-off-by: Binbin <binloveplay1314@qq.com>
roshkhatri pushed a commit that referenced this pull request Feb 16, 2026
…lkey-io#3174)

I was working on ASAN large memory tests when I countered this issue.

The issue was that the hardcoded `999` key could land in an early
bucket. Then shrink rehash could finish early, and later inserts could
trigger a new expansion rehash, resetting rehash_idx low. The test now
picks the survivor key dynamically as the key mapped to the highest
bucket index.

```
[test_hashtable.c] Memory leak detected of 336 bytes
=================================================================
==3901==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 80 byte(s) in 1 object(s) allocated from:
    #0 0x7fb0556fd9c7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x563bfdf4c47d in ztrymalloc_usable_internal /home/runner/work/valkey/valkey/src/zmalloc.c:156
    #2 0x563bfdf4c47d in valkey_malloc /home/runner/work/valkey/valkey/src/zmalloc.c:185
    #3 0x563bfdd42eaf in hashtableCreate /home/runner/work/valkey/valkey/src/hashtable.c:1217
    valkey-io#4 0x563bfdaa1cbf in test_empty_buckets_rehashing unit/test_hashtable.c:232
    valkey-io#5 0x563bfdae772b in runTestSuite unit/test_main.c:36
    valkey-io#6 0x563bfda86b20 in main unit/test_main.c:108
    valkey-io#7 0x7fb05522a1c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#8 0x7fb05522a28a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#9 0x563bfda8a5c4 in _start (/home/runner/work/valkey/valkey/src/valkey-unit-tests+0x17c5c4) (BuildId: 44cfc183e6e82e499bcc9f6adc094d7f774ee9d2)

Indirect leak of 128 byte(s) in 1 object(s) allocated from:
    #0 0x7fb0556fd340 in calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
    #1 0x563bfdf4c922 in ztrycalloc_usable_internal /home/runner/work/valkey/valkey/src/zmalloc.c:214
    #2 0x563bfdf4c922 in valkey_calloc /home/runner/work/valkey/valkey/src/zmalloc.c:257
    #3 0x563bfdd40967 in resize /home/runner/work/valkey/valkey/src/hashtable.c:741
    valkey-io#4 0x563bfdd45eb1 in hashtableExpandIfNeeded /home/runner/work/valkey/valkey/src/hashtable.c:1446
    valkey-io#5 0x563bfdd45eb1 in hashtableExpandIfNeeded /home/runner/work/valkey/valkey/src/hashtable.c:1433
    valkey-io#6 0x563bfdd45eb1 in insert /home/runner/work/valkey/valkey/src/hashtable.c:1041
    valkey-io#7 0x563bfdd45eb1 in hashtableAddOrFind /home/runner/work/valkey/valkey/src/hashtable.c:1554
    valkey-io#8 0x563bfdd45eb1 in hashtableAdd /home/runner/work/valkey/valkey/src/hashtable.c:1539
    valkey-io#9 0x563bfdaa1e3b in test_empty_buckets_rehashing unit/test_hashtable.c:254
    valkey-io#10 0x563bfdae772b in runTestSuite unit/test_main.c:36
    valkey-io#11 0x563bfda86b20 in main unit/test_main.c:108
    valkey-io#12 0x7fb05522a1c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#13 0x7fb05522a28a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#14 0x563bfda8a5c4 in _start (/home/runner/work/valkey/valkey/src/valkey-unit-tests+0x17c5c4) (BuildId: 44cfc183e6e82e499bcc9f6adc094d7f774ee9d2)

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x7fb0556fd340 in calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
    #1 0x563bfdf4c922 in ztrycalloc_usable_internal /home/runner/work/valkey/valkey/src/zmalloc.c:214
    #2 0x563bfdf4c922 in valkey_calloc /home/runner/work/valkey/valkey/src/zmalloc.c:257
    #3 0x563bfdd3f553 in bucketConvertToChained /home/runner/work/valkey/valkey/src/hashtable.c:908
    valkey-io#4 0x563bfdd3f553 in findBucketForInsert /home/runner/work/valkey/valkey/src/hashtable.c:1021
    valkey-io#5 0x563bfdd45d9e in insert /home/runner/work/valkey/valkey/src/hashtable.c:1045
    valkey-io#6 0x563bfdd45d9e in hashtableAddOrFind /home/runner/work/valkey/valkey/src/hashtable.c:1554
    valkey-io#7 0x563bfdd45d9e in hashtableAdd /home/runner/work/valkey/valkey/src/hashtable.c:1539
    valkey-io#8 0x563bfdaa1e3b in test_empty_buckets_rehashing unit/test_hashtable.c:254
    valkey-io#9 0x563bfdae772b in runTestSuite unit/test_main.c:36
    valkey-io#10 0x563bfda86b20 in main unit/test_main.c:108
    valkey-io#11 0x7fb05522a1c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#12 0x7fb05522a28a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#13 0x563bfda8a5c4 in _start (/home/runner/work/valkey/valkey/src/valkey-unit-tests+0x17c5c4) (BuildId: 44cfc183e6e82e499bcc9f6adc094d7f774ee9d2)

Indirect leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x7fb0556fd340 in calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
    #1 0x563bfdf4c922 in ztrycalloc_usable_internal /home/runner/work/valkey/valkey/src/zmalloc.c:214
    #2 0x563bfdf4c922 in valkey_calloc /home/runner/work/valkey/valkey/src/zmalloc.c:257
    #3 0x563bfdd40967 in resize /home/runner/work/valkey/valkey/src/hashtable.c:741
    valkey-io#4 0x563bfdaa1df8 in test_empty_buckets_rehashing unit/test_hashtable.c:248
    valkey-io#5 0x563bfdae772b in runTestSuite unit/test_main.c:36
    valkey-io#6 0x563bfda86b20 in main unit/test_main.c:108
    valkey-io#7 0x7fb05522a1c9  (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#8 0x7fb05522a28a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 274eec488d230825a136fa9c4d85370fed7a0a5e)
    valkey-io#9 0x563bfda8a5c4 in _start (/home/runner/work/valkey/valkey/src/valkey-unit-tests+0x17c5c4) (BuildId: 44cfc183e6e82e499bcc9f6adc094d7f774ee9d2)

SUMMARY: AddressSanitizer: 336 byte(s) leaked in 4 allocation(s).
```

Signed-off-by: Sarthak Aggarwal <sarthagg@amazon.com>
roshkhatri pushed a commit that referenced this pull request Feb 17, 2026
With valkey-io#1401, we introduced additional filters to CLIENT LIST/KILL
subcommand. The intended behavior was to pick the last value of the
filter. However, we introduced memory leak for all the preceding
filters.

Before this change:
```
> CLIENT LIST IP 127.0.0.1 IP 127.0.0.1
id=4 addr=127.0.0.1:37866 laddr=127.0.0.1:6379 fd=10 name= age=0 idle=0 flags=N capa= db=0 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=0 qbuf-free=0 argv-mem=21 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=16989 events=r cmd=client|list user=default redir=-1 resp=2 lib-name= lib-ver= tot-net-in=49 tot-net-out=0 tot-cmds=0
```
Leak:
```
Direct leak of 11 byte(s) in 1 object(s) allocated from:
    #0 0x7f2901aa557d in malloc (/lib64/libasan.so.4+0xd857d)
    #1 0x76db76 in ztrymalloc_usable_internal /workplace/harkrisp/valkey/src/zmalloc.c:156
    #2 0x76db76 in zmalloc_usable /workplace/harkrisp/valkey/src/zmalloc.c:200
    #3 0x4c4121 in _sdsnewlen.constprop.230 /workplace/harkrisp/valkey/src/sds.c:113
    valkey-io#4 0x4dc456 in parseClientFiltersOrReply.constprop.63 /workplace/harkrisp/valkey/src/networking.c:4264
    valkey-io#5 0x4bb9f7 in clientListCommand /workplace/harkrisp/valkey/src/networking.c:4600
    valkey-io#6 0x641159 in call /workplace/harkrisp/valkey/src/server.c:3772
    valkey-io#7 0x6431a6 in processCommand /workplace/harkrisp/valkey/src/server.c:4434
    valkey-io#8 0x4bfa9b in processCommandAndResetClient /workplace/harkrisp/valkey/src/networking.c:3571
    valkey-io#9 0x4bfa9b in processInputBuffer /workplace/harkrisp/valkey/src/networking.c:3702
    valkey-io#10 0x4bffa3 in readQueryFromClient /workplace/harkrisp/valkey/src/networking.c:3812
    valkey-io#11 0x481015 in callHandler /workplace/harkrisp/valkey/src/connhelpers.h:79
    valkey-io#12 0x481015 in connSocketEventHandler.lto_priv.394 /workplace/harkrisp/valkey/src/socket.c:301
    valkey-io#13 0x7d3fb3 in aeProcessEvents /workplace/harkrisp/valkey/src/ae.c:486
    valkey-io#14 0x7d4d44 in aeMain /workplace/harkrisp/valkey/src/ae.c:543
    valkey-io#15 0x453925 in main /workplace/harkrisp/valkey/src/server.c:7319
    valkey-io#16 0x7f2900cd7139 in __libc_start_main (/lib64/libc.so.6+0x21139)
```

Note: For filter ID / NOT-ID we group all the option and perform
filtering whereas for remaining filters we only pick the last filter
option.

---------

Signed-off-by: Harkrishn Patro <harkrisp@amazon.com>
(cherry picked from commit 155b0bb)
Signed-off-by: cherukum-amazon <cherukum@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant