adeynes / cucumber

Moderation plugin for PocketMine-MP
GNU General Public License v2.0
29 stars 11 forks source link

crash server #5

Closed teracube closed 6 years ago

teracube commented 6 years ago

could you add yamlv data provider

because my server crash using cucumber with mysql db and no error on log

thanks

adeynes commented 6 years ago

No. YAML isn't a storage format, it's a configuration format.

What's the error message? Do you have MySQL installed and have you configured the settings in config.yml?

teracube commented 6 years ago

no error message server crash with cucumber i have configured config.yml and plugin work. on phpmyadmin i see cucumber db and tables my server is hosted on phpmyadmin there is a SQL panel

thanks

adeynes commented 6 years ago

If the server crashes there has to be an error message. When does the server crash? Right after startup? Does it crash when you run a command? What did you do before it crashed? What's the message before the "stopping server" message?

teracube commented 6 years ago

when the problem appears the server is offline but there is no message "stopping server". server crash when 20 to 60 players are connected. it's a ramdom problem i don't know reproduce this issue. in some case last message on server log file is "saving punishment" in other case no last message regarding cucumber if i remove cucumber no problem no others plugin than cucumber are using mysql db on my server in config worker-limit: 2

thanks

adeynes commented 6 years ago

Could you send a screenshot of the server's console before it crashes or copy-paste the last few messages in the log file before a crash? Thanks Also, how often does this happen, and does it usually happen after you've banned/muted/pardoned a lot of players? Are punishments like bans successfully getting saved?

teracube commented 6 years ago

@adeynes I tested latest build Dev #35 and new PMMP v1.6 stable 1413 and server panel show unable to connect and the server is offline latest line on server log is 2018-08-29 [19:49:15] [Server thread/INFO]: Enabling cucumber v1.5.0

thanks

adeynes commented 6 years ago

So the server crashes as soon as it turns on?

teracube commented 6 years ago

with latest build Dev #35 server don't turn on and stay offline with build Dev #34 server turn on and stay online, but crash randomly with many players

sorry my english is bad, i'm french

adeynes commented 6 years ago

Parfait, je suis français aussi. Il ne faut pas utiliser 35, c'est pas un build stable. Avec #34, quels sont les messages juste avant que le serveur crash? Et avec quelle fréquence est-ce que le serveur crash? C'est à peu près toutes les heures? 2 fois par jours? Quelques fois par semaine?

teracube commented 6 years ago

super ce sera plus façile pour moi d'expliquer en français Dans la configuration suivante PMMP 1.5 stable et cucumber stable dev 34 PocketMine-MP/1386/ https://poggit.pmmp.io/r/40190/cucumber_dev-34.phar

J'ai constaté que :

La fréquence des plantages augmente avec le nombre de joueurs connectés et donc d'utilisation de cucumber. On peut dire environ toute les 2 heures en moyenne

J'ai essayé de reproduire le pb sur un petit serveur de test mais sans succès.

Je n'ai aucun autre plugin qui utilise une base sql. Les données des autres plugins sont sauvegardées dans le répertoire plugin datas. Si cela pourrais etre une évolution de cucumber, je veux bien tester

Si je retire cucumber, mon serveur ne plante pas.

J'ai peut être un problème d'écriture entre mon serveur et ma bd ??

dsl je ne peux apporter plus d'information tant le problème est vague.

Merci

adeynes commented 6 years ago

Merci pour toutes les infos. Qu'arrive aux joueurs quand le serveur s'arrête ? Est-ce qu'ils sont tous kicked ? Aussi, est-ce que la console continue de fonctionner après que le serveur plante ? Êtes-vous capables d'utiliser des commandes dans la console ?

teracube commented 6 years ago

Quand le serveur s’arrête, tous les joueurs sont déconnectés. Je ne peux pas dire s’ils sont kicked ou timeout car rien dans le log. la console ne fonctionne plus .

adeynes commented 6 years ago

Vous dites que le dernier message est parfois "Saving punishments". En général, est-ce que le serveur plante peu après ce message (quelques minutes) ou est-ce que c'est réparti uniformément ?

teracube commented 6 years ago

en général le serveur plante peu après ce message. Mais il n’y a pas toujours de message.

adeynes commented 6 years ago

Ça doit être un problème avec la sauvegarde des punitions alors. Je suis en train de changer la manière dont elles sont sauvegardées, j'espère que ça résoudra votre problème. Ça ne devrait pas prendre très longtemps, j'espère l'avoir fini avant la fin de la semaine.

teracube commented 6 years ago

Merci beaucoup

teracube commented 6 years ago

@adeynes

J'ai fait un raz de ma db et du plugin pour refaire un test sur mon serveur de test cucumber dev 34 PocketMine-MP/1413 stable 1.6

Par contre testant le plugin la fonction de ban est KO et j'ai l'erreur çi dessous dans les logs

2018-08-30 [09:00:10] [Server thread/ERROR]: [cucumber] SQL PREPARE error: MySQL server has gone away, for query INSERT INTO players (name, ip, first_join, last_join)
VALUES (?, ?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())
ON DUPLICATE KEY UPDATE ip = ?, last_join = UNIX_TIMESTAMP(); | ["Player311269","37.XXX.XXX.108","37.XXX.XXX.108"]
2018-08-30 [09:00:19] [Server thread/INFO]: Player311269[/37.XXX.XXX.108:45591] logged in with entity id 3 at (lobby, 273, 66, 252)
2018-08-30 [09:00:20] [Server thread/INFO]: Server op Player311269 joined.

on dirait un pb lorsque le joueur rejoint le serveur

adeynes commented 6 years ago

Ç'est peut-être une erreur avec le virion libasynql alors. Je l'utilise pour faire des queries async sur la db. L'erreur veut dire que la db a timeout (après un certain temps MySQL se déconnecte si la db n'est pas pinged). Je suis en train de voire avec le dev de libasynql si c'est une erreur de son côté. Merci

teracube commented 6 years ago

Merci, j'ai update mon commentaire précédent "le joueur n'a pas été créé dans la table players. Dans la table players je n'ai que CONSOLE en première ligne et rien d'autre. Les 4 autres tables sont vierges"

adeynes commented 6 years ago

D'accord

Pouvez-vous exécuter le query suivant dans MySQL?

SHOW VARIABLES LIKE 'wait_timeout';

Cela devrait dire qqc du genre:

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+

(La Value est peut-être différente, c'est ça qui m'intéresse.) Merci

adeynes commented 6 years ago

Le premier problème (le crash après la sauvegarde des punitions) est un bug avec pthreads. J'ai parlé avec le dev de libasynql (la librarie qui utilise pthreads) hier, est aujourd'hui il a fixé ce bug. Je vais voire si poggit peut re-construire le build, dans quel cas vous pourrez utiliser ce nouveau build et le problème sera fixé (normalement).

adeynes commented 6 years ago

Le build dev #36 devrait résoudre le premier problème. Je viens juste de le tester et il fonctionne, mais je ne suis pas 100% sûr si ça fixe vraiment le pb. Essayez-le, je pense que ça devrait marcher :)

teracube commented 6 years ago

résultat de la requête timeout


Variable_name | Value |  
-- | -- | --
wait_timeout | 28800
teracube commented 6 years ago

J'ai testé le build dev #36 avec PMMP stable 1413 tout semble OK, j'ai juste cette erreur qui semble être liée à un mauvais argument dans la commande lancée

2018-08-30 [13:40:35] [Server thread/CRITICAL]: Unhandled exception executing command 'ban Player78659 test -d 30m1d' in ban: Return value of adeynes\cucumber\libs\adeynes\parsecmd\CommandParser::parseDuration() must be of the type integer, boolean returned
2018-08-30 [13:40:35] [Server thread/CRITICAL]: TypeError: "Return value of adeynes\cucumber\libs\adeynes\parsecmd\CommandParser::parseDuration() must be of the type integer, boolean returned" (EXCEPTION) in "cucumber_dev-36.phar/src/adeynes/cucumber/libs/adeynes/parsecmd/CommandParser" at line 70
2018-08-30 [13:40:35] [Server thread/DEBUG]: #0 cucumber_dev-36.phar/src/adeynes/cucumber/command/BanCommand(35): adeynes\cucumber\libs\adeynes\parsecmd\CommandParser::parseDuration(string 30m1d)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #1 cucumber_dev-36.phar/src/adeynes/cucumber/libs/adeynes/parsecmd/Command(65): adeynes\cucumber\command\BanCommand->_execute(pocketmine\Player object, adeynes\cucumber\libs\adeynes\parsecmd\ParsedCommand object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #2 src/pocketmine/command/SimpleCommandMap(258): adeynes\cucumber\libs\adeynes\parsecmd\Command->execute(pocketmine\Player object, string ban, array Array())
2018-08-30 [13:40:35] [Server thread/DEBUG]: #3 src/pocketmine/Server(1955): pocketmine\command\SimpleCommandMap->dispatch(pocketmine\Player object, string ban Player78659 test -d 30m1d)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #4 src/pocketmine/Player(2191): pocketmine\Server->dispatchCommand(pocketmine\Player object, string ban Player78659 test -d 30m1d)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #5 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(222): pocketmine\Player->chat(string /ban Player78659 test -d 30m1d)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #6 src/pocketmine/network/mcpe/protocol/CommandRequestPacket(54): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleCommandRequest(pocketmine\network\mcpe\protocol\CommandRequestPacket object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #7 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(92): pocketmine\network\mcpe\protocol\CommandRequestPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/protocol/BatchPacket(114): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(pocketmine\network\mcpe\protocol\CommandRequestPacket object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(92): pocketmine\network\mcpe\protocol\BatchPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #10 src/pocketmine/Player(3056): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #11 src/pocketmine/network/mcpe/RakLibInterface(162): pocketmine\Player->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #12 vendor/pocketmine/raklib/src/server/ServerHandler(98): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string 37.XXX.XXX.57 35585, raklib\protocol\EncapsulatedPacket object, integer 0)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #13 src/pocketmine/network/mcpe/RakLibInterface(103): raklib\server\ServerHandler->handlePacket()
2018-08-30 [13:40:35] [Server thread/DEBUG]: #14 src/pocketmine/network/Network(94): pocketmine\network\mcpe\RakLibInterface->process()
2018-08-30 [13:40:35] [Server thread/DEBUG]: #15 src/pocketmine/network/mcpe/RakLibInterface(80): pocketmine\network\Network->processInterface(pocketmine\network\mcpe\RakLibInterface object)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #16 vendor/pocketmine/snooze/src/SleeperHandler(120): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}()
2018-08-30 [13:40:35] [Server thread/DEBUG]: #17 vendor/pocketmine/snooze/src/SleeperHandler(82): pocketmine\snooze\SleeperHandler->processNotifications()
2018-08-30 [13:40:35] [Server thread/DEBUG]: #18 src/pocketmine/Server(2259): pocketmine\snooze\SleeperHandler->sleepUntil(double 1535629235.3693)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #19 src/pocketmine/Server(2134): pocketmine\Server->tickProcessor()
2018-08-30 [13:40:35] [Server thread/DEBUG]: #20 src/pocketmine/Server(1700): pocketmine\Server->start()
2018-08-30 [13:40:35] [Server thread/DEBUG]: #21 src/pocketmine/PocketMine(243): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /home/myservertest/, string /home/myservertest/plugins/)
2018-08-30 [13:40:35] [Server thread/DEBUG]: #22 /home/myservertest/PocketMine-MP.phar(1): require(string phar:///home/myservertest/PocketMine-MP.phar/src/pocketmine/PocketMine.php)

ras d'autre

merci beaucoup. tenez moi au courant pour la correction du crash après la sauvegarde des punitions

adeynes commented 6 years ago

Ah oui, j'ai déjà vu ce problème, il arrive quand les durées ne sont pas arrangées de la plus grande à la plus petite. 30m1d = 30 minutes et 1 jour, ça devrait être 1d30m. Je pense que je sait ce qui cause ce pb et j'espère le fixer bientôt. La crash après la sauvegarde devrait être corrigée avec le build 36, mais commentez sur cette issue si ça continue d'arriver. Merci pour toutes les infos, je sortirai bientôt la version 1.6 avec beaucoup de fix de bugs.

Merci d'utiliser cucumber :)

teracube commented 6 years ago

Bonjour, dans la 1.6 il serait top de prévoir une sélection de langage Français ou Anglais. sinon je modifierai messages.yml merci

adeynes commented 6 years ago

Bonne idée, je pourrais avoir un fichier pour chaque langage et on peut en sélectionner un dans config.yml

adeynes commented 6 years ago

Bonjour @teracube J'ai rajouté un système de langues, pouvez-vous me dire ce que vous pensez de la traduction française: https://github.com/adeynes/cucumber/blob/master/resources/lang/fr.yml? Je ne parle pas souvent français, donc je ne suis pas sûr si tout a du sens. Merci

Je pense sortir la 1.6 dans les jours suivant, ce qui fixera le bug avec les durées et supportera anglais et français.

teracube commented 6 years ago

Bonsoir @adeynes Veuillez trouver ci-joint une proposition de traduction. J'ai un peu de mal à traduire mute et unmute qui n'ont pas d'équivalent en bon français. J'ai parlé de désactivation/réactivation du tchat. Merci de vérifier la syntaxe du yaml. Merci beaucoup pour votre travail. Je vous propose de tester la 1.6 sur mon serveur quand celle ci sera disponible

fr2.yml.zip

teracube commented 6 years ago

Bonjour @adeynes quelques modifications à la traduction française fr3.zip Merci

adeynes commented 6 years ago

Merci beaucoup, j'ai remplacé la plupart de ma traduction par la vôtre. Vous pouvez tester la 1.6 (1.6.2) dès maintenant avec le build 42: https://poggit.pmmp.io/ci/adeynes/cucumber/cucumber/dev:42 Je l'ai rapidement testé et tout semble bien marcher, mais j'attends de le tester plus complètement avant de faire une nouvelle release.