# Connection States

When a collector is connected to Bindplane, it can be in several different states. This state is shown when the collector appears in a table or when directly viewed.

{% hint style="info" %}
**NOTE**

For statuses other than `Disconnected`, the collector is still connected to Bindplane even if it is errored or something is wrong.
{% endhint %}

## Available Connection States

### Connected

`Connected` is the normal state of a healthy collector that is connected to Bindplane.

### Disconnected

`Disconnected` is the state of a collector that was formerly `Connected` to Bindplane but is no longer connected. This could mean that it has stopped running, the network connection has been interrupted, or the server terminated the connection.

### Error

`Error` occurs if there is an error running, configuring, or updating the collector.

### Configuring

The `Configuring` state us used when a collector is sent a new configuration that has not been applied. After successful `Configuring`, it will transition back to `Connected`. If there is an error `Configuring`, it will transition to `Error`.

### Pending

`Pending` is set when a collector has been queued for a new configuration in a rollout. Once Bindplane has sent the collector the new configuration, it will transition to `Configuring`. It's important to note that while in `Pending`, nothing has changed with the collector and it is still running the same configuration as before the rollout was started.

### Incompatible

`Incompatible` is set when the configuration applied to a collector has components that it does not support. The collector will continue operating normally, and the incompatible config will not be applied.

### Upgrading

`Upgrading` is set when a collector has been sent a new package that is being applied. After upgrading, it will transition back to `Connected` or `Error` unless it already has the `Configuring` status.

## Collector Process State

The following is a description of what is happening to the collector process itself when the various states are shown in Bindplane. It's important to note that the logs of the process will provide the most insight into what is happening to the collector.

* **Connected**: The collector is not reporting any OpAMP errors to Bindplane.
* **Disconnected**: The collector does not have an open connection to Bindplane. The process could be stopped or there could be a network error.
  * For supervisor deployments, the supervisor itself is disconnected from Bindplane.
* **Error**: The collector is reporting an error over OpAMP to Bindplane. This can be a configuration error, upgrade error, or some part of the collector is reporting an unhealthy state. The process logs should be consulted for the most accurate description of this state.
  * For supervisor deployments, the supervisor is likely still running and attempting to restart the collector. A new configuration should be sent to the collector. However, it is possible the supervisor itself is failing. The process logs should be inspected for the most accurate data.
* **Configuring**: Bindplane has sent a configuration to the collector. It is awaiting a failed or healthy status update from the collector.
  * For supervisor deployments, the supervisor is in the process of restarting the collector with the new configuration. The supervisor is still running and connected to Bindplane.
* **Pending**: Bindplane is preparing to send a new configuration to the collector. The collector process itself has not received any new messages from Bindplane and is still running the previously sent configuration.
* **Incompatible**: Bindplane attempts to send a new configuration to the collector, but stops before doing so because the receiving collector does not have one or more of the components specified.
  * Similar to pending, the collector has not received any message and is still running the previous configuration.
* **Upgrading**: The collector is in the process of upgrading to a new version. It is either downloading the new binary, updating the installation data, restarting, or rolling back the update.

### State Diagram

This is a state diagram to illustrate the potential transitions that may occur. These are heavily dependent on the exact reason an collector was in the previous state and what exactly happened to it. These scenarios are expansive and cannot be totally encapsulated in documentation like this.

{% @mermaid/diagram content="stateDiagram-v2
\[\*] --> Connected : Initial state

```
Connected --> Disconnected : Network interruption,<br/>collector stopped,<br/>server termination
Connected --> Error : Runtime/config/<br/>update error
Connected --> Configuring : New configuration<br/>received
Connected --> Pending : Queued for rollout
Connected --> Incompatible : Config with<br/>unsupported components
Connected --> Upgrading : Package upgrade<br/>initiated

Disconnected --> Connected : Connection restored

Error --> Connected : Error resolved
Error --> Disconnected : Connection lost<br/>during error
Error --> Configuring : New configuration<br/>received
Error --> Pending : Queued for rollout
Error --> Incompatible : Config with<br/>unsupported components
Error --> Upgrading : Package upgrade<br/>initiated

Configuring --> Connected : Configuration<br/>applied successfully
Configuring --> Disconnected : Connection lost<br/>during config
Configuring --> Error : Configuration<br/>failed

Pending --> Configuring : Configuration<br/>sent to collector

Incompatible --> Disconnected : Connection lost
Incompatible --> Error : Runtime error
Incompatible --> Configuring : New compatible<br/>configuration
Incompatible --> Pending : Queued for rollout
Incompatible --> Upgrading : Package upgrade<br/>initiated

Upgrading --> Connected : Upgrade successful
Upgrading --> Disconnected : Connection lost<br/>during upgrade
Upgrading --> Error : Upgrade failed" %}
```
