Skip to content
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

Replication #69

Merged
merged 37 commits into from
May 22, 2023
Merged

Conversation

aratz-lasa
Copy link
Collaborator

@aratz-lasa aratz-lasa commented May 13, 2023

Pull Request Description:

This pull request implements actor replication in the NOLA system. The main goal is to ensure actors' availability and load balancing by replicating them across multiple servers. The code diff includes the following changes:

  1. Refactored the EnsureActivation method in the kvRegistry struct to improve readability and maintainability.
  2. Refactored the helper function pickServersForActivation to select multiple servers, instead of a single one, for actor activation based on various criteria such as memory usage, activation count, blacklisting, and caching.
  3. Updated the comments to explain the replication logic and code behavior clearer.
  4. Added the pickServersForActivation function to randomly choose the servers for actor activation.
  5. Added the ExtraReplicas field to the EnsureActivationRequest struct. This field specifies the desired number of additional replicas to be created during actor activation in addition to the primary replica.
  6. Moved the ExtraReplicas field from the ActorOptions struct to the EnsureActivationRequest struct. This change aligns the field with its usage in the EnsureActivation method and ensures consistency in the codebase.

Additionally, the code changes include improvements to handle server blacklisting in the ensureActivation method. The logic ensures that if the current request specifies blacklisted servers and any of those servers are not marked as blacklisted in the cache, the cache is refreshed to prevent routing back to blacklisted server IDs. The code also filters the cached references to exclude blacklisted servers for subsequent processing.

Most interesting files to review:

  • virtual/registry/kvregistry.go
  • virtual/activation_cache.go
  • virtual/environment.go

@aratz-lasa aratz-lasa changed the title make KV EnsureActivation return multiple results Replication May 13, 2023
@aratz-lasa aratz-lasa marked this pull request as ready for review May 15, 2023 02:55
virtual/activation_cache.go Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/registry/kv_registry.go Outdated Show resolved Hide resolved
virtual/registry/kv_registry.go Outdated Show resolved Hide resolved
virtual/registry/test_common.go Outdated Show resolved Hide resolved
virtual/types/types.go Outdated Show resolved Hide resolved
virtual/registry/types.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Outdated Show resolved Hide resolved
virtual/activation_cache.go Show resolved Hide resolved
virtual/types/ref.go Show resolved Hide resolved
virtual/types/ref.go Outdated Show resolved Hide resolved
virtual/types/ref.go Outdated Show resolved Hide resolved
virtual/types/ref.go Outdated Show resolved Hide resolved
virtual/types/ref.go Outdated Show resolved Hide resolved
Copy link
Owner

@richardartoul richardartoul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a few small nits but ill fix them in a manual push to master

@richardartoul richardartoul merged commit c49635e into richardartoul:master May 22, 2023
1 check passed
@richardartoul
Copy link
Owner

Fixing nits here: https://github.com/richardartoul/nola/pull/77/files

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.

None yet

2 participants