9e4b4a0162
All checks were successful
continuous-integration/drone/push Build is passing
Changement des imports dans les fichiers go de bottin et ldapserver. Rajout d'un fichier txt dans test-automatique pour reproduire le bug des requêtes ldap.
40 lines
1.8 KiB
Text
40 lines
1.8 KiB
Text
Introduction et Observation premières:
|
|
|
|
Lors de la réalisation de mon code Go, j'ai trouvé un beug qui provoquait l'arrêt de mon programme car Bottin envoyé une réponse erronée à mon programme.
|
|
Dans logs de Bottin je ne voyais aucune erreur, Bottin n'avait pas cessé de fonctionner. Il s'arrêtait à chaque fois sur mes requêtes Del (mes dernières).
|
|
|
|
|
|
Reproduction du beug:
|
|
|
|
Pour reproduire le beug, il suffit de lancer le programme interrogation.go et de commenter les lignes suivantes :
|
|
|
|
260 //Close the connection and open an other. If we don't do this, bottin server send a wrong answer. Comment this part if you want to try this
|
|
261 l.Close()
|
|
262 l, err = ldap.Dial("tcp", fmt.Sprintf("%s:%d",adresse, port))
|
|
263 printError(err)
|
|
264 err = l.Bind(bindusername, bindpassword)
|
|
265 printError(err)
|
|
|
|
Ainsi on obtient l'erreur suivante:
|
|
|
|
2021/07/07 01:25:51 Received unexpected message -128, false
|
|
|
|
|
|
Test réalisé pour comprendre la source du problème:
|
|
|
|
Ma première hypothèses fut que j'envoyais trop de requêtes dans un court laps de temps et ainsi Bottin ou Consul ne pouvait pas suivre.
|
|
J'ai placé un sleep de 50 puis de 100 Millisecondes entre chaque requête, j'obtenais toujours la même erreur.
|
|
J'ai essayé de mettre un sleep de 10 secondes avant mes requêtes de suppression mais j'obtenais toujours la même chose.
|
|
|
|
Hack pour résoudre:
|
|
|
|
La première solution qui a fonctionné était de réduire le nombre de requêtes en n'exécutant pas certains tests random.
|
|
La dernière solutions qui est utilisée:
|
|
Fermée la connexion puis la réouvrir permet de palier à ce problème
|
|
|
|
Hypothèses du problème ?:
|
|
|
|
Existerait-il un Buffer par Bind qui se remplirait ? Et lorsque celui-ci est plein, ne renvoie pas d'erreur juste n'arrive plus à répondre.
|
|
|
|
Erwan DUFOUR
|
|
Deuxfleurs
|