lib/aerospike/node/refresh/partitions.rb in aerospike-2.12.0 vs lib/aerospike/node/refresh/partitions.rb in aerospike-2.13.0

- old
+ new

@@ -1,8 +1,8 @@ # frozen_string_literal: true -# Copyright 2018 Aerospike, Inc. +# Copyright 2018-2020 Aerospike, Inc. # # Portions may be licensed to Aerospike, Inc. under one or more contributor # license agreements. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not @@ -23,25 +23,16 @@ module Partitions class << self def call(node, peers) return unless should_refresh?(node, peers) - node.cluster.update_partitions(tokenizer(node), node) + Aerospike.logger.info("Updating partitions for node #{node.name}") + conn = node.tend_connection + parser = PartitionParser.new(node, conn) + node.cluster.update_partitions(parser) rescue ::Aerospike::Exceptions::Aerospike => e - node.tend_connection.close + conn.close Refresh::Failed.(node, e) - end - - # Return correct tokenizer depending on version - def tokenizer(node) - conn = node.tend_connection - if node.use_new_info? - Aerospike.logger.info("Updating partitions for node #{node.name} using new protocol") - PartitionTokenizerNew.new(conn) - else - Aerospike.logger.info("Updating partitions for node #{node.name} using old protocol") - PartitionTokenizerOld.new(conn) - end end # Do not refresh partitions when node connection has already failed # during this cluster tend iteration. Also, avoid "split cluster" # case where this node thinks it's a 1-node cluster. Unchecked, such