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
Calculate vnodes on daprd instead of the placement service #7382
Calculate vnodes on daprd instead of the placement service #7382
Conversation
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
19e070b
to
f7adb0f
Compare
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## master #7382 +/- ##
==========================================
- Coverage 62.36% 62.34% -0.03%
==========================================
Files 240 240
Lines 22075 22154 +79
==========================================
+ Hits 13767 13811 +44
- Misses 7156 7186 +30
- Partials 1152 1157 +5 ☔ View full report in Codecov by Sentry. |
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.
This PR warms my heart because it addresses an obvious problem that nobody dared to point out AND fix. Thanks a lot.
@@ -90,7 +82,33 @@ func NewConsistentHash() *Consistent { | |||
} | |||
|
|||
// NewFromExisting creates a new consistent hash from existing values. | |||
func NewFromExisting(hosts map[uint64]string, sortedSet []uint64, loadMap map[string]*Host) *Consistent { | |||
func NewFromExisting(loadMap map[string]*Host, replicationFactor int) *Consistent { |
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 the old name is used for the new behavior? Am I missing something?
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.
So my thinking was that we rename the old behaviour to NewFromExistingWithVirtNodes
and then we remove it in the next version. And we keep the new behaviour with a name that's gonna read more naturally in this version, but also in the next ones.
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
I added caching for the virtual hosts. I'll be adding a few more tests today and also I'll fix the |
Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
…n of placement tables Signed-off-by: Elena Kolevska <elena@kolevska.com>
Signed-off-by: Elena Kolevska <elena@kolevska.com>
* Removes vnodes from placement table message Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds vnodes calculation on the sidecar Signed-off-by: Elena Kolevska <elena@kolevska.com> * Removes log line Signed-off-by: Elena Kolevska <elena@kolevska.com> * Backwards compatibility for placement tables without vnodes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Account for daprd at 1.13 and placement at < 1.13 Signed-off-by: Elena Kolevska <elena@kolevska.com> * Missed var Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds unit tests Signed-off-by: Elena Kolevska <elena@kolevska.com> * Cleaning up Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Small optimisation Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds caching for vnodes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update pkg/placement/hashing/consistent_hash.go Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com> * Fixes after review Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds unit test for the Virtual nodes cache Signed-off-by: Elena Kolevska <elena@kolevska.com> * lint fix Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update tests Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes linter errors Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds tests for actor service properly handling the old and new version of placement tables Signed-off-by: Elena Kolevska <elena@kolevska.com> * small improvement Signed-off-by: Elena Kolevska <elena@kolevska.com> --------- Signed-off-by: Elena Kolevska <elena@kolevska.com> Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com> Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
…apr#7382)" This reverts commit 4bea838. Signed-off-by: Elena Kolevska <elena@kolevska.com> # Conflicts: # pkg/actors/placement/client.go # pkg/actors/placement/client_test.go # pkg/placement/membership.go # tests/integration/suite/placement/apilevel/shared.go # tests/integration/suite/placement/authz/mtls.go # tests/integration/suite/placement/authz/nomtls.go # tests/integration/suite/placement/quorum/insecure.go # tests/integration/suite/placement/quorum/jwks.go # tests/integration/suite/placement/quorum/notls.go
* Removes vnodes from placement table message Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds vnodes calculation on the sidecar Signed-off-by: Elena Kolevska <elena@kolevska.com> * Removes log line Signed-off-by: Elena Kolevska <elena@kolevska.com> * Backwards compatibility for placement tables without vnodes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Account for daprd at 1.13 and placement at < 1.13 Signed-off-by: Elena Kolevska <elena@kolevska.com> * Missed var Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds unit tests Signed-off-by: Elena Kolevska <elena@kolevska.com> * Cleaning up Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Small optimisation Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds caching for vnodes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update pkg/placement/hashing/consistent_hash.go Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com> * Fixes after review Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds unit test for the Virtual nodes cache Signed-off-by: Elena Kolevska <elena@kolevska.com> * lint fix Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update tests Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes linter errors Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds tests for actor service properly handling the old and new version of placement tables Signed-off-by: Elena Kolevska <elena@kolevska.com> * small improvement Signed-off-by: Elena Kolevska <elena@kolevska.com> --------- Signed-off-by: Elena Kolevska <elena@kolevska.com> Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com> Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com>
* Removes vnodes from placement table message Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds vnodes calculation on the sidecar Signed-off-by: Elena Kolevska <elena@kolevska.com> * Removes log line Signed-off-by: Elena Kolevska <elena@kolevska.com> * Backwards compatibility for placement tables without vnodes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Account for daprd at 1.13 and placement at < 1.13 Signed-off-by: Elena Kolevska <elena@kolevska.com> * Missed var Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds unit tests Signed-off-by: Elena Kolevska <elena@kolevska.com> * Cleaning up Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Small optimisation Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds caching for vnodes Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update pkg/placement/hashing/consistent_hash.go Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com> * Fixes after review Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds unit test for the Virtual nodes cache Signed-off-by: Elena Kolevska <elena@kolevska.com> * lint fix Signed-off-by: Elena Kolevska <elena@kolevska.com> * Update tests Signed-off-by: Elena Kolevska <elena@kolevska.com> * Fixes linter errors Signed-off-by: Elena Kolevska <elena@kolevska.com> * Adds tests for actor service properly handling the old and new version of placement tables Signed-off-by: Elena Kolevska <elena@kolevska.com> * small improvement Signed-off-by: Elena Kolevska <elena@kolevska.com> --------- Signed-off-by: Elena Kolevska <elena@kolevska.com> Signed-off-by: Elena Kolevska <elena-kolevska@users.noreply.github.com> Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> Signed-off-by: Elena Kolevska <elena@kolevska.com>
Description
(Note: Please refer to the issue for the reason behind this PR)
This PR removes the vnodes and their sorted set from the placement table that's disseminated from the placement service to the dapr sidecars, and instead, it calculates them on the dapr sidecars.
It accounts for mismatch of versions in daprd/placement services (older daprd version with placement on 1.13+ and vice versa). In the next Dapr version we should be able to remove these checks and clean up the code.
A few notes that might help during the review:
replicationFactor
is an argument received on placement service startup, whose default value is 100.Issue reference
#7360
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:
N/A