Skip to content

Investigar erro 413 (Request Entity Too Large) ao indexar diários no OpenSearch #112

@diraol

Description

@diraol

Descrição do Problema

Alguns diários oficiais estão falando ao serem processados devido a erro HTTP 413 (Request Entity Too Large) durante a indexação no OpenSearch.

Exemplo de Erro

Failed to process gazette 508688: 5300108/2023-12-27/887e185a5c5c45d145ed17869d88bc6e627e4fa5.pdf 
(territory: 5300108, date: 2023-12-27, checksum: beffd3c451eba534f8643a78181423a9). 
Error: TransportError: TransportError(413, '')

Possíveis Causas

O erro 413 indica que o tamanho da requisição excede algum limite configurado. As causas mais prováveis são:

  1. Documento indexado muito grande: O conteúdo extraído do PDF excede o limite de tamanho do documento
  2. Limite do OpenSearch: Configuração http.max_content_length (padrão: 100MB)
  3. Limite de proxy/load balancer: Se houver Nginx, ALB ou outro proxy na frente, pode ter limite menor
  4. Texto extraído muito extenso: PDFs com muitas páginas ou com OCR podem gerar textos muito longos

Investigação Necessária

  • Identificar o tamanho dos documentos que estão falhando
  • Verificar a configuração atual do http.max_content_length no OpenSearch
  • Verificar se há proxies com limites de tamanho de requisição
  • Analisar o tamanho médio dos diários processados com sucesso vs. os que falham
  • Verificar logs de monitoramento para document_size (já logado no código)

Possíveis Soluções

  1. Aumentar limite no OpenSearch:

    # opensearch.yml
    http.max_content_length: 200mb
  2. Aumentar limite em proxies (se aplicável):

    # nginx.conf
    client_max_body_size 200m;
  3. Implementar chunking: Dividir documentos muito grandes em partes menores

  4. Truncar conteúdo: Limitar o tamanho do texto indexado (menos ideal, pode perder informações)

  5. Compressão: Habilitar compressão de requisições HTTP no cliente OpenSearch

Contexto

O código atual já faz retry com exponential backoff (3 tentativas) e loga o tamanho dos documentos. O log está em index/opensearch.py linhas 139-146.

Arquivos Relacionados

  • index/opensearch.py - Implementação da indexação
  • monitoring/ - Logs de operações e erros do OpenSearch

Labels Sugeridas

  • bug
  • opensearch
  • infrastructure

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions