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

Default membership and actor persistence #3

Open
cmeiklejohn opened this issue May 8, 2016 · 3 comments
Open

Default membership and actor persistence #3

cmeiklejohn opened this issue May 8, 2016 · 3 comments

Comments

@cmeiklejohn
Copy link
Member

The default membership for partisan does not persist the actor for a given instance of the peer service manager: this is something we inherited from Helium's peer service. Because of the use of the ORSWOT, this doesn't necessarily cause a huge problem: each node could potentially be added and removed by two actors, doubling the size complexity. This is based on the original restriction placed on the Plumtree peer service where an actor could only remove itself.

It probably makes the most sense to have a node, when coming back online with it's original state, preserve it's actor identifier.

@aramallo
Copy link
Collaborator

aramallo commented Jan 6, 2024

We could use a UUIDv5 to get a deterministic but unique ID based on some data. A UUIDv5 takes another UUID and a binary as input.

We could for example identify the cluster with a UUIDv4 value cluster_id, provided via config (think of it as equivalent to the disterl cookie). We then call UUID.v5(cluster_id, partisan:node())

@mcesaro
Copy link

mcesaro commented Jan 9, 2024

Would ULID https://github.com/savonarola/ulid work for this use case?

@aramallo
Copy link
Collaborator

@mcesaro ULIDs are like KSUIDs so they are not deterministic (they are based on a timestamp).

In this case, we would need to have the same actor ID as before, which would typically require some form of persistence. However, if we could use a deterministic ID based on some content, we could avoid the need for persistence. That's why UUIDv5 came to mind :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants