BatchRun only executes one run of a CrossValidation
|Reported by:||sforsten||Owned by:||mkommend|
Description (last modified by sforsten)
If CrossValidation is set as optimizer in a BatchRun, only the first run is executed. The BatchRun remains in the ExecutionState.Started and even if the BatchRun is stopped and prepared again, no additional run can be executed anymore.
The problem is that CrossValidation uses a lock in several methods, which are accessed through events by multiple cloned algorithms at the same time. The last algorithm which accesses ClonedAlgorithm_Stopped calls the method OnStopped which informs BatchRun that CrossValidation has stopped. Therefore, BatchRun prepares and starts CrossValidation again, which leads to the call of ClonedAlgorithm_Started by the algorithms started by CrossValidation.
The lock used in CrossValidation is acquired in the method ClonedAlgorithm_Stopped and the call hierarchy leads through BatchRun to the method ClonedAlgorithm_Started where the lock needs to be acquired again. This leads to a deadlock.
Change History (13)
comment:2 Changed 4 years ago by sforsten
- Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.9
- Status changed from new to accepted
- Version changed from 3.3.9 to 3.3.8
comment:3 Changed 4 years ago by sforsten
- Owner changed from sforsten to mkommend
- Status changed from accepted to reviewing
comment:4 follow-up: ↓ 5 Changed 4 years ago by gkronber
- Owner changed from mkommend to gkronber
- Status changed from reviewing to assigned