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)); }
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); }