Skip to content

Solution cloning breaks a native compilation when @DeepPlanningClone is on an interface #1208

@rsynek

Description

@rsynek

Describe the bug
Native compilation fails due to a complex solution cloning.

Error: Discovered unresolved method during parsing: ai.timefold.model.fieldservicerouting.solver.domain.SolverVehicleRoutePlan$Timefold$SolutionCloner.$cloneai_timefold_model_fieldservicerouting_solver_domain_SolverVisitable(ai.timefold.model.fieldservicerouting.solver.domain.SolverVisitable, java.util.Map). This error is reported at image build time because class ai.timefold.model.fieldservicerouting.solver.domain.SolverVehicleRoutePlan$Timefold$SolutionCloner is registered for linking at image build time by command line and command line.
Error encountered while parsing ai.timefold.model.fieldservicerouting.solver.domain.SolverVehicleRoutePlan$Timefold$SolutionCloner.$cloneai_timefold_model_fieldservicerouting_solver_domain_RouteGraph(Unknown Source) 
Parsing context:
   at ai.timefold.model.fieldservicerouting.solver.domain.SolverVehicleRoutePlan$Timefold$SolutionCloner.cloneSolutionRun(Unknown Source)
   at ai.timefold.model.fieldservicerouting.solver.domain.SolverVehicleRoutePlan$Timefold$SolutionCloner.cloneSolution(Unknown Source)
   at ai.timefold.solver.core.impl.domain.variable.listener.support.violation.SolutionTracker.cloneSolution(SolutionTracker.java:94)
   at ai.timefold.solver.core.impl.domain.variable.listener.support.violation.SolutionTracker.setAfterMoveSolution(SolutionTracker.java:66)
   at ai.timefold.solver.core.impl.score.director.AbstractScoreDirector.doAndProcessMove(AbstractScoreDirector.java:230)
   at ai.timefold.solver.core.impl.score.director.InnerScoreDirector.doAndProcessMove(InnerScoreDirector.java:143)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.VisitGroupPlacement.decideMove(VisitGroupPlacement.java:116)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.VisitGroupPlacement.findBestVisitAssignment(VisitGroupPlacement.java:88)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.VisitGroupPlacement.findBestVisitGroupAssignment(VisitGroupPlacement.java:63)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.VisitGroupPlacement.<init>(VisitGroupPlacement.java:47)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.VisitGroupRecommender.createPlacement(VisitGroupRecommender.java:23)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.VisitGroupRecommender.createPlacement(VisitGroupRecommender.java:13)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.AbstractRecommender.recommendAssignment(AbstractRecommender.java:68)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.AbstractRecommender.recommendAssignment(AbstractRecommender.java:55)
   at ai.timefold.model.fieldservicerouting.solver.recommendation.VisitRecommender.recommendAssignment(VisitRecommender.java:13)
   at ai.timefold.model.fieldservicerouting.solver.VehicleRouteRecommendationService.recommendVehicleShiftForTimeWindow(VehicleRouteRecommendationService.java:127)
   at ai.timefold.model.fieldservicerouting.solver.VehicleRouteRecommendationService.recommendTimeWindowsForVisit(VehicleRouteRecommendationService.java:103)
   at ai.timefold.model.fieldservicerouting.solver.VehicleRouteRecommendationService_ClientProxy.recommendTimeWindowsForVisit(Unknown Source)
   at ai.timefold.model.fieldservicerouting.rest.VehicleRoutePlanResource.recommendTimeWindowsForVisitWithSolvedModel(VehicleRoutePlanResource.java:52)
   at ai.timefold.orbit.generated.rest.RoutePlanInput_VehicleRoutePlanResource.recommendTimeWindowsForVisitWithSolvedModel(Unknown Source)
   at root method.(Unknown Source)

To Reproduce
https://github.com/TimefoldAI/timefold-field-service-routing/tree/fix/native-compilation

mvn clean install -Dnative -Dquickly

Environment

Timefold Solver Version or Git ref:
1.15.0

Output of java -version:
Java version: 21.0.5+11-LTS, vendor version: Mandrel-23.1.5.0-Final

Output of uname -a or ver:

Additional information

Provide any and all other information which might be relevant to the issue.

Metadata

Metadata

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions