---
name: "Search::Elasticsearch::CxnPool::Sniff"
section: "3pm"
platform: "linux"
package: "libsearch-elasticsearch-perl"
version: "8.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Search::Elasticsearch::CxnPool::Sniff"
---

# Search::Elasticsearch::CxnPool::Sniff(3pm)

A CxnPool for connecting to a local cluster with a dynamic node list

## NAME

Search::Elasticsearch::CxnPool::Sniff - A CxnPool for connecting to a local cluster with a dynamic node list

## VERSION

version 8.12

## SYNOPSIS

```
    $e = Search::Elasticsearch->new(
        cxn_pool => 'Sniff',
        nodes    => [
            'search1:9200',
            'search2:9200'
        ],
    );
```

## DESCRIPTION

The Sniff connection pool should be used when you **do** have direct access to the Elasticsearch cluster, eg when your web servers and Elasticsearch servers are on the same network. The nodes that you specify are used to *discover* the cluster, which is then *sniffed* to find the current list of live nodes that the cluster knows about.

This sniff process is repeated regularly, or whenever a node fails, to update the list of healthy nodes.  So if you add more nodes to your cluster, they will be auto-discovered during a sniff.

If all sniffed nodes fail, then it falls back to sniffing the original *seed* nodes that you specified in `new()`.

For HTTP Cxn classes, this module will also dynamically detect the `"max_content_length"` which the nodes in the cluster will accept.

This class does Search::Elasticsearch::Role::CxnPool::Sniff and Search::Elasticsearch::Role::Is\_Sync.

## CONFIGURATION

### "nodes"

The list of nodes to use to discover the cluster.  Can accept a single node, multiple nodes, and defaults to `"localhost:9200"` if no `"nodes"` are specified. See "node" in Search::Elasticsearch::Role::Cxn for details of the node specification.

### See also

- •

  "request\_timeout" in Search::Elasticsearch::Role::Cxn

- •

  "sniff\_timeout" in Search::Elasticsearch::Role::Cxn

- •

  "sniff\_request\_timeout" in Search::Elasticsearch::Role::Cxn

### Inherited configuration

From Search::Elasticsearch::Role::CxnPool::Sniff

- •

  sniff\_interval

- •

  sniff\_max\_content\_length

From Search::Elasticsearch::Role::CxnPool

- •

  randomize\_cxns

## METHODS

### next\_cxn()

```
    $cxn = $cxn_pool->next_cxn
```

Returns the next available live node (in round robin fashion), or throws a `"NoNodes"` error if no nodes can be sniffed from the cluster.

### schedule\_check()

```
    $cxn_pool->schedule_check
```

Forces a sniff before the next Cxn is returned, to updated the list of healthy nodes in the cluster.

### sniff()

```
    $bool = $cxn_pool->sniff
```

Sniffs the cluster and returns `"true"` if the sniff was successful.

### Inherited methods

From Search::Elasticsearch::Role::CxnPool::Sniff

- •

  **schedule\_check()**

- •

  **parse\_sniff()**

- •

  **should\_accept\_node()**

From Search::Elasticsearch::Role::CxnPool

- •

  **cxn\_factory()**

- •

  **logger()**

- •

  **serializer()**

- •

  **current\_cxn\_num()**

- •

  **cxns()**

- •

  **seed\_nodes()**

- •

  **next\_cxn\_num()**

- •

  **set\_cxns()**

- •

  **request\_ok()**

- •

  **request\_failed()**

- •

  **should\_retry()**

- •

  **should\_mark\_dead()**

- •

  **cxns\_str()**

- •

  **cxns\_seeds\_str()**

- •

  **retries()**

- •

  **reset\_retries()**

## AUTHOR

Enrico Zimuel \<enrico.zimuel@elastic.co\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2024 by Elasticsearch BV.

This is free software, licensed under:

```
  The Apache License, Version 2.0, January 2004
```
