You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Sources/DistributedActors/Cluster/SWIM/SWIM.swift
+18-16Lines changed: 18 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -14,16 +14,16 @@
14
14
15
15
/// # SWIM (Scalable Weakly-consistent Infection-style Process Group Membership Protocol).
16
16
///
17
-
/// SWIM serves as a low-level membership and distributed failure detector mechanism.
18
-
/// Cluster members may be discovered though SWIM gossip, yet will be asked to participate in the high-level
19
-
/// cluster membership as driven by the `ClusterShell`.
17
+
/// SWIM serves as a low-level distributed failure detector mechanism.
18
+
/// It also maintains its own membership in order to monitor and select nodes to ping with periodic health checks,
19
+
/// however this membership is not directly the same as the high-level membership exposed by the `Cluster`.
20
20
///
21
-
/// ### Modifications
22
-
/// See the documentation of this swim implementation in the reference documentation.
23
-
///
24
-
/// ### Related Papers
25
-
/// - SeeAlso: [SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol](https://www.cs.cornell.edu/projects/Quicksilver/public_pdfs/SWIM.pdf) paper
21
+
/// SWIM is first and foremost used to determine if nodes are reachable or not (in SWIM terms if they are `.dead`),
22
+
/// however the final decision to mark a node `.dead` is made by the cluster by issuing a `Cluster.MemberStatus.down`
23
+
/// (usually in reaction to SWIM informing it about a node being `SWIM.Member.Status
26
24
///
25
+
/// Cluster members may be discovered though SWIM gossip, yet will be asked to participate in the high-level
26
+
/// cluster membership as driven by the `ClusterShell`.
27
27
/// ### See Also
28
28
/// - SeeAlso: `SWIM.Instance` for a detailed discussion on the implementation.
29
29
/// - SeeAlso: `SWIM.Shell` for the interpretation and actor driving the interactions.
@@ -46,7 +46,6 @@ public enum SWIM {
46
46
case ping(lastKnownStatus:Status, replyTo:ActorRef<Ack>, payload:Payload)
47
47
48
48
/// "Ping Request" requests a SWIM probe.
49
-
// TODO: target -- node rather than the ref?
50
49
case pingReq(target:ActorRef<Message>, lastKnownStatus:Status, replyTo:ActorRef<Ack>, payload:Payload)
51
50
52
51
/// Extension: Lifeguard, Local Health Aware Probe
@@ -69,7 +68,6 @@ public enum SWIM {
69
68
letpayload:Payload
70
69
}
71
70
72
-
// TODO: make sure that those are in a "testing" and not just "remote" namespace?
0 commit comments