debuglevel / walkingdinner

Genetic Algorithm based tool to generate a plan for a running dinner
The Unlicense
0 stars 0 forks source link

Planner: Concurrent modification #56

Closed debuglevel closed 2 years ago

debuglevel commented 2 years ago

Never saw his on my development machine, but on a bigger testing machine.

planner_1  | [pool-3-thread-1] ERROR d.d.w.p.c.CalculationService - Callable threw exception                                                        [47/1907]
planner_1  | java.util.ConcurrentModificationException: java.util.ConcurrentModificationException
planner_1  |    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
planner_1  |    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
planner_1  |    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
planner_1  |    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:722)
planner_1  |    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
planner_1  |    at io.jenetics.internal.util.Concurrency$ForkJoinPoolConcurrency.close(Concurrency.java:125)
planner_1  |    at io.jenetics.engine.ConcurrentEvaluator.eval(ConcurrentEvaluator.java:75)
planner_1  |    at io.jenetics.engine.Engine.evaluate(Engine.java:358)
planner_1  |    at io.jenetics.engine.Engine.lambda$evolve$0(Engine.java:199)
planner_1  |    at io.jenetics.engine.Timing.timing(Timing.java:58)
planner_1  |    at io.jenetics.engine.Engine.evolve(Engine.java:198)
planner_1  |    at io.jenetics.internal.engine.EvolutionSpliterator.tryAdvance(EvolutionSpliterator.java:90)
planner_1  |    at io.jenetics.internal.util.LimitSpliterator.tryAdvance(LimitSpliterator.java:54)
planner_1  |    at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:326)
planner_1  |    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
planner_1  |    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
planner_1  |    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
planner_1  |    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
planner_1  |    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
planner_1  |    at de.debuglevel.walkingdinner.planner.planner.geneticplanner.GeneticPlanner.compute(GeneticPlanner.kt:80)
planner_1  |    at de.debuglevel.walkingdinner.planner.planner.geneticplanner.GeneticPlanner.plan(GeneticPlanner.kt:38)
planner_1  |    at de.debuglevel.walkingdinner.planner.planner.geneticplanner.GeneticPlannerService.calculate(GeneticPlannerService.kt:29)
planner_1  |    at de.debuglevel.walkingdinner.planner.calculation.CalculationService.start$lambda-2(CalculationService.kt:56)
planner_1  |    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
planner_1  |    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
planner_1  |    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
planner_1  |    at java.base/java.lang.Thread.run(Thread.java:829)
planner_1  | Caused by: java.util.ConcurrentModificationException: null
planner_1  |    at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1134)
planner_1  |    at de.debuglevel.walkingdinner.planner.common.geo.GeoUtils.cachedCalculateDistance(GeoUtils.kt:21)
planner_1  |    at de.debuglevel.walkingdinner.planner.common.geo.GeoUtils$calculateLocationsDistance$distance$1.invoke(GeoUtils.kt:39)
planner_1  |    at de.debuglevel.walkingdinner.planner.common.geo.GeoUtils$calculateLocationsDistance$distance$1.invoke(GeoUtils.kt:36)
planner_1  |    at kotlin.collections.CollectionsKt___CollectionsKt.windowed(_Collections.kt:3229)
planner_1  |    at de.debuglevel.walkingdinner.planner.common.geo.GeoUtils.calculateLocationsDistance(GeoUtils.kt:36)
planner_1  |    at de.debuglevel.walkingdinner.planner.planner.geneticplanner.CoursesProblem$Companion.calculateOverallDistance(CoursesProblem.kt:93)
planner_1  |    at de.debuglevel.walkingdinner.planner.planner.geneticplanner.CoursesProblem$Companion.access$calculateOverallDistance(CoursesProblem.kt:75)
planner_1  |    at de.debuglevel.walkingdinner.planner.planner.geneticplanner.CoursesProblem.fitness$lambda-5(CoursesProblem.kt:64)
planner_1  |    at java.base/java.util.function.Function.lambda$compose$0(Function.java:68)
planner_1  |    at io.jenetics.engine.ConcurrentEvaluator$PhenotypeFitness.run(ConcurrentEvaluator.java:111)
planner_1  |    at io.jenetics.internal.util.RunnablesAction.compute(RunnablesAction.java:64)
planner_1  |    at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:761)
planner_1  |    at io.jenetics.internal.util.RunnablesAction.compute(RunnablesAction.java:68)
planner_1  |    at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:761)
planner_1  |    at io.jenetics.internal.util.RunnablesAction.compute(RunnablesAction.java:68)
planner_1  |    at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.invokeAll(ForkJoinTask.java:761)
planner_1  |    at io.jenetics.internal.util.RunnablesAction.compute(RunnablesAction.java:68)
planner_1  |    at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:189)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
planner_1  |    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
debuglevel commented 2 years ago

Seems to be fixed :)