Altering the arguments of a schedulable Symfony command that is configured in the Scheduler module breaks the module
- Create a Symfony Command with arguments and register it.
- In teh Scheduler module add a task to execute console commands and select your command, save
- Remove one argument in the code again
- Open the Scheduler module
- Exception "The <removed argument name> argument does not exist."
No way to recover from this via backend.
Problem is in
sysext:scheduler/Classes/Task/ExecuteSchedulableCommandTask.php on line 113 where
$input = new ArrayInput($this->getArguments(), $schedulableCommand->getDefinition()); is called. The defintion is read by Symfony fron the actual PHP file of the command, but the arguments are read from the additonal fields.
Some check whether the defintion has changed against the stored arguments has to happen there. Without such a check changing an existing task is basically not possible without breaking the scheduler (inducing manually fixing scheduler tasks via DB, not even a console command exists to fix such a state).