Channels

Resolução de um bug silencioso em Go

Go concurrency channels static-analysis ollanta
Como um select ausente quase matou o graceful shutdown do projeto

Um canal que não escuta

Canais em Go é uma daquelas features que parecem simples até você precisar usá-la em produção com centenas de goroutines concorrentes. E é aí que “a jiripoca começa a piar”.

Este artigo conta a história de um bug silencioso que encontrei durante uma revisão de código no Ollanta, um projeto pessoal de análise de código estático multi-linguagem escrito em Go. O bug não quebrava testes, não produzia panic, não gerava erro no linter. Mas, em condições específicas, impedia o graceful shutdown do scanner por tempo indeterminado.

Leia mais →