matthieu637 / cpp-2a-crawler

2 stars 0 forks source link

fix #62 #59 #64

Closed matthieu637 closed 7 years ago

matthieu637 commented 7 years ago

Ça devrait être bon pour l'utilisation des wait/notify avec plusieurs threads.

matthieu637 commented 7 years ago

J'ai également corriger un peu la javadoc. Il faut commencer par l'explication pour les méthodes, sinon ça n’apparaît pas dans la documention. Le tag @author est à répéter. J'ai également ajouté un formateur commun à utiliser dans eclipse (pour augmenter la largeur des lignes).

matthieu637-bot commented 7 years ago

42% (-3.5%) vs master 45%

david540 commented 7 years ago

Environ 1 fois sur 10 on a ce message d'erreur : Exception in thread "Thread-0" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at cpp2017.parser.Parser.run(Parser.java:69) C'est comme si le verrou sur la queue : synchronized (LinkQueue.getInstance()) ne suffisait pas et je comprend pas pourquoi. La solution que j'avais trouvé c'était d'ajouter un lock(), mais bon ...

matthieu637 commented 7 years ago

Ah d'accord je me demandais pourquoi il y avait le lock. Je n'arrive pas à reproduire ton erreur. Tu utilises quoi en main ? L'erreur vient vers le début ou la fin du programme ?

david540 commented 7 years ago

J'ai pull cette branche donc j'ai le même main, après mon run sous eclipse c'est run Principale (2) mais c'est le bon. Ca arrive au début, et ensuite le thread 10 n'affiche pas de lien. Mais après faut bien run une dizaine de fois avant de tomber dessus.

david540 commented 7 years ago

Après ça dépend sûrement de la machine, faut que je trouve un main() qui cause le bug à chaque fois

david540 commented 7 years ago

En mettant les start des 2 threads en même temps, j'ai l'erreur à chaque fois : Parser testJsoupParser = ParserFactory.getInstance().getParser(ParserFactory.TYPE_JSOUP_PARSER); Parser testJsoupParser2 = ParserFactory.getInstance().getParser(ParserFactory.TYPE_JSOUP_PARSER); testJsoupParser.registerRudder(testNaiveRudder); testJsoupParser2.registerRudder(testNaiveRudder); testJsoupParser2.start(); testJsoupParser.start();

matthieu637-bot commented 7 years ago

42% (-2.73%) vs master 45%

matthieu637 commented 7 years ago

Même avec une quinzaine de thread qui commence en même temps, je peux ne peux pas reproduire l'erreur.

Peux-tu me redonner les traces avec le dernier commit.

david540 commented 7 years ago

J'ai push une branche threadBloquant avec lequel j'ai l'erreur Exception in thread "Thread-1" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Unknown Source) at cpp2017.parser.Parser.run(Parser.java:69) Si quelqu'un pouvait valider avoir la même erreur que moi

matthieu637-bot commented 7 years ago

42% (-3.5%) vs master 45%

matthieu637 commented 7 years ago

J'ai réussi à avoir la même erreur sur ta branche avec déclenchement aléatoire. J'ai modifié le code, est-ce que la branche synchro déclenche toujours une erreur chez toi?

david540 commented 7 years ago

Non ça y est je n'ai plus d'erreur

david540 commented 7 years ago

Merci, je merge.