# Como resolver o erro "Pipeline execution was aborted"

A Digibee Integration Platform foi projetada para operações contínuas com alta disponibilidade. Contudo, cada implantação requer configurações adequadas para evitar que a capacidade do pipeline seja ultrapassada, o que pode causar uma indisponibilidade temporária.

Veja como investigar e resolver esse erro caso ele apareça na página [**Execuções concluídas**](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/dashboards/completed-executions) em **Monitor**:

{% code overflow="wrap" %}

```json
{
    "timestamp": 1710944570421,
    “error”: “This pipeline execution was aborted and cannot be automatically retried because it was configured to disallow redeliveries.”,
    “code”: 500
}
```

{% endcode %}

## **Passos para identificar, resolver e prevenir o erro**

Esse erro costuma ocorrer devido ao uso excessivo de memória e/ou CPU. Mesmo implantações do tipo Large possuem limites de capacidade que precisam ser observados.

### **Identificando a causa do erro**

#### **Monitore a implantação do pipeline**

Na página **Monitor**:

* Acesse a aba [**Métricas**](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/dashboards/pipeline-metrics) e filtre pelo período de tempo no qual o erro em questão ocorreu. Quanto menor o período de tempo selecionado, mais precisos serão os valores no gráfico. Aprenda mais sobre [Pipeline Metrics](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/dashboards/pipeline-metrics).
* Verifique se a memória ou CPU excederam. Os limites são:
  * Memória: 100%
  * CPU: Small (20%), Medium (40%) e Large (80%)

    Para mais detalhes, consulte a documentação do [Pipeline Engine](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/overview/runtime/pipeline-engine).
* Confirme se os payloads de entrada e saída não ultrapassam 5 MB ou o limite configurado no trigger.
* Nas abas [**Execuções concluídas**](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/dashboards/completed-executions) ou [**Pipeline logs**](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/dashboards/pipeline-logs), revise os últimos passos antes do erro ocorrer.

#### **Revise a configuração do pipeline**

Na página **Build**, acesse o pipeline e confira se um dos seguintes cenários se aplicam:

* Carregamento de arquivos grandes (por exemplo, arquivos com mais de 7 MB ou que excedam o limite do conector [**File**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files)).
* Recuperação de altos volumes de dados pelo conector [**DB**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/db-v2).
* Uso de conectores [**REST**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/web-protocols/rest-v2) ou [**SOAP**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/web-protocols/soap-v3), que podem exigir muitos recursos.
* Grande número de conectores com interações externas (como [**REST**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/web-protocols/rest-v2), [**SOAP**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/web-protocols/soap-v3), [**DB**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/db-v2), [**Script**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/tools/script), [**File**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files)).
* Blocos de loop com conectores externos em execução em paralelo ou em sequência.
* Uso de [**Parallel Execution**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/parallel-execution) seguido de múltiplos conectores externos.
* Logs excessivos ou extensos.

### **Corrigindo o erro**

Após identificar o problema, considere implementar uma ou mais das seguintes estratégias:

* Aumente o tamanho da implantação do pipeline.
* Reduza o número de execuções simultâneas.

{% hint style="info" %}
A memória da implantação é compartilhada entre as execuções simultâneas. Por exemplo, se houver 40 execuções em uma implantação Large, a memória total será dividida entre elas. Reduzindo para 30 execuções, cada uma terá mais memória, o que aumenta a estabilidade.
{% endhint %}

* Reduza a quantidade de dados na entrada ou saída do pipeline.
* Gerencie a carga de dados com limites, filtros e [paginação](https://app.gitbook.com/s/XfrDexGOLMin51pAiWkq/use-cases/integration-performance-api-pagination).
* Aumente a frequência do pipeline para processamentos mais leves e frequentes.
* Encurte ou remova logs com payloads grandes.
* Libere a memória de conectores de gerenciamento de sessão usando a operação `DELETE`.
* Priorize execuções sequenciais em vez de paralelas.
* Divida o processamento em vários pipelines.

### **Otimizando a implantação**

Para configurar uma implantação otimizada e estável, comece publicando e monitorando a sua performance para identificar áreas que precisam de ajuste.

Além de alocar recursos computacionais adequados (escalabilidade vertical), assegure-se de que o número de execuções simultâneas (escalabilidade horizontal) está balanceado para manter uma taxa de processamento consistente.

Considere também o tamanho da fila aceitável e a taxa de vazão desejada, que relaciona execuções por segundo (EPS) ao tempo de resposta do pipeline.
