Exemplo n.º 1
0
        private void NodeMonitor()
        {
            while (!_disposing)
            {
                var       deadNodes = new List <IRiakNode>();
                IRiakNode node      = null;
                while (_offlineNodes.TryDequeue(out node) && !_disposing)
                {
                    var result = node.UseConnection(c => c.PbcWriteRead(MessageCode.PingReq, MessageCode.PingResp));

                    if (result.IsSuccess)
                    {
                        _loadBalancer.AddNode(node);
                    }
                    else
                    {
                        deadNodes.Add(node);
                    }
                }

                if (!_disposing)
                {
                    foreach (var deadNode in deadNodes)
                    {
                        _offlineNodes.Enqueue(deadNode);
                    }

                    Thread.Sleep(_nodePollTime);
                }
            }
        }
Exemplo n.º 2
0
        private void NodeMonitor()
        {
            while (true)
            {
                ct.ThrowIfCancellationRequested();

                var       deadNodes = new List <IRiakNode>();
                IRiakNode node      = null;
                while (offlineNodes.TryDequeue(out node))
                {
                    ct.ThrowIfCancellationRequested();
                    var result = node.UseConnection(c => c.PbcWriteRead(MessageCode.RpbPingReq, MessageCode.RpbPingResp));

                    ct.ThrowIfCancellationRequested();
                    if (result.IsSuccess)
                    {
                        loadBalancer.AddNode(node);
                    }
                    else
                    {
                        deadNodes.Add(node);
                    }
                }

                foreach (var deadNode in deadNodes)
                {
                    ct.ThrowIfCancellationRequested();
                    offlineNodes.Enqueue(deadNode);
                }

                ct.WaitHandle.WaitOne(nodePollTime);
            }
        }