protected void validateUniqueness() { // Validate uniqueness of each logical component. Partition uniqueness is validated by method // addPartition. Set<Replica> replicaSet = new HashSet<Replica>(); for (Partition partition : partitionMap.values()) { for (Replica replica : partition.getReplicas()) { if (!replicaSet.add(replica)) { throw new IllegalStateException("Duplicate Replica detected: " + replica.toString()); } } } }
public List<PartitionId> getWritablePartitions() { List<PartitionId> writablePartitions = new ArrayList(); List<PartitionId> healthyWritablePartitions = new ArrayList(); for (Partition partition : partitionMap.values()) { if (partition.getPartitionState() == PartitionState.READ_WRITE) { writablePartitions.add(partition); boolean up = true; for (Replica replica : partition.getReplicas()) { if (replica.isDown()) { up = false; break; } } if (up) { healthyWritablePartitions.add(partition); } } } return healthyWritablePartitions.isEmpty() ? writablePartitions : healthyWritablePartitions; }