MPMG-DCC-UFMG / C01

Coleta de Dados Públicos
GNU General Public License v3.0
18 stars 9 forks source link

Mitigar possível condição de corrida ao iniciar múltiplos spiders #998

Open lucasaug opened 2 years ago

lucasaug commented 2 years ago

Comportamento Esperado

Desejamos ter a garantia de que a execução de todos módulos ocorra corretamente, mesmo durante uso paralelo intenso. Para isso, na situação que descreveremos, uma nova versão do arquivo settings.py só pode ser criada pelo spider_manager após termos certeza de que a versão anterior já foi lida e não será lida novamente. Para isso serão necessários mecanismos de comunicação entre processos.

Comportamento Atual

Quando uma coleta é executada, o módulo spider_manager recebe a requisição de criação de uma nova spider. Ao receber essa requisição, cria um arquivo settings.py com as configurações, e executa o código da spider em um processo separado. Esse código da spider lê o arquivo settings.py gerado e carrega de lá algumas configurações. Enquanto isso, o processo principal notifica que criou uma nova spider (através do Kafka) e volta a aguardar novos comandos. Um risco em potencial é que, caso dois comandos de criação de spider sejam recebidos consecutivamente, o spider_manager sobrescreva o arquivo settings.py da primeira spider antes que ela efetue a leitura desse arquivo. Dessa forma, ela erroneamente leria a configuração da segunda spider. Não temos um exemplo disso acontecendo, mas é importante que existam mecanismos que previnam atimente que essa situação ocorra.

Passos para reproduzir o erro

Não aplicável.

Especificações da Coleta

Não aplicável.

Sistema

Branch distributed-system.

lucasaug commented 2 years ago

Hey team! Please add your planning poker estimate with ZenHub @elvesrodrigues @rennancordeiro