Exemple #1
0
        public void Send(ElectionMessage.MasterIsResigning message, IPEndPoint endPoint)
        {
            Ensure.NotNull(message, nameof(message));
            Ensure.NotNull(endPoint, nameof(endPoint));

            _client.Post(endPoint.ToHttpUrl(EndpointExtensions.HTTP_SCHEMA, "/elections/masterisresigning"),
                         Codec.Json.To(new ElectionMessageDto.MasterIsResigningDto(message)),
                         Codec.Json.ContentType,
                         r => {
                /*ignore*/
            },
                         e => {
                /*Log.ErrorException(e, "Error occured while writing request (elections/masterisresigning)")*/
            });
        }
        public void Handle(ElectionMessage.MasterIsResigning message)
        {
            if (_nodeInfo.IsReadOnlyReplica)
            {
                Log.Debug(
                    "ELECTIONS: THIS NODE IS A READ ONLY REPLICA. IT IS NOT ALLOWED TO VOTE AND THEREFORE NOT ALLOWED TO ACKNOWLEDGE MASTER RESIGNATION.");
                return;
            }

            Log.Debug("ELECTIONS: MASTER IS RESIGNING [{masterInternalHttp}, {masterId:B}].",
                      message.MasterInternalHttp, message.MasterId);
            var masterIsResigningMessageOk = new ElectionMessage.MasterIsResigningOk(
                message.MasterId,
                message.MasterInternalHttp,
                _nodeInfo.InstanceId,
                _nodeInfo.InternalHttp);

            _resigningMasterInstanceId = message.MasterId;
            _publisher.Publish(new HttpMessage.SendOverHttp(message.MasterInternalHttp, masterIsResigningMessageOk,
                                                            _timeProvider.LocalTime.Add(LeaderElectionProgressTimeout)));
        }