adeynes/cucumber

crash server

Closed this issue · 31 comments

could you add yamlv data provider

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

thanks

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?

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

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?

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

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?

@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

So the server crashes as soon as it turns on?

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

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?

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 :

  • le serveur se lance et une fois la config modifiée, la db et correctement créée dans phpmyadmin

  • les différentes commandes de cucumber fonctionnent correctement. pour info je gère les permissions dans pureperms pour mes admins

  • au bout d'un certain temps en général quelques heures, le serveur ne stoppe pas, mais il n'est plus online, on peut dire qu'il est comme "planté" . Pour mémoire j'utilise un host et mon serveur s'administre via un panel utilisateur simplifié. Mon serveur et ma base php sont indépendante et se consultent avec un panel différent.

  • quand le serveur plante, certaines fois le dernier message de server log indique "saving punishment". D'autres fois il n'y a aucun message en rapport avec cucumber et les dernières lignes concernent le chat ou tout autre plugin. Il n'y a jamais de message dans le dossier crashdump ni de message type "stopping server"

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

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 ?

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 .

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 ?

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

Ç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.

Merci beaucoup

@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

  • le serveur démarre et est online
  • le plugin s'initialise correctement et la db est créée

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

  • 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
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

Ç'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

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"

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

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).

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 :)

résultat de la requête timeout


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

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

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 :)

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

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

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.

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

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

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.