Skip to content

Commit 39f974d

Browse files
authored
Merge pull request #819 from injectives/bugfix/dns-change-cherrypick
DNS change fix
2 parents d60da4c + 310a9f9 commit 39f974d

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed

driver/src/main/java/org/neo4j/driver/internal/BoltServerAddress.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.net.UnknownHostException;
2626
import java.util.List;
2727
import java.util.Objects;
28-
import java.util.stream.Collectors;
2928
import java.util.stream.Stream;
3029

3130
import org.neo4j.driver.net.ServerAddress;
@@ -154,6 +153,11 @@ public int port()
154153
return port;
155154
}
156155

156+
public boolean isResolved()
157+
{
158+
return resolved != null;
159+
}
160+
157161
private static String hostFrom( URI uri )
158162
{
159163
String host = uri.getHost();

driver/src/main/java/org/neo4j/driver/internal/cluster/RediscoveryImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,9 @@ private ClusterComposition handleRoutingProcedureError( Throwable error, Routing
268268
public List<BoltServerAddress> resolve()
269269
{
270270
return resolver.resolve( initialRouter )
271-
.stream()
272-
.flatMap( resolved -> resolveAll( BoltServerAddress.from( resolved ) ) )
273-
.collect( toList() ); // collect to list to preserve the order
271+
.stream()
272+
.map( BoltServerAddress::from )
273+
.collect( toList() ); // collect to list to preserve the order
274274
}
275275

276276
private Stream<BoltServerAddress> resolveAll( BoltServerAddress address )

driver/src/test/java/org/neo4j/driver/internal/cluster/RediscoveryTest.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import java.io.IOException;
2626
import java.util.HashMap;
27+
import java.util.List;
2728
import java.util.Map;
2829

2930
import org.neo4j.driver.Logger;
@@ -49,6 +50,7 @@
4950
import static org.hamcrest.CoreMatchers.equalTo;
5051
import static org.junit.Assert.assertThat;
5152
import static org.junit.jupiter.api.Assertions.assertEquals;
53+
import static org.junit.jupiter.api.Assertions.assertFalse;
5254
import static org.junit.jupiter.api.Assertions.assertNotNull;
5355
import static org.junit.jupiter.api.Assertions.assertThrows;
5456
import static org.mockito.ArgumentMatchers.any;
@@ -400,22 +402,36 @@ void shouldNotLogWhenSingleRetryAttemptFails()
400402
Rediscovery rediscovery = new RediscoveryImpl( A, settings, compositionProvider, eventExecutor, resolver, logger );
401403
RoutingTable table = routingTableMock( A );
402404

403-
ServiceUnavailableException e = assertThrows( ServiceUnavailableException.class, () -> await( rediscovery.lookupClusterComposition( table, pool, empty() ) ) );
405+
ServiceUnavailableException e =
406+
assertThrows( ServiceUnavailableException.class, () -> await( rediscovery.lookupClusterComposition( table, pool, empty() ) ) );
404407
assertThat( e.getMessage(), containsString( "Could not perform discovery" ) );
405408

406409
// rediscovery should not log about retries and should not schedule any retries
407410
verify( logger, never() ).info( startsWith( "Unable to fetch new routing table, will try again in " ) );
408411
assertEquals( 0, eventExecutor.scheduleDelays().size() );
409412
}
410413

414+
@Test
415+
void shouldNotResolveToIPs()
416+
{
417+
ServerAddressResolver resolver = resolverMock( A, A );
418+
Rediscovery rediscovery = new RediscoveryImpl( A, null, null, null, resolver, null );
419+
420+
List<BoltServerAddress> addresses = rediscovery.resolve();
421+
422+
verify( resolver, times( 1 ) ).resolve( A );
423+
assertEquals( 1, addresses.size() );
424+
assertFalse( addresses.get( 0 ).isResolved() );
425+
}
426+
411427
private Rediscovery newRediscovery( BoltServerAddress initialRouter, ClusterCompositionProvider compositionProvider,
412-
ServerAddressResolver resolver )
428+
ServerAddressResolver resolver )
413429
{
414430
return newRediscovery( initialRouter, compositionProvider, resolver, DEV_NULL_LOGGER );
415431
}
416432

417433
private Rediscovery newRediscovery( BoltServerAddress initialRouter, ClusterCompositionProvider compositionProvider,
418-
ServerAddressResolver resolver, Logger logger )
434+
ServerAddressResolver resolver, Logger logger )
419435
{
420436
RoutingSettings settings = new RoutingSettings( 1, 0, 0 );
421437
return new RediscoveryImpl( initialRouter, settings, compositionProvider, GlobalEventExecutor.INSTANCE, resolver, logger );

0 commit comments

Comments
 (0)