Skip to content

Commit 8344952

Browse files
technigejexp
authored andcommitted
Try all resolved addresses for direct connection (#148)
* Try all resolved addresses for direct connection * Removed extraneous argument
1 parent f2f7e6f commit 8344952

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

neo4j/v1/direct.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
from neo4j.addressing import SocketAddress, resolve
2323
from neo4j.bolt import DEFAULT_PORT, ConnectionPool, connect
24+
from neo4j.exceptions import ServiceUnavailable
2425
from neo4j.v1.api import Driver
2526
from neo4j.v1.security import SecurityPlan
2627
from neo4j.v1.session import BoltSession
@@ -33,8 +34,14 @@ def __init__(self, connector, address):
3334
self.address = address
3435

3536
def acquire(self, access_mode=None):
36-
resolved_addresses = resolve(self.address)
37-
return self.acquire_direct(resolved_addresses[0])
37+
for address in resolve(self.address):
38+
try:
39+
connection = self.acquire_direct(address) # should always be a resolved address
40+
except ServiceUnavailable:
41+
pass
42+
else:
43+
return connection
44+
raise ServiceUnavailable("Cannot acquire connection to {!r}".format(self.address))
3845

3946

4047
class DirectDriver(Driver):

0 commit comments

Comments
 (0)