stamatios
← Voltar ao feed
Curiosidade cortou heap em 60% ao rastrear aviso ignorado em testes Ruby
Dev & Engenharia

Curiosidade cortou heap em 60% ao rastrear aviso ignorado em testes Ruby

resumo de ~3 min

O problema: um warning ignorado

Ao trabalhar em uma nova funcionalidade, o autor notou que um agente de IA filtrava repetidamente um warning Ruby nos testes:

aws-sdk-core-2.11.420/lib/aws-sdk-core/structure.rb:63: warning: redefining 'object_id' may cause serious problems

Seguindo a Boy Scout Rule ("deixe o lugar melhor do que encontrou"), decidiu investigar.

Causa raiz

A combinação de opentelemetry-instrumentation-aws_sdk com uma versão desatualizada do aws-sdk (v2) causava o carregamento forçado de todos os ~200 serviços AWS no boot. O método loaded_service_clients fazia Aws.const_get em cada constante de Aws.constants, disparando os autoloads. Entre eles, o serviço DataPipeline redefinia object_id como acessor de Struct, gerando o warning. A aplicação usava apenas alguns serviços do catálogo inteiro.

A correção

O autor aplicou um prepend no módulo de instrumentação do AWS SDK para pular constantes que ainda estavam em estado de autoload - ou seja, só processava serviços já carregados de fato, sem forçar o carregamento dos demais.

Resultados

O benchmark mostrou impacto expressivo:

Métrica Antes Depois Redução
Arquivos aws-sdk-core carregados 259 2 -
Serviços carregados 220 0 -
Classes na VM 33.265 13.137 -60%
Heap (memsize) 163,8 MB 67,1 MB -59%
Hot boot (mín. de 3) 2,69 s 1,72 s -36%

Conclusão do autor

Nunca foi tão barato melhorar continuamente a base de código. Não é preciso reservar blocos grandes de tempo nem criar processos sofisticados - basta um pouco de curiosidade para investigar sinais que aparecem no dia a dia, iterar em passos pequenos e deixar o código um pouco melhor para si, para os agentes e para o time.