
Curiosidade cortou heap em 60% ao rastrear aviso ignorado em testes Ruby
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.