in lib/Search/Elasticsearch/Role/CxnPool/Sniff.pm [51:89]
sub parse_sniff {
#===================================
my $self = shift;
my $nodes = shift or return;
my @live_nodes;
my $max = 0;
my $sniff_max = $self->sniff_max_content_length;
for my $node_id ( keys %$nodes ) {
my $data = $nodes->{$node_id};
my $addr = $data->{http}{publish_address} || $data->{http_address};
my $host = $self->_extract_host($addr)
or next;
$host = $self->should_accept_node( $host, $node_id, $data )
or next;
push @live_nodes, $host;
next unless $sniff_max and $data->{http};
my $node_max = $data->{http}{max_content_length_in_bytes} || 0;
$max
= $node_max == 0 ? $max
: $max == 0 ? $node_max
: min( $node_max, $max );
}
return unless @live_nodes;
$self->cxn_factory->max_content_length($max)
if $sniff_max and $max;
$self->set_cxns(@live_nodes);
my $next = $self->next_sniff( time() + $self->sniff_interval );
$self->logger->infof( "Next sniff at: %s", scalar localtime($next) );
return 1;
}