Changes between Initial Version and Version 1 of Ticket #2052
- Timestamp:
- 05/14/13 13:49:29 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #2052 – Description
initial v1 1 1 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. 2 2 3 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` 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`.3 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`. 4 4 5 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 required again. This leads to a deadlock.5 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.