INTERNAL API State of ClusterHeartbeatSender. Encapsulated to facilitate unit testing. It is immutable, but it updates the failure detector.
Esempio n. 1
0
 private void AddMember(Member m)
 {
     if (!m.UniqueAddress.Equals(_cluster.SelfUniqueAddress) && !_state.Contains(m.UniqueAddress))
     {
         _state = _state.AddMember(m.UniqueAddress);
     }
 }
Esempio n. 2
0
 private void AddMember(Member m)
 {
     if (m.UniqueAddress != _cluster.SelfUniqueAddress)
     {
         _state = _state.AddMember(m.UniqueAddress);
     }
 }
Esempio n. 3
0
        private void Init(ClusterEvent.CurrentClusterState snapshot)
        {
            var nodes       = snapshot.Members.Select(x => x.UniqueAddress).ToImmutableHashSet();
            var unreachable = snapshot.Unreachable.Select(c => c.UniqueAddress).ToImmutableHashSet();

            _state = _state.Init(nodes, unreachable);
        }
Esempio n. 4
0
        /// <summary>
        /// TBD
        /// </summary>
        public ClusterHeartbeatSender()
        {
            _cluster = Cluster.Get(Context.System);

            // the failureDetector is only updated by this actor, but read from other places
            _failureDetector = _cluster.FailureDetector;

            _selfHeartbeat = new Heartbeat(_cluster.SelfAddress);

            _state = new ClusterHeartbeatSenderState(
                ring: new HeartbeatNodeRing(
                    _cluster.SelfUniqueAddress,
                    ImmutableHashSet.Create(_cluster.SelfUniqueAddress),
                    ImmutableHashSet <UniqueAddress> .Empty,
                    _cluster.Settings.MonitoredByNrOfMembers),
                oldReceiversNowUnreachable: ImmutableHashSet <UniqueAddress> .Empty,
                failureDetector: _failureDetector);

            // start periodic heartbeat to other nodes in cluster
            _heartbeatTask = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(
                _cluster.Settings.PeriodicTasksInitialDelay.Max(_cluster.Settings.HeartbeatInterval),
                _cluster.Settings.HeartbeatInterval,
                Self,
                new HeartbeatTick(),
                Self);

            Initializing();
        }
Esempio n. 5
0
 private void DoHeartbeatRsp(UniqueAddress from)
 {
     if (_cluster.Settings.VerboseHeartbeatLogging)
     {
         _log.Debug("Cluster Node [{0}] - Heartbeat response from [{1}]", _cluster.SelfAddress, from.Address);
     }
     _state = _state.HeartbeatRsp(from);
 }
Esempio n. 6
0
 private void DoHeartbeatRsp(HeartbeatRsp rsp)
 {
     if (_cluster.Settings.VerboseHeartbeatLogging)
     {
         // TODO: log response time and validate sequence nrs once serialisation of sendTime is released
         _log.Debug("Cluster Node [{0}] - Heartbeat response from [{1}]", _cluster.SelfAddress, rsp.From.Address);
     }
     _state = _state.HeartbeatRsp(rsp.From);
 }
Esempio n. 7
0
 private void RemoveMember(Member m)
 {
     if (m.UniqueAddress.Equals(_cluster.SelfUniqueAddress))
     {
         // This cluster node will be shutdown, but stop this actor immediately
         // to avoid further updates
         Context.Stop(Self);
     }
     else
     {
         _state = _state.RemoveMember(m.UniqueAddress);
     }
 }
Esempio n. 8
0
        public ClusterHeartbeatSender()
        {
            _cluster       = Cluster.Get(Context.System);
            _selfHeartbeat = new Heartbeat(_cluster.SelfAddress);
            _state         = new ClusterHeartbeatSenderState(
                new HeartbeatNodeRing(_cluster.SelfUniqueAddress, new[] { _cluster.SelfUniqueAddress },
                                      _cluster.Settings.MonitoredByNrOfMembers),
                ImmutableHashSet.Create <UniqueAddress>(),
                FailureDetector);

            //stat perioidic heartbeat to other nodes in cluster
            _heartbeatTask = new CancellationTokenSource();
            Context.System.Scheduler.Schedule(
                _cluster.Settings.PeriodicTasksInitialDelay.Max(_cluster.Settings.HeartbeatInterval),
                _cluster.Settings.HeartbeatInterval, Self, new HeartbeatTick());
            Initializing();
        }
Esempio n. 9
0
        public ClusterHeartbeatSender()
        {
            _cluster = Cluster.Get(Context.System);
            _selfHeartbeat = new Heartbeat(_cluster.SelfAddress);
            _state = new ClusterHeartbeatSenderState(
                new HeartbeatNodeRing(_cluster.SelfUniqueAddress, new[] { _cluster.SelfUniqueAddress },
                    _cluster.Settings.MonitoredByNrOfMembers),
                ImmutableHashSet.Create<UniqueAddress>(),
                FailureDetector);

            //start periodic heartbeat to other nodes in cluster
            _heartbeatTask =
            Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(
                _cluster.Settings.PeriodicTasksInitialDelay.Max(_cluster.Settings.HeartbeatInterval), 
                _cluster.Settings.HeartbeatInterval, Self, new HeartbeatTick(), Self);
            Initializing();
        }
Esempio n. 10
0
 private void DoHeartbeatRsp(UniqueAddress from)
 {
     if (_cluster.Settings.VerboseHeartbeatLogging)
     {
         _log.Debug("Cluster Node [{0}] - Heartbeat response from [{1}]", _cluster.SelfAddress, from.Address);
     }
     _state = _state.HeartbeatRsp(from);
 }
Esempio n. 11
0
 private void RemoveMember(Member m)
 {
     if (m.UniqueAddress == _cluster.SelfUniqueAddress)
     {
         // This cluster node will be shutdown, but stop this actor immediately
         // to avoid further updates
         Context.Stop(Self);
     }
     else
     {
         _state = _state.RemoveMember(m.UniqueAddress);
     }
 }
Esempio n. 12
0
 private void DoHeartbeatRsp(UniqueAddress from)
 {
     _log.Debug("Cluster Node [{0}] - Heartbeat response from [{1}]", _cluster.SelfAddress, from.Address);
     _state = _state.HeartbeatRsp(from);
 }
Esempio n. 13
0
 private void AddMember(Member m)
 {
     if (m.UniqueAddress != _cluster.SelfUniqueAddress)
         _state = _state.AddMember(m.UniqueAddress);
 }
Esempio n. 14
0
 private void Init(ClusterEvent.CurrentClusterState snapshot)
 {
     var nodes = snapshot.Members.Where(x => x.Status == MemberStatus.Up).Select(x => x.UniqueAddress).ToImmutableHashSet();
     _state = _state.Init(nodes);
 }
Esempio n. 15
0
        private void Init(ClusterEvent.CurrentClusterState snapshot)
        {
            var nodes = snapshot.Members.Where(x => x.Status == MemberStatus.Up).Select(x => x.UniqueAddress).ToImmutableHashSet();

            _state = _state.Init(nodes);
        }
Esempio n. 16
0
 private void DoHeartbeatRsp(UniqueAddress from)
 {
     Log.Debug("Cluster Node [{0}] - Heartbeat response from [{1}]", _cluster.SelfAddress, from.Address);
     _state = _state.HeartbeatRsp(from);
 }
Esempio n. 17
0
 private void ReachableMember(Member m)
 {
     _state = _state.ReachableMember(m.UniqueAddress);
 }