Optimisation des requêtes pour l'économie#1333
Conversation
6c8e2c3 to
70dde0d
Compare
70dde0d to
a2a7db9
Compare
|
au lieu de sauvegarder tout les x temps, pourquoi tu save pas juste a la db au moment ou le plugin se desactive |
|
C'était marqué dans l'issue |
C’est déjà fait xd au L’autosave est volontaire en plus du shutdown save ça évite de perdre toutes les modifications depuis le démarrage si le serveur crash/kill ou si l’arrêt ne va pas jusqu’au bout. Et il ne sauvegarde pas tous les balances à chaque fois, seulement les UUID marqués dirty depuis la dernière sauvegarde :) |
|
Le serveur n'est pas cense etre kill ou crash, meme il ne sera jamais kill... |
|
Ben après il peut crash oui. Mais il est tjr éteint à 2h donc cv |
|
Même si le serveur n’est pas censé crash il peut crash mdrrrrr l’autosave limite la perte si ça arrive et dans tous les cas le coût en perf est faible on ne save pas tous les comptes seulement les dirty en batch |
|
Tu appelles quoi un compte dirty? |
|
Dirty = modifié depuis le dernier save DB |
|
Le probleme, est que la le lag a lieu lors de la premiere connexion des joeurs, c'est un moment que l'on avait fait avec 50bots de souvenir, et le lag venait du save a la db, donc la si je comprends bien, a un moment, le serveur va lag parcequ'il save toutes les donne dans la db a un moment x |
|
Fin et déjà pour qu'on valide le problème, il faudra que tu donnes un jar de ton plugin, on fait un teste avec 50-100 joueurs, et on attends jusqu'au moment où le scheduler s'exécute pour save la db, et on tentera |
|
Bon @gtolontop, si c'est pour faire du vibecoding sur le projet ce n'est pas la peine de venir faire une PR. |
|
Le satan qui se réveille avec le full vibecoding qui fait mal |
MDRRRRR, elle est vraiment niquel ma PR je vois pas le soucis + c'est pas du vibecoding mais j'avoue que mon code a une vibe très propre :) |
Très propre se vibecoding en tous cas |
Dis-moi, qu'aurais-tu fait différemment ? |
|
Donc pourquoi il y a ecris |
Honnetement, bcp de chose, mais si tu "ne vibecode pas" chaque developpeur fait differemment donc je n'aurais pas fait pareil que toi |
Tu mets tout sur le principe de la raison? Pourquoi ? |
|
On va réfléchir à un débat entre le staff. |
|
Bonjour, la PR est-elle prête à être revue ? Je vois qu’elle est encore en draft.
|
Oui j’ai résumé trop vite xd sur les tests j'obtiens
Dans le XML de test, les fails sont :
Donc quand j’ai dit Dream/NMS, je parlais de ces causes-là, mais j'essaierais d'être plus précis directement les prochaines fois |
Tkt je préfère que tu me demandes des choses comme cela a la place de l'IA qui te résume mais qui sait pas vrm 👍 |
Tu vois je savais pas que ça crash a cause de la dimension des rêves j'avais pas check et le problème c'est les transactions en async qui fail tt |
Bonjour, elle est encore en draft justement parce que je préfère traiter les retours avant de la passer ready. Pour la réflexion dans les tests je comprends se que tu dis mais j’ai vérifié, Mockito n'est pas dans les dépendances du projet. Je peux soit ajouter Mockito si vous êtes ok avec ça, soit refactorer le test / la logique pour éviter la réflexion. Pour les tests Pour les copies mémoire elles sont là pour éviter qu’un objet mutable récupéré depuis l’API soit modifié sans passer par le dirty tracking. par exemple si |
J'avais bien run les tests juste j'avais pas pensé a te remonter exactement les tests xd |
Si tu fais une issue je pourrais regarder :) |
Tu peux la faire aussi, elle sera validé tkt pas |
Tu veux que je commit sur la même PR ? |
|
Généralement, tu dois ouvrir ta PR pour qu'on sache qu'on peut review. Fait comme cela, sinon il risque d'avoir des oublis |
De fixer les tests? Fait en une autre |
ne t'étonne pas si ta PR ne se fait pas review. |
Bonjour, Il est préférable de passer la PR en ready si vous jugez qu’elle est prête pour la production. Étant donné que nous ne sommes pas nombreux à maintenir le projet, nous nous concentrons principalement sur celles qui sont en ready afin de fournir des retours. Concernant la réflexion, il serait préférable de la retirer, mais sans utiliser Mockito. Cela fera l’objet d’une autre PR. Concernant le clone, je laisse @PuppyTransGirl vérifier et nous donner son avis afin d’en discuter. De mon côté, je ne suis pas particulièrement favorable. |
Elle est déjà ouverte la PR ? J'ai pas compris |
Elle n'est pas en ready for review, elle est en draft |
C'est bon :) |
Pourquoi faudrait-il la retirer si c'est correct et que ça fonctionne bien ? Et ça n'utilise déjà pas Mockito. |


Petit résumé de la PR:
Optimise la persistance des soldes économie en regroupant les écritures DB des balances modifiées.
Étape nécessaire afin que la PR soit fini (si PR en draft)
2.5.0à assigner)Fixes [BUG] Optimisation de EconomyManager.setBalance #1332
Decrivez vos changements
EconomyManagerécrivait en DB à chaque changement de solde viaplayersDao.createOrUpdate, notamment depuissetBalance,addBalanceetwithdrawBalance.Cette PR garde les soldes à jour en mémoire immédiatement, marque uniquement les comptes modifiés comme à sauvegarder, puis persiste ces comptes en batch avec
saveAllBalances():Le cache utilise aussi
computeIfAbsentpour conserver les nouveaux comptes en mémoire avant leur première sauvegarde. En cas d'erreur pendant la sauvegarde batch, les comptes concernés sont remis dans la liste à sauvegarder.