vuongxuongminh / laravel-async

Package provide simple way to run code asynchronously for your Laravel application.
MIT License
154 stars 26 forks source link

Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable. #11

Closed logan-jobzmall closed 4 years ago

logan-jobzmall commented 4 years ago

Hello,

For some odd reason I am getting an error inside of Spatie's ParallelProcess saying that Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable. The code is:

\Async::run(function() use ($user) {
            AmazonS3::copyRecursive('users/' . $user->id, 'private/users/' . $user->id, 'private');
        }, [
            'success' => function ($output) use ($user) {
                AmazonS3::deleteRecursive('users/' . $user->id);
            },
            'timeout' => function () {
                \Log::info('Async task took too long to execute');
            },
            'error' => function (\Throwable $exception) {
                \Log::error($exception->getMessage(), $exception->getTrace());
            },
        ]);

The stack trace:

#0 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Container/Container.php(812): Illuminate\Container\Container->notInstantiable('Illuminate\\Cont...')
#1 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Container/Container.php(681): Illuminate\Container\Container->build('Illuminate\\Cont...')
#2 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(785): Illuminate\Container\Container->resolve('Illuminate\\Cont...', Array, true)
#3 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Container/Container.php(629): Illuminate\Foundation\Application->resolve('Illuminate\\Cont...', Array)
#4 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(770): Illuminate\Container\Container->make('Illuminate\\Cont...', Array)
#5 /Users/loganlehman/DEV/jobzmall-api/vendor/nunomaduro/collision/src/Adapters/Laravel/CollisionServiceProvider.php(44): Illuminate\Foundation\Application->make('Illuminate\\Cont...')
#6 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(616): NunoMaduro\Collision\Adapters\Laravel\CollisionServiceProvider->register()
#7 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(75): Illuminate\Foundation\Application->register(Object(NunoMaduro\Collision\Adapters\Laravel\CollisionServiceProvider))
#8 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(593): Illuminate\Foundation\ProviderRepository->load(Array)
#9 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php(17): Illuminate\Foundation\Application->registerConfiguredProviders()
#10 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(219): Illuminate\Foundation\Bootstrap\RegisterProviders->bootstrap(Object(Illuminate\Foundation\Application))
#11 /Users/loganlehman/DEV/jobzmall-api/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(320): Illuminate\Foundation\Application->bootstrapWith(Array)
#12 /Users/loganlehman/DEV/jobzmall-api/vendor/vxm/laravel-async/src/Runtime/RuntimeAutoload.php(55): Illuminate\Foundation\Console\Kernel->bootstrap()
#13 /Users/loganlehman/DEV/jobzmall-api/vendor/vxm/laravel-async/src/Runtime/RuntimeAutoload.php(22): class@anonymous->boot(Object(Illuminate\Foundation\Application))
#14 /Users/loganlehman/DEV/jobzmall-api/vendor/vxm/laravel-async/src/Runtime/RuntimeAutoload.php(14): class@anonymous->__construct()
#15 /Users/loganlehman/DEV/jobzmall-api/vendor/spatie/async/src/Runtime/ChildRuntime.php(22): require_once('/Users/loganleh...')
#16 {main} [{"file":"/Users/loganlehman/DEV/jobzmall-api/vendor/spatie/async/src/Process/ParallelProcess.php","line":122,"function":"asThrowable","class":"Spatie\\Async\\Output\\SerializableException"

Seems as though the asThrowable() call in Spatie's library is where it is occurring:

protected function resolveErrorOutput(): Throwable
    {
        $exception = $this->getErrorOutput();

        if ($exception instanceof SerializableException) {
            $exception = $exception->asThrowable();
        }

        if (! $exception instanceof Throwable) {
            $exception = ParallelError::fromException($exception);
        }

        return $exception;
    }

Any guidance or fix would be awesome.

vuongxuongminh commented 4 years ago

Fixed. Thanks for your stack trace, it's very helpful.