Make sure async processes fail the promise if they fail to start, fixes #9808
parent
8427b6c8ed
commit
251b852fd2
|
@ -250,16 +250,32 @@ class ProcessExecutor
|
||||||
throw new \RuntimeException('The given CWD for the process does not exist: '.$cwd);
|
throw new \RuntimeException('The given CWD for the process does not exist: '.$cwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
// TODO in v3, commands should be passed in as arrays of cmd + args
|
// TODO in v3, commands should be passed in as arrays of cmd + args
|
||||||
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) {
|
if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) {
|
||||||
$process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout());
|
$process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout());
|
||||||
} else {
|
} else {
|
||||||
$process = new Process($command, $cwd, null, null, static::getTimeout());
|
$process = new Process($command, $cwd, null, null, static::getTimeout());
|
||||||
}
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
call_user_func($job['reject'], $e);
|
||||||
|
return;
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
call_user_func($job['reject'], $e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$job['process'] = $process;
|
$job['process'] = $process;
|
||||||
|
|
||||||
|
try {
|
||||||
$process->start();
|
$process->start();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
call_user_func($job['reject'], $e);
|
||||||
|
return;
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
call_user_func($job['reject'], $e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function wait($index = null)
|
public function wait($index = null)
|
||||||
|
|
Loading…
Reference in New Issue