You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v2 · Préchauffer les extraits du défi du jour (tâche périodique) #279
Au démarrage d'une partie (POST /api/daily/sessions, E2), l'API demande à Deezer l'adresse de l'extrait audio de chacun des 5 morceaux du défi (ITrackPreviews, cache d'IPreviewProvider). Quand le cache est vide, par exemple à minuit quand tout le monde arrive, ces appels se font pendant que la transaction et le verrou du joueur sont tenus : si Deezer est lent ou en panne, chaque joueur garde une connexion à la base jusqu'à 15 s, et les connexions peuvent s'épuiser (toute l'API se bloque). Limite connue notée dans « Fait en E2 » (DEVELOPPEMENT.md).
À faire
Une tâche Hangfire daily-warm-previews (même mécanique que catalogue-refresh, IScheduledJob, AddScheduledJob) qui demande à Deezer les extraits des morceaux du défi du jour toutes les X heures et les met dans le cache d'IPreviewProvider, pour que les démarrages lisent la mémoire sans appeler Deezer.
Choisir X à partir de la durée de validité réelle des adresses signées de Deezer (paramètre exp de ?hdnea=exp=…~acl=…~hmac=…, à lire sur une vraie adresse) : le cache garde une adresse jusqu'à son expiration moins 1 h de marge (piège 14, CachedPreviewProvider), et ne la garde pas du tout s'il reste moins d'1 h. X doit donc rester inférieur à cette durée moins la marge.
Lancer aussi la tâche juste après la génération du défi (minuit, à la volée, bouton de l'admin) : le pic de minuit est le cas qui compte.
Ne tourne pas en staging si cela partage le quota Deezer de la prod (même IP, piège 16) : décider comme pour catalogue-refresh (Jobs:<id>:Cron à « jamais » dans appsettings.Staging.json).
Ajouter la tâche à ExpectedJobs de Jobs/ScheduledJobsTests, compte rendu { warmed, failed }, un échec Deezer (Unavailable) ne fait jamais échouer la tâche ni ne vide le cache.
Terminé quand
Tests verts (tâche appelée directement avec le faux Deezer : les extraits sont en cache, un démarrage ne fait aucune requête vers Deezer), et vérification en staging que le nombre de requêtes Deezer au démarrage d'une partie tombe à zéro après le passage de la tâche.
À planifier après la mise en staging de E2, avec de vrais chiffres. Alternative non retenue : lire les extraits avant d'ouvrir la transaction (étape de chargement hors du mécanisme de transaction automatique de Wolverine), plus propre mais plus invasif.
Activity
v2 E2 : verrou de la série par joueur, hôte de test transactionnel, p…
v2 E2 · Parties, score, série et gels (#278)