module Aerospike::Node::Refresh::Friends
Refresh
peers/friends based on old service protocol
Public Class Methods
call(node, peers, info_map)
click to toggle source
# File lib/aerospike/node/refresh/friends.rb, line 26 def call(node, peers, info_map) friend_string = info_map['services'] cluster = node.cluster Aerospike.logger.debug("Refreshing friends for node #{node.name}: services=#{friend_string}") if friend_string.to_s.empty? node.peers_count.value = 0 return end friend_names = friend_string.split(';') node.peers_count.value = friend_names.size friend_names.each do |friend| hostname, port = friend.split(':') host = Host.new(hostname, port.to_i) found_node = cluster.find_alias(host) if found_node found_node.increase_reference_count! Aerospike.logger.debug("Found existing node #{found_node.name} for host #{host}: Increased ref count to #{found_node.reference_count.value}") else unless peers.hosts.include?(host) prepare(cluster, peers, host) end end end end
prepare(cluster, peers, host)
click to toggle source
# File lib/aerospike/node/refresh/friends.rb, line 56 def prepare(cluster, peers, host) Aerospike.logger.debug("Preparing to add new node for host #{host}") nv = NodeValidator.new( cluster, host, cluster.connection_timeout, cluster.cluster_name, cluster.tls_options ) node = peers.find_node_by_name(nv.name) unless node.nil? Aerospike.logger.debug("Found existing node #{node.name} among peers for host #{host}") peers.hosts << host node.aliases << host return true end node = cluster.find_node_by_name(nv.name) unless node.nil? Aerospike.logger.debug("Found existing node #{node.name} in cluster for host #{host}") peers.hosts << host node.aliases << host # Only increase reference count if found in cluster node.increase_reference_count! cluster.add_alias(host, node) return true end Aerospike.logger.debug("No existing node found - creating new node #{nv.name} for host #{host}") node = cluster.create_node(nv) peers.hosts << host peers.nodes[nv.name] = node true rescue ::Aerospike::Exceptions::Aerospike => e ::Aerospike.logger.warn("Add node for host #{host} failed: #{e}") false end