From 8ff11911ea34833dd349a79fbd8602cfa983d02f Mon Sep 17 00:00:00 2001 From: Austin Turner Date: Fri, 13 Mar 2026 11:08:55 -0600 Subject: [PATCH 1/2] VST-98338 Fix NoMethodError when routing table handlers map is empty Give reduce a default set to work with instead of returning nil in all_servers and fresh_cluster_composition_fetched. reduce(&:+) returns nil on empty sets, causing undefined method 'map' for nil when the routing table registry has no handlers. Made-with: Cursor --- .../neo4j/driver/internal/cluster/routing_table_handler_impl.rb | 2 +- .../driver/internal/cluster/routing_table_registry_impl.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby/neo4j/driver/internal/cluster/routing_table_handler_impl.rb b/ruby/neo4j/driver/internal/cluster/routing_table_handler_impl.rb index 42ed2437..f6968e08 100644 --- a/ruby/neo4j/driver/internal/cluster/routing_table_handler_impl.rb +++ b/ruby/neo4j/driver/internal/cluster/routing_table_handler_impl.rb @@ -60,7 +60,7 @@ def fresh_cluster_composition_fetched(composition_lookup_result) @log.debug("Fetched cluster composition for database '#{@database_name.description}'. #{composition_lookup_result.cluster_composition}") @routing_table.update(composition_lookup_result.cluster_composition) @routing_table_registry.remove_aged - addresses_to_retain = @routing_table_registry.all_servers.map(&:unicast_stream).reduce(&:+) + addresses_to_retain = @routing_table_registry.all_servers.map(&:unicast_stream).reduce(Set.new, :+) composition_lookup_result.resolved_initial_routers&.then do |addresses| addresses_to_retain << addresses diff --git a/ruby/neo4j/driver/internal/cluster/routing_table_registry_impl.rb b/ruby/neo4j/driver/internal/cluster/routing_table_registry_impl.rb index d7c63828..288c9b09 100644 --- a/ruby/neo4j/driver/internal/cluster/routing_table_registry_impl.rb +++ b/ruby/neo4j/driver/internal/cluster/routing_table_registry_impl.rb @@ -52,7 +52,7 @@ def ensure_routing_table(context) def all_servers # obviously we just had a snapshot of all servers in all routing tables # after we read it, the set could already be changed. - @routing_table_handlers.values.map(&:servers).reduce(&:+) + @routing_table_handlers.values.map(&:servers).reduce(Set.new, :+) end def remove(database_name) From d3a836dfd8f5753a16c6687cb037d0041152b15a Mon Sep 17 00:00:00 2001 From: Austin Turner Date: Fri, 13 Mar 2026 12:38:13 -0600 Subject: [PATCH 2/2] VST-98338 Bump version --- ruby/neo4j/driver/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/neo4j/driver/version.rb b/ruby/neo4j/driver/version.rb index 68ce1f83..7e7848e8 100644 --- a/ruby/neo4j/driver/version.rb +++ b/ruby/neo4j/driver/version.rb @@ -2,6 +2,6 @@ module Neo4j module Driver - VERSION = '4.4.5' + VERSION = '4.4.6' end end