SharebookBR / sharebook-backend

Projeto backend de código livre para o app Sharebook.
117 stars 75 forks source link

Resolve alguns problemas no job. #371

Closed raffacabofrio closed 4 years ago

raffacabofrio commented 4 years ago

A gente tinha intenção de usar o conceito de "fire and forget" em alguns métodos assíncronos. A intenção era boa. Mas infelizmente não funcionou. Eventualmente cerca de 30% dos métodos assíncronos "morriam" antes de terminar seu trabalho.

Creio que tenha a ver com o garbage collector. Tendo em vista que o processo principal finalizou, pra todos os efeitos esse processo assíncrono parecia orfão. E eventualmente o garbage colector matava ele.

Fiz uma validação em dev. Coloquei Wait() em todos os métodos assíncronos. E obtive 100% de aproveitamento. Alguns endpoints ficaram um pouco mais lento. Mas acho que vale a pena.

sonarcloud[bot] commented 4 years ago

SonarCloud Quality Gate failed.

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities (and Security Hotspot 0 Security Hotspots to review)
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

warning The version of Java (1.8.0_221) you have used to run this analysis is deprecated and we will stop accepting it from October 2020. Please update to at least Java 11. Read more here

AppVeyorBot commented 4 years ago

:white_check_mark: Build Sharebook-Backend: PR Check 1.0.83-fojhwtdk completed (commit https://github.com/SharebookBR/sharebook-backend/commit/83b032a393 by @raffacabofrio)

raffacabofrio commented 4 years ago

Parece que a minha teoria faz sentido. Se liga só...

https://stackoverflow.com/questions/2782802/can-net-task-instances-go-out-of-scope-during-run

raffacabofrio commented 4 years ago

Em tempo. Tentei usar o TaskWaitAll() para ter algum ganho de performance, mas deu treta com o EF. Vou manter o .Wait() mesmo.

image