-
Notifications
You must be signed in to change notification settings - Fork 15
Custom responses for cluster commands #260
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
5023075 to
2bc45cb
Compare
Signed-off-by: Nilanshu Sharma <nilanshu_sharma@apple.com>
Signed-off-by: Nilanshu Sharma <nilanshu_sharma@apple.com>
2bc45cb to
cbe091e
Compare
|
✅ Pull request no significant performance differences ✅ SummaryNew baseline 'pull_request' is WITHIN the 'main' baseline thresholds. Full Benchmark ComparisonComparing results between 'main' and 'pull_request'ValkeyBenchmarksClient: GET benchmark metricsMalloc (total): results within specified thresholds, fold down for details.
Client: GET benchmark | parallel 20 | 20 concurrent connections metricsMalloc (total): results within specified thresholds, fold down for details.
Connection: GET benchmark metricsMalloc (total): results within specified thresholds, fold down for details.
Connection: GET benchmark – NoOpTracer metricsMalloc (total): results within specified thresholds, fold down for details.
Connection: Pipeline array benchmark metricsMalloc (total): results within specified thresholds, fold down for details.
Connection: Pipeline benchmark metricsMalloc (total): results within specified thresholds, fold down for details.
HashSlot – {user}.whatever metricsMalloc (total): results within specified thresholds, fold down for details.
ValkeyCommandEncoder – Command with 7 words metricsMalloc (total): results within specified thresholds, fold down for details.
ValkeyCommandEncoder – Simple GET metricsMalloc (total): results within specified thresholds, fold down for details.
ValkeyCommandEncoder – Simple MGET 15 keys metricsMalloc (total): results within specified thresholds, fold down for details.
|
Signed-off-by: Nilanshu Sharma <nilanshu_sharma@apple.com>
Signed-off-by: Nilanshu Sharma <nilanshu_sharma@apple.com>
Signed-off-by: Nilanshu Sharma <nilanshu_sharma@apple.com>
Signed-off-by: Nilanshu Sharma <nilanshu_sharma@apple.com>
adam-fowler
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @nilanshu-sharma I've had a quick look at this on my phone. Hard to do a proper review on the phone, but see my comments related to errors thrown.
| case missingRequiredValueForNode | ||
| case shardIsMissingHashSlots | ||
| case shardIsMissingNode | ||
| case clusterLinksTokenIsNotAnArray |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer we use the standard RESPDecodeError here instead of extending this. I was hoping to get rid the cluster specific ValkeyClusterParseError and replace any instances of its use with RESPDecodeError.
| case from | ||
| } | ||
|
|
||
| private(set) var base: Base |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason this needs to be private(set)
| do { | ||
| self = try Self.makeClusterLink(respToken: respToken) | ||
| } catch { | ||
| throw ValkeyClusterParseError(reason: error, token: respToken) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you catching the errors thrown from decoding and wrapping them in another error?
| do { | ||
| self = try Self.makeClusterSlotStats(respToken: respToken) | ||
| } catch { | ||
| throw ValkeyClusterParseError(reason: error, token: respToken) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See above
| do { | ||
| self = try Self.makeClusterSlotRange(respToken: respToken) | ||
| } catch { | ||
| throw ValkeyClusterParseError(reason: error, token: respToken) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See above
adam-fowler
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A quick review from my iPhone
Change Summary:
Adding custom responses for the following commands:
Removing docker network to make cluster-mode valkey directly accessible to integration tests while testing locally on laptop.
Restoring platform availability macros causing builds to fail
Also realized that the Integration tests meant to cluster-mode features are not running in the CI, so CI needs to be enhanced to run cluster mode related docker dependencies. For now the verification of new integration tests is done locally.