Skip to content

Commit 060b01d

Browse files
committed
Don't try the same router multiple times
2 parents bd1cf90 + e489ba3 commit 060b01d

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

neo4j/io/__init__.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -780,24 +780,26 @@ def update_routing_table(self, *, database, bookmarks):
780780
:raise neo4j.exceptions.ServiceUnavailable:
781781
"""
782782
# copied because it can be modified
783-
existing_routers = list(self.routing_tables[database].routers)
783+
existing_routers = set(self.routing_tables[database].routers)
784784

785-
has_tried_initial_routers = False
786-
if self.routing_tables[database].missing_fresh_writer():
785+
prefer_initial_routing_address = \
786+
self.routing_tables[database].missing_fresh_writer()
787+
788+
if prefer_initial_routing_address:
787789
# TODO: Test this state
788-
has_tried_initial_routers = True
789790
if self.update_routing_table_from(
790791
self.first_initial_routing_address, database=database,
791792
bookmarks=bookmarks
792793
):
793794
# Why is only the first initial routing address used?
794795
return
795-
if self.update_routing_table_from(*existing_routers, database=database,
796-
bookmarks=bookmarks):
796+
if self.update_routing_table_from(
797+
*(existing_routers - {self.first_initial_routing_address}),
798+
database=database, bookmarks=bookmarks
799+
):
797800
return
798801

799-
if (not has_tried_initial_routers
800-
and self.first_initial_routing_address not in existing_routers):
802+
if not prefer_initial_routing_address:
801803
if self.update_routing_table_from(
802804
self.first_initial_routing_address, database=database,
803805
bookmarks=bookmarks

0 commit comments

Comments
 (0)