DATAREDIS-888 - Use Lettuce's read-only Partition view for node conversion.

We now use the read-only view of Lettuce's Partition object to convert Lettuce RedisClusterNode objects into Spring Data RedisClusterNode. The read-only view is atomic and does not require external synchronization.

Original Pull Request: #384
This commit is contained in:
Mark Paluch
2019-02-08 14:04:44 +01:00
committed by Christoph Strobl
parent 3816b41dc8
commit 22fdaba350
3 changed files with 5 additions and 5 deletions

View File

@@ -223,7 +223,7 @@ abstract public class LettuceConverters extends Converters {
return Collections.emptyList();
}
List<RedisClusterNode> nodes = new ArrayList<>();
for (io.lettuce.core.cluster.models.partitions.RedisClusterNode node : source.getPartitions()) {
for (io.lettuce.core.cluster.models.partitions.RedisClusterNode node : source) {
nodes.add(CLUSTER_NODE_TO_CLUSTER_NODE_CONVERTER.convert(node));
}

View File

@@ -102,9 +102,9 @@ public class LettuceClusterConnectionUnitTests {
partition3.setFlags(Collections.singleton(NodeFlag.MASTER));
partition3.setUri(RedisURI.create("redis://" + CLUSTER_HOST + ":" + MASTER_NODE_3_PORT));
partitions.addPartition(partition1);
partitions.addPartition(partition2);
partitions.addPartition(partition3);
partitions.add(partition1);
partitions.add(partition2);
partitions.add(partition3);
when(resourceProvider.getResourceForSpecificNode(CLUSTER_NODE_1)).thenReturn(clusterConnection1Mock);
when(resourceProvider.getResourceForSpecificNode(CLUSTER_NODE_2)).thenReturn(clusterConnection2Mock);

View File

@@ -88,7 +88,7 @@ public class LettuceConvertersUnitTests {
partition.setUri(RedisURI.create("redis://" + CLUSTER_HOST + ":" + MASTER_NODE_1_PORT));
partition.setSlots(Arrays.<Integer> asList(1, 2, 3, 4, 5));
partitions.addPartition(partition);
partitions.add(partition);
List<RedisClusterNode> nodes = LettuceConverters.partitionsToClusterNodes(partitions);
assertThat(nodes.size(), is(1));