示例#1
0
        public new void FlushAll()
        {
            var couchbaseNodes = poolInstance.GetWorkingNodes().Where(n => n is CouchbaseNode);

            if (couchbaseNodes.Count() > 0)
            {
                throw new NotImplementedException("To flush a Couchbase bucket, use the Couchbase.Management API.");
            }
            base.FlushAll();
        }
        private Tuple <VBucket, CouchbaseNode[], IObserveOperation> setupObserveOperation(ICouchbaseServerPool pool)
        {
            var vbucket = pool.GetVBucket(_settings.Key);
            var command = pool.OperationFactory.Observe(_settings.Key, vbucket.Index, _settings.Cas);

            var workingNodes = pool.GetWorkingNodes().ToArray();

            var masterAndReplicaNodes = new CouchbaseNode[vbucket.Replicas.Count() + 1];

            masterAndReplicaNodes[0] = workingNodes[vbucket.Master] as CouchbaseNode;

            for (var i = 0; i < vbucket.Replicas.Length; i++)
            {
                masterAndReplicaNodes[i + 1] = workingNodes[vbucket.Replicas[i]] as CouchbaseNode;
            }

            return(Tuple.Create(vbucket, masterAndReplicaNodes, command));
        }
示例#3
0
        private ObserveOperationSetup setupObserveOperation(ICouchbaseServerPool pool)
        {
            var vbucket = pool.GetVBucket(_settings.Key);

            // Check to see if our persistence requirements can be satisfied
            if (((int)_settings.ReplicateTo > vbucket.Replicas.Length + 1) ||
                ((int)_settings.PersistTo > vbucket.Replicas.Length + 1))
            {
                throw new ObserveExpectationException(
                          "Requested replication or persistence to more nodes than are currently " +
                          "configured");
            }
            var command = pool.OperationFactory.Observe(_settings.Key, vbucket.Index, _settings.Cas);

            var workingNodes          = pool.GetWorkingNodes().ToArray();
            var masterAndReplicaNodes = new List <CouchbaseNode>();

            masterAndReplicaNodes.Add(workingNodes[vbucket.Master] as CouchbaseNode);

            for (var i = 0; i < vbucket.Replicas.Length; i++)
            {
                int replicaIndex = vbucket.Replicas[i];
                if (replicaIndex < 0)
                {
                    continue;
                }
                masterAndReplicaNodes.Add(workingNodes[replicaIndex] as CouchbaseNode);
            }

            if (masterAndReplicaNodes.Count < (int)_settings.PersistTo ||
                masterAndReplicaNodes.Count - 1 < (int)_settings.ReplicateTo)
            {
                throw new ObserveExpectationException(
                          "Requested replication or persistence to more nodes than are currently " +
                          "online");
            }

            return(new ObserveOperationSetup
            {
                VBucket = vbucket,
                CouchbaseNodes = masterAndReplicaNodes.ToArray(),
                Operation = command
            });
        }
        private Tuple<VBucket, CouchbaseNode[], IObserveOperation> setupObserveOperation(ICouchbaseServerPool pool)
        {
            var vbucket = pool.GetVBucket(_settings.Key);

            // Check to see if our persistence requirements can be satisfied
            if (((int)_settings.ReplicateTo > vbucket.Replicas.Length + 1) ||
                 ((int)_settings.PersistTo > vbucket.Replicas.Length + 1))
            {
                throw new ObserveExpectationException(
                    "Requested replication or persistence to more nodes than are currently " +
                    "available");
            }
            var command = pool.OperationFactory.Observe(_settings.Key, vbucket.Index, _settings.Cas);

            var workingNodes = pool.GetWorkingNodes().ToArray();
            var masterAndReplicaNodes = new List<CouchbaseNode>();
            masterAndReplicaNodes.Add(workingNodes[vbucket.Master] as CouchbaseNode);

            for (var i = 0; i < vbucket.Replicas.Length; i++)
            {
                int replicaIndex = vbucket.Replicas[i];
                if (replicaIndex < 0)
                {
                    continue;
                }
                masterAndReplicaNodes.Add(workingNodes[replicaIndex] as CouchbaseNode);
            }

            return Tuple.Create(vbucket, masterAndReplicaNodes.ToArray(), command);
        }
        private ObserveOperationSetup SetupObserveOperation(ICouchbaseServerPool pool)
        {
            var vbucket = pool.GetVBucket(_settings.Key);

            // Check to see if our persistence requirements can be satisfied
            if (((int)_settings.ReplicateTo > vbucket.Replicas.Length + 1) ||
                 ((int)_settings.PersistTo > vbucket.Replicas.Length + 1))
            {
                throw new ObserveExpectationException(
                    "Requested replication or persistence to more nodes than are currently " +
                    "configured");
            }
            var command = pool.OperationFactory.Observe(_settings.Key, vbucket.Index, _settings.Cas);

            var workingNodes = pool.GetWorkingNodes().Cast<ICouchbaseNode>().ToArray();
            var masterAndReplicaNodes = new List<ICouchbaseNode> {workingNodes[vbucket.Master]};

            for (var i = 0; i < vbucket.Replicas.Length; i++)
            {
                int replicaIndex = vbucket.Replicas[i];
                if (replicaIndex < 0)
                {
                    continue;
                }
                masterAndReplicaNodes.Add(workingNodes[replicaIndex]);
            }

            if (masterAndReplicaNodes.Count < (int)_settings.PersistTo ||
                masterAndReplicaNodes.Count - 1 < (int)_settings.ReplicateTo)
            {
                throw new ObserveExpectationException(
                    "Requested replication or persistence to more nodes than are currently " +
                    "online");
            }

            return new ObserveOperationSetup
            {
                VBucket = vbucket,
                CouchbaseNodes = masterAndReplicaNodes.ToArray(),
                Operation = command
            };
        }
        private Tuple<VBucket, CouchbaseNode[], IObserveOperation> setupObserveOperation(ICouchbaseServerPool pool)
        {
            var vbucket = pool.GetVBucket(_settings.Key);
            var command = pool.OperationFactory.Observe(_settings.Key, vbucket.Index, _settings.Cas);

            var workingNodes = pool.GetWorkingNodes().ToArray();

            var masterAndReplicaNodes = new CouchbaseNode[vbucket.Replicas.Count() + 1];

            masterAndReplicaNodes[0] = workingNodes[vbucket.Master] as CouchbaseNode;

            for (var i = 0; i < vbucket.Replicas.Length; i++)
            {
                masterAndReplicaNodes[i + 1] = workingNodes[vbucket.Replicas[i]] as CouchbaseNode;
            }

            return Tuple.Create(vbucket, masterAndReplicaNodes, command);
        }