Example #1
0
        /// <summary>
        /// MoveLeader requests current leader node to transfer its leadership to transferee in async.
        /// </summary>
        /// <param name="request">MoveLeader Request</param>
        /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
        /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
        /// <param name="cancellationToken">An optional token for canceling the call.</param>
        /// <returns>MoveLeader Response</returns>
        public async Task <MoveLeaderResponse> MoveLeaderAsync(MoveLeaderRequest request,
                                                               Grpc.Core.Metadata headers          = null, DateTime?deadline = null,
                                                               CancellationToken cancellationToken = default)
        {
            MoveLeaderResponse response = new MoveLeaderResponse();
            bool success    = false;
            int  retryCount = 0;

            while (!success)
            {
                try
                {
                    response = await _balancer.GetConnection().maintenanceClient
                               .MoveLeaderAsync(request, headers, deadline, cancellationToken);

                    success = true;
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Unavailable)
                {
                    retryCount++;
                    if (retryCount >= _balancer._numNodes)
                    {
                        throw;
                    }
                }
            }

            return(response);
        }
Example #2
0
 /// <summary>
 /// MoveLeader requests current leader node to transfer its leadership to transferee.
 /// </summary>
 /// <param name="request">MoveLeader Request</param>
 /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
 /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
 /// <param name="cancellationToken">An optional token for canceling the call.</param>
 /// <returns>MoveLeader Response</returns>
 public MoveLeaderResponse MoveLeader(MoveLeaderRequest request, Grpc.Core.Metadata headers = null,
                                      DateTime?deadline = null,
                                      CancellationToken cancellationToken = default)
 {
     return(CallEtcd((connection) => connection._maintenanceClient
                     .MoveLeader(request, headers, deadline, cancellationToken)));
 }
Example #3
0
 /// <summary>
 /// MoveLeader requests current leader node to transfer its leadership to transferee in async.
 /// </summary>
 /// <param name="request">MoveLeader Request</param>
 /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
 /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
 /// <param name="cancellationToken">An optional token for canceling the call.</param>
 /// <returns>MoveLeader Response</returns>
 public async Task <MoveLeaderResponse> MoveLeaderAsync(MoveLeaderRequest request,
                                                        Grpc.Core.Metadata headers          = null, DateTime?deadline = null,
                                                        CancellationToken cancellationToken = default)
 {
     return(await CallEtcdAsync(async (connection) => await connection._maintenanceClient
                                .MoveLeaderAsync(request, headers, deadline, cancellationToken)).ConfigureAwait(false));
 }
Example #4
0
        /// <summary>
        /// MoveLeader requests current leader node to transfer its leadership to transferee in async.
        /// </summary>
        /// <param name="request">MoveLeader Request</param>
        /// <returns>MoveLeader Response</returns>
        public async Task <MoveLeaderResponse> MoveLeaderAsync(MoveLeaderRequest request, Metadata headers = null)
        {
            MoveLeaderResponse response = new MoveLeaderResponse();
            bool success    = false;
            int  retryCount = 0;

            while (!success)
            {
                try
                {
                    response = await _balancer.GetConnection().maintenanceClient.MoveLeaderAsync(request, headers);

                    success = true;
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Unavailable)
                {
                    retryCount++;
                    if (retryCount >= _balancer._numNodes)
                    {
                        throw ex;
                    }
                }
            }
            return(response);
        }
        /// <summary>
        /// MoveLeader requests current leader node to transfer its leadership to transferee in async.
        /// </summary>
        /// <param name="request">MoveLeader Request</param>
        /// <returns>MoveLeader Response</returns>
        public async Task <MoveLeaderResponse> MoveLeaderAsync(MoveLeaderRequest request, Metadata headers = null)
        {
            MoveLeaderResponse response = new MoveLeaderResponse();

            response = await _balancer.GetConnection().maintenanceClient.MoveLeaderAsync(request, headers);

            return(response);
        }
        /// <summary>
        /// MoveLeader requests current leader node to transfer its leadership to transferee.
        /// </summary>
        /// <param name="request">MoveLeader Request</param>
        /// <returns>MoveLeader Response</returns>
        public MoveLeaderResponse MoveLeader(MoveLeaderRequest request, Metadata headers = null)
        {
            MoveLeaderResponse response = new MoveLeaderResponse();

            response = _balancer.GetConnection().maintenanceClient.MoveLeader(request, headers);

            return(response);
        }
Example #7
0
        /// <summary>
        /// MoveLeader requests current leader node to transfer its leadership to transferee in async.
        /// </summary>
        /// <param name="request">MoveLeader Request</param>
        /// <returns>MoveLeader Response</returns>
        public async Task <MoveLeaderResponse> MoveLeaderAsync(MoveLeaderRequest request)
        {
            MoveLeaderResponse response = new MoveLeaderResponse();

            try
            {
                response = await _maintenanceClient.MoveLeaderAsync(request);
            }
            catch (RpcException)
            {
                ResetConnection();
                throw;
            }
            catch
            {
                throw;
            }
            return(response);
        }
Example #8
0
        /// <summary>
        /// MoveLeader requests current leader node to transfer its leadership to transferee.
        /// </summary>
        /// <param name="request">MoveLeader Request</param>
        /// <returns>MoveLeader Response</returns>
        public MoveLeaderResponse MoveLeader(MoveLeaderRequest request)
        {
            MoveLeaderResponse response = new MoveLeaderResponse();

            try
            {
                response = _maintenanceClient.MoveLeader(request);
            }
            catch (RpcException)
            {
                ResetConnection();
                throw;
            }
            catch
            {
                throw;
            }
            return(response);
        }