A falha prolongada do Cloudflare foi resultado de um tratamento incorreto de erros.

A Cloudflare publicou uma análise de um dos maiores incidentes em sua infraestrutura, que fez com que grande parte da rede de entrega de conteúdo ficasse fora do ar por mais de 3 horas. A falha ocorreu após uma modificação na estrutura do banco de dados armazenado no ClickHouse, após a qual o arquivo com os parâmetros para o sistema de combate a bots aumentou duas vezes seu tamanho. Foram formadas tabelas duplicadas no banco de dados, embora a consulta SQL para formar o arquivo simplesmente extraísse todos os dados de todas as tabelas pela chave, sem filtrar duplicatas. SELECT name, type FROM system.columns WHERE table = ‘http_requests_features’ order by name;

A falha prolongada do Cloudflare foi resultado de um tratamento incorreto de erros.

O arquivo criado se espalhou por todos os nós do cluster que processa as requisições de entrada. No manipulador que usa esse arquivo para verificar acessos de bots, os parâmetros especificados no arquivo eram armazenados na memória e, para evitar o consumo excessivo de memória, o código tinha um limite para o tamanho máximo do arquivo permitido. Em condições normais, o tamanho real do arquivo era significativamente menor do que o limite imposto, mas após a duplicação das tabelas, superou o limite.

O problema estava na falta de um tratamento adequado para a superação do limite e na continuidade do uso da versão anterior do arquivo, com a notificação do sistema de monitoramento sobre a situação de emergência; em vez disso, o manipulador falhava, bloqueando o fluxo de tráfego. O erro foi causado pelo uso do método unwrap() em Rust com o tipo Result.

A falha prolongada do Cloudflare foi resultado de um tratamento incorreto de erros.

Quando o valor de Result tem o estado 'Ok', o método unwrap() retorna o objeto associado a esse estado; mas se o resultado não for bem-sucedido, a chamada resulta em falha (um macro 'panic!' é chamado). Normalmente, o unwrap() é usado durante a depuração ou na escrita de código de teste e não é recomendado para uso em projetos em produção.

A falha prolongada do Cloudflare foi resultado de um tratamento incorreto de erros.
A falha prolongada do Cloudflare foi resultado de um tratamento incorreto de erros.


Fonte: opennet.ru
Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster