dice-group / LIMES

Link Discovery Framework for Metric Spaces.
https://limes.demos.dice-research.org/
GNU Affero General Public License v3.0
129 stars 54 forks source link

Dragon seems not working #241

Open eldysha opened 3 years ago

eldysha commented 3 years ago

Hi, when I set up the Dragon XML configuration I get an error, I thought it was a problem in the XML file, hence I tried the "Abt-Buy-Dragon.xml" in the test folder "\src\test\resources" (adapting the paths), but it still returns me the same error.

The error is the following:

9:30:46.897 [qtp228450622-21] [] INFO org.aksw.limes.core.controller.Server:280 - Uploaded file 'Abt-Buy-Dragon.xml' saved as 'C:\Users\owner.server-storage\limes_cfg_5701470522682598660.xml' 19:30:46.951 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.cache.HybridCache:115 - Checking for file C:\Users\owner\cache-1768654625.ser 19:30:46.971 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.cache.HybridCache:132 - No cached data found for abt 19:30:46.977 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.query.QueryModuleFactory:18 - Generating reader 19:30:47.041 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.query.CsvQueryModule:81 - Retrieved 1081 statements 19:30:47.045 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.cache.HybridCache:316 - Serializing 1081 objects to C:\Users\owner\cache-1768654625.ser 19:30:47.381 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.cache.HybridCache:115 - Checking for file C:\Users\owner\cache-1987594183.ser 19:30:47.385 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.cache.HybridCache:132 - No cached data found for buy 19:30:47.387 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.query.QueryModuleFactory:18 - Generating reader 19:30:47.409 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.query.CsvQueryModule:81 - Retrieved 1092 statements 19:30:47.412 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.io.cache.HybridCache:316 - Serializing 1092 objects to C:\Users\owner\cache-1987594183.ser 19:30:47.856 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] ERROR org.aksw.limes.core.ml.algorithm.dragon.FitnessFunctions.GiniIndex:175 - Node has no parent. This should not happen! Returning null 19:30:47.873 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.ml.algorithm.dragon.Dragon:312 - FULL:

Classifier not set yet 19:30:47.907 [ForkJoinPool.commonPool-worker-3] [5701470522682598660] INFO org.aksw.limes.core.ml.algorithm.dragon.Dragon:315 - PRUNED:

Classifier not set yet java.util.concurrent.CompletionException: java.lang.NullPointerException at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314) at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319) at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:479) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177) Caused by: java.lang.NullPointerException at org.aksw.limes.core.ml.algorithm.dragon.DecisionTree.getPathString(DecisionTree.java:263) at org.aksw.limes.core.ml.algorithm.dragon.DecisionTree.calculatePathKeys(DecisionTree.java:187) at org.aksw.limes.core.ml.algorithm.dragon.DecisionTree.getTotalLS(DecisionTree.java:279) at org.aksw.limes.core.ml.algorithm.dragon.Dragon.learn(Dragon.java:317) at org.aksw.limes.core.ml.algorithm.SupervisedMLAlgorithm.learn(SupervisedMLAlgorithm.java:42) at org.aksw.limes.core.controller.MLPipeline.execute(MLPipeline.java:69) at org.aksw.limes.core.controller.Controller.getMapping(Controller.java:207) at org.aksw.limes.core.controller.Server.lambda$handleSubmit$4(Server.java:309) at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) ... 6 more

Am I missing something in the implementation or is a bug?

Many thanks!

eldysha commented 3 years ago

After some testing, I found out that this error appears only after 2 executions of the DRAGON algorithm. Which means that I am able to run a DRAGON matching using the CLI on port:8080, but if I want to perform again a DRAGON algorithm I have to close the CLI and restart it. In this way, I was able to bypass the error.

kvndrsslr commented 3 years ago

Thanks for reporting this, seems like state is being kept statically, which is bad for the server context indeed .