Skip to content

Conversation

adam-fowler
Copy link
Collaborator

@adam-fowler adam-fowler commented Oct 14, 2025

Add transaction functionality to ValkeyClientCluster.

  • In ValkeyConnection extracted the transaction result processing into separate function _processTransactionPromises, so it can be used by both the original transaction function and the new transactionWithAsk function.
  • Removed duplicate code from ValkeyClientCluster.execute(_:)
  • Added transaction(_:) to ValkeyClientProtocol

This is currently set to merge into the transaction-rewrite branch to make it easier to see the changes.

Copy link

github-actions bot commented Oct 14, 2025

❌ Pull request has performance regressions ❌

Summary
================================================================================
Threshold deviations for ValkeyBenchmarks:Connection: GET benchmark – NoOpTracer
================================================================================
Malloc (total) (#, %) main pull_request Difference % Threshold %
p50 8383 9975 19 5

New baseline 'pull_request' is WORSE than the 'main' baseline thresholds.

Full Benchmark Comparison

Comparing results between 'main' and 'pull_request'

Host '318e8e8f9815' with 4 'x86_64' processors with 15 GB memory, running:
#12~24.04.1-Ubuntu SMP Tue Sep  9 19:01:23 UTC 2025

ValkeyBenchmarks

Client: GET benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 82 83 83 85 87 87 87 6
pull_request 81 86 87 87 88 88 88 6
Δ -1 3 4 2 1 1 1 0
Improvement % 1 -4 -5 -2 -1 -1 -1 0

Client: GET benchmark | parallel 20 | 20 concurrent connections metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 98 100 104 107 108 113 113 23
pull_request 96 100 103 104 109 110 110 23
Δ -2 0 -1 -3 1 -3 -3 0
Improvement % 2 0 1 3 -1 3 3 0

Connection: GET benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 4 4 4 4 4 4 4 8
pull_request 4 4 4 4 4 4 4 8
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

Connection: GET benchmark – NoOpTracer metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 7 8 8 10 10 10 10 8
pull_request 7 8 10 10 10 10 10 7
Δ 0 0 2 0 0 0 0 -1
Improvement % 0 0 -25 0 0 0 0 -1

Connection: Pipeline array benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 33 33 34 34 34 34 34 5
pull_request 33 33 34 34 34 34 34 6
Δ 0 0 0 0 0 0 0 1
Improvement % 0 0 0 0 0 0 0 1

Connection: Pipeline benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 33 33 33 34 34 34 34 5
pull_request 33 33 33 34 34 34 34 5
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

HashSlot – {user}.whatever metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 19
pull_request 0 0 0 0 0 0 0 16
Δ 0 0 0 0 0 0 0 -3
Improvement % 0 0 0 0 0 0 0 -3

ValkeyCommandEncoder – Command with 7 words metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 740
pull_request 0 0 0 0 0 0 0 738
Δ 0 0 0 0 0 0 0 -2
Improvement % 0 0 0 0 0 0 0 -2

ValkeyCommandEncoder – Simple GET metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 1902
pull_request 0 0 0 0 0 0 0 1882
Δ 0 0 0 0 0 0 0 -20
Improvement % 0 0 0 0 0 0 0 -20

ValkeyCommandEncoder – Simple MGET 15 keys metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 348
pull_request 0 0 0 0 0 0 0 358
Δ 0 0 0 0 0 0 0 10
Improvement % 0 0 0 0 0 0 0 10

@adam-fowler adam-fowler merged commit 5079b73 into main Oct 18, 2025
11 of 13 checks passed
@adam-fowler adam-fowler deleted the cluster-transaction branch October 18, 2025 14:30
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.

2 participants