Conversation
MichaelRoeder
left a comment
There was a problem hiding this comment.
I don't see the necessity of the reflections dependency.
| <groupId>org.reflections</groupId> | ||
| <artifactId>reflections</artifactId> | ||
| <version>0.9.12</version> | ||
| </dependency> |
There was a problem hiding this comment.
Why is this dependency needed? The project is built for me without issues when I comment out the dependency 🤔
There was a problem hiding this comment.
Sorry for the late answer.
The thing is when I don't set the version to 0.9.12, then version 0.9.11 will be used. And that version seems to have a multithreading issue.
So in the default case in NLIWODBasedSystem the reflections dependency is used to retrieve names of systems in qa.systems. Now, when an experiment is started with multiple systems that execute the default case (e.g. TeBaQA, QAmp, Platypus), then two of the threads will throw a java.lang.IllegalStateException: zip file closed exception. Version 0.9.12 doesn't seem to have this issue.
Apparently, there is a multithreading problem in some versions of the reflections library, when multiple threads access the same jar file. The problem occurred in GERBIL when an experiment with multiple systems that execute the default case in NLIWODBasedSystem was started (e.g. TeBaQA, Platypus, QAmp), then only one of them would run and the others would finish with an error when accessing the jar file.