Skip to content

Commit 9b11d53

Browse files
Apply review comments
1 parent 3829053 commit 9b11d53

File tree

2 files changed

+48
-22
lines changed

2 files changed

+48
-22
lines changed

core/src/main/java/com/datastax/oss/driver/internal/core/context/StartupOptionsBuilder.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,15 @@
2323
import com.datastax.oss.driver.api.core.loadbalancing.LocalDcAwareLoadBalancingPolicy;
2424
import com.datastax.oss.driver.api.core.session.Session;
2525
import com.datastax.oss.driver.api.core.uuid.Uuids;
26+
import com.datastax.oss.driver.shaded.guava.common.base.Joiner;
27+
import com.datastax.oss.driver.shaded.guava.common.collect.Maps;
2628
import com.datastax.oss.protocol.internal.request.Startup;
2729
import com.datastax.oss.protocol.internal.util.collection.NullAllowingImmutableMap;
2830
import edu.umd.cs.findbugs.annotations.Nullable;
2931
import java.util.Map;
32+
import java.util.Optional;
3033
import java.util.UUID;
34+
import java.util.stream.Collectors;
3135
import net.jcip.annotations.Immutable;
3236

3337
@Immutable
@@ -123,10 +127,7 @@ public Map<String, String> build() {
123127
builder.put(APPLICATION_VERSION_KEY, applicationVersion);
124128
}
125129
// do not cache local DC as it can change within LBP implementation
126-
String applicationLocalDcs = localDcs();
127-
if (applicationLocalDcs != null) {
128-
builder.put(DRIVER_LOCAL_DC, applicationLocalDcs);
129-
}
130+
localDcs().ifPresent(s -> builder.put(DRIVER_LOCAL_DC, s));
130131

131132
return builder.build();
132133
}
@@ -151,28 +152,27 @@ protected String getDriverVersion() {
151152
return Session.OSS_DRIVER_COORDINATES.getVersion().toString();
152153
}
153154

154-
private String localDcs() {
155-
StringBuilder result = new StringBuilder();
156-
boolean first = true;
157-
for (Map.Entry<String, LoadBalancingPolicy> entry :
158-
context.getLoadBalancingPolicies().entrySet()) {
159-
String dc = getLocalDc(entry.getValue());
160-
if (dc != null) {
161-
if (!first) {
162-
result.append(", ");
163-
} else {
164-
first = false;
165-
}
166-
result.append(entry.getKey()).append(": ").append(dc);
167-
}
155+
private Optional<String> localDcs() {
156+
Joiner joiner = Joiner.on(": ");
157+
Map<String, Optional<String>> lbpToDc =
158+
Maps.transformValues(context.getLoadBalancingPolicies(), this::getLocalDc);
159+
if (lbpToDc.isEmpty()) {
160+
return Optional.empty();
168161
}
169-
return first ? null : result.toString();
162+
return Optional.of(
163+
lbpToDc.entrySet().stream()
164+
.filter(e -> e.getValue().isPresent())
165+
.map(entry -> joiner.join(entry.getKey(), entry.getValue().get()))
166+
.collect(Collectors.joining(", ")));
170167
}
171168

172-
private String getLocalDc(LoadBalancingPolicy loadBalancingPolicy) {
169+
private Optional<String> getLocalDc(LoadBalancingPolicy loadBalancingPolicy) {
173170
if (loadBalancingPolicy instanceof LocalDcAwareLoadBalancingPolicy) {
174-
return ((LocalDcAwareLoadBalancingPolicy) loadBalancingPolicy).getLocalDatacenter();
171+
String dc = ((LocalDcAwareLoadBalancingPolicy) loadBalancingPolicy).getLocalDatacenter();
172+
if (dc != null) {
173+
return Optional.of(dc);
174+
}
175175
}
176-
return null;
176+
return Optional.empty();
177177
}
178178
}

core/src/test/java/com/datastax/dse/driver/internal/core/context/DseStartupOptionsBuilderTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,4 +249,30 @@ public void should_include_all_local_dc_in_startup_message() {
249249
StartupOptionsBuilder.DRIVER_LOCAL_DC,
250250
"default: us-west-2, oltp: us-east-2, olap: eu-central-1");
251251
}
252+
253+
@Test
254+
public void should_skip_non_local_dc_lbp_in_startup_message() {
255+
when(defaultProfile.getString(DefaultDriverOption.PROTOCOL_COMPRESSION, "none"))
256+
.thenReturn("none");
257+
when(defaultProfile.getName()).thenReturn(DriverExecutionProfile.DEFAULT_NAME);
258+
259+
ProgrammaticArguments.Builder builder = ProgrammaticArguments.builder();
260+
DefaultDriverContext driverContext =
261+
new DefaultDriverContext(configLoader, builder.build()) {
262+
@NonNull
263+
@Override
264+
public Map<String, LoadBalancingPolicy> getLoadBalancingPolicies() {
265+
ImmutableMap.Builder<String, LoadBalancingPolicy> map = ImmutableMap.builder();
266+
LocalDcAwareLoadBalancingPolicy loadBalancingPolicy =
267+
mock(LocalDcAwareLoadBalancingPolicy.class);
268+
when(loadBalancingPolicy.getLocalDatacenter()).thenReturn("dc1");
269+
map.put("oltp", loadBalancingPolicy);
270+
map.put("default", mock(LoadBalancingPolicy.class));
271+
return map.build();
272+
}
273+
};
274+
Startup startup = new Startup(driverContext.getStartupOptions());
275+
276+
assertThat(startup.options).containsEntry(StartupOptionsBuilder.DRIVER_LOCAL_DC, "oltp: dc1");
277+
}
252278
}

0 commit comments

Comments
 (0)