protected internal void RefreshPartitions(Peers peers) { // 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 a node can dominate the partition map and cause all other // nodes to be dropped. if (failures > 0 || !active || (peersCount == 0 && peers.refreshCount > 1)) { return; } try { if (Log.DebugEnabled()) { Log.Debug("Update partition map for node " + this); } PartitionParser parser = new PartitionParser(tendConnection, this, cluster.partitionMap, Node.PARTITIONS); if (parser.IsPartitionMapCopied) { cluster.partitionMap = parser.PartitionMap; } partitionGeneration = parser.Generation; } catch (Exception e) { RefreshFailed(e); } }
protected internal int UpdatePartitions(Connection conn, Node node) { PartitionParser parser = new PartitionParser(conn, node, partitionMap, Node.PARTITIONS, requestProleReplicas); if (parser.IsPartitionMapCopied) { partitionMap = parser.PartitionMap; } return(parser.Generation); }
protected internal int UpdatePartitions(Connection conn, Node node) { PartitionParser parser = new PartitionParser(conn, node, partitionMap, Node.PARTITIONS, requestProleReplicas); if (parser.IsPartitionMapCopied) { partitionMap = parser.PartitionMap; } return parser.Generation; }