cassandra optimize murmur hashing #1406
Merged
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.
This PR improves performance of get_replica_node_in_dc by having
calculate_routing_key
directly convert the query values into a murmur hash instead of returning an intermediate value allocated into aVec<u8>
.I very heavily referenced the scylla driver here as it is much more performant than the cdrs-tokio driver that the previous implementation was based off.
Unfortunately this PR brings a bunch of low level murmur hashing code into shotover, it would be nice if scylla driver exposed it but it feels like too much of a low level implementation detail to ask them to expose it. I think its still worth the performance win though.
I have verified that the changes to calculate_routing_key have reduced the total time spent in that function + dropping the return value.