Laravel-medialibrary: Exceptions\InvalidConversion gets thrown after adding a new conversion

Created on 12 Dec 2018  路  1Comment  路  Source: spatie/laravel-medialibrary

I suspect this is related to some sort of cacheing issue, but I'll be damned if I can track it down. I've flushed all caches I can find, no matter how unlikely.

I have a Model that is successfully performing two conversions (let's call them 'thumb' and 'masthead'). When I update my code to add a third conversion (called 'card') the Horizon job fails with an InvalidConversion exception saying "card" isn't found:

Spatie\MediaLibrary\Exceptions\InvalidConversion: There is no conversion named `card` in /var/www/vendor/spatie/laravel-medialibrary/src/Exceptions/InvalidConversion.php:11

However, if I look at the Horizon error data, I see it there in the list. This has happened on multiple models in my app, and I'm a bit lost as to how to further debug the issue.

{
  "conversions": {
    "media": null,
    "items": {
      "4": {
        "name": "masthead",
        "extractVideoFrameAtSecond": 0,
        "manipulations": {
          "manipulationSequence": {
            "groups": [
              {
                "optimize": "{\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Jpegoptim\":[\"--strip-all\",\"--all-progressive\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Pngquant\":[\"--force\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Optipng\":[\"-i0\",\"-o2\",\"-quiet\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Svgo\":[\"--disable=cleanupIDs\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Gifsicle\":[\"-b\",\"-O3\"]}",
                "format": "jpg",
                "width": "1000",
                "height": "250",
                "fit": "crop"
              }
            ]
          }
        },
        "performOnCollections": [
          "event-keyart"
        ],
        "performOnQueue": true,
        "keepOriginalImageFormat": false,
        "generateResponsiveImages": false
      },
      "5": {
        "name": "thumb",
        "extractVideoFrameAtSecond": 0,
        "manipulations": {
          "manipulationSequence": {
            "groups": [
              {
                "optimize": "{\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Jpegoptim\":[\"--strip-all\",\"--all-progressive\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Pngquant\":[\"--force\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Optipng\":[\"-i0\",\"-o2\",\"-quiet\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Svgo\":[\"--disable=cleanupIDs\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Gifsicle\":[\"-b\",\"-O3\"]}",
                "format": "jpg",
                "width": "300",
                "height": "300",
                "fit": "crop"
              }
            ]
          }
        },
        "performOnCollections": [
          "event-keyart"
        ],
        "performOnQueue": true,
        "keepOriginalImageFormat": false,
        "generateResponsiveImages": false
      },
      "6": {
        "name": "card",
        "extractVideoFrameAtSecond": 0,
        "manipulations": {
          "manipulationSequence": {
            "groups": [
              {
                "optimize": "{\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Jpegoptim\":[\"--strip-all\",\"--all-progressive\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Pngquant\":[\"--force\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Optipng\":[\"-i0\",\"-o2\",\"-quiet\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Svgo\":[\"--disable=cleanupIDs\"],\"Spatie\\\\ImageOptimizer\\\\Optimizers\\\\Gifsicle\":[\"-b\",\"-O3\"]}",
                "format": "jpg",
                "width": "400",
                "height": "250"
              }
            ]
          }
        },
        "performOnCollections": [
          "event-keyart"
        ],
        "performOnQueue": true,
        "keepOriginalImageFormat": false,
        "generateResponsiveImages": false
      }
    }
  },
  "media": {
    "class": "Spatie\\MediaLibrary\\Models\\Media",
    "id": 6731,
    "relations": [],
    "connection": "mysql"
  },
  "job": null,
  "connection": null,
  "queue": null,
  "chainConnection": null,
  "chainQueue": null,
  "delay": null,
  "chained": []
}

Under:

  • Laravel/Framework: v5.7.15
  • Spatie/MediaLibrary: 7.5.2
  • PHP: 7.2

The full stack trace:

Stack trace:
#0 /var/www/vendor/spatie/laravel-medialibrary/src/Conversion/ConversionCollection.php(61): Spatie\MediaLibrary\Exceptions\InvalidConversion::unknownName('card')
#1 /var/www/vendor/spatie/laravel-medialibrary/src/UrlGenerator/UrlGeneratorFactory.php(27): Spatie\MediaLibrary\Conversion\ConversionCollection->getByName('card')
#2 /var/www/vendor/spatie/laravel-medialibrary/src/Models/Media.php(74): Spatie\MediaLibrary\UrlGenerator\UrlGeneratorFactory::createForMedia(Object(Spatie\MediaLibrary\Models\Media), 'card')
#3 /var/www/vendor/spatie/laravel-medialibrary/src/FileManipulator.php(81): Spatie\MediaLibrary\Models\Media->getPath('card')
#4 /var/www/vendor/laravel/framework/src/Illuminate/Support/Collection.php(1401): Spatie\MediaLibrary\FileManipulator->Spatie\MediaLibrary\{closure}(Object(Spatie\MediaLibrary\Conversion\Conversion), 6)
#5 [internal function]: Illuminate\Support\Collection->Illuminate\Support\{closure}(Object(Spatie\MediaLibrary\Conversion\Conversion), 6)
#6 /var/www/vendor/laravel/framework/src/Illuminate/Support/Arr.php(617): array_filter(Array, Object(Closure), 1)
#7 /var/www/vendor/laravel/framework/src/Illuminate/Support/Collection.php(492): Illuminate\Support\Arr::where(Array, Object(Closure))
#8 /var/www/vendor/laravel/framework/src/Illuminate/Support/Collection.php(1402): Illuminate\Support\Collection->filter(Object(Closure))
#9 /var/www/vendor/spatie/laravel-medialibrary/src/FileManipulator.php(90): Illuminate\Support\Collection->reject(Object(Closure))
#10 /var/www/vendor/spatie/laravel-medialibrary/src/Jobs/PerformConversions.php(32): Spatie\MediaLibrary\FileManipulator->performConversions(Object(Spatie\MediaLibrary\Conversion\ConversionCollection), Object(Spatie\MediaLibrary\Models\Media))
#11 [internal function]: Spatie\MediaLibrary\Jobs\PerformConversions->handle()
#12 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#13 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#14 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#15 /var/www/vendor/laravel/framework/src/Illuminate/Container/Container.php(572): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#16 /var/www/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\Container\Container->call(Array)
#17 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(Spatie\MediaLibrary\Jobs\PerformConversions))
#18 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Spatie\MediaLibrary\Jobs\PerformConversions))
#19 /var/www/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#20 /var/www/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(49): Illuminate\Bus\Dispatcher->dispatchNow(Object(Spatie\MediaLibrary\Jobs\PerformConversions), false)
#21 /var/www/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(83): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\RedisJob), Array)
#22 /var/www/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(327): Illuminate\Queue\Jobs\Job->fire()
#23 /var/www/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(277): Illuminate\Queue\Worker->process('redis', Object(Illuminate\Queue\Jobs\RedisJob), Object(Illuminate\Queue\WorkerOptions))
#24 /var/www/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(118): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\RedisJob), 'redis', Object(Illuminate\Queue\WorkerOptions))
#25 /var/www/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(102): Illuminate\Queue\Worker->daemon('redis', 'default', Object(Illuminate\Queue\WorkerOptions))
#26 /var/www/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(86): Illuminate\Queue\Console\WorkCommand->runWorker('redis', 'default')
#27 /var/www/vendor/laravel/horizon/src/Console/WorkCommand.php(46): Illuminate\Queue\Console\WorkCommand->handle()
#28 [internal function]: Laravel\Horizon\Console\WorkCommand->handle()
#29 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#30 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#31 /var/www/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#32 /var/www/vendor/laravel/framework/src/Illuminate/Container/Container.php(572): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#33 /var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(183): Illuminate\Container\Container->call(Array)
#34 /var/www/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#35 /var/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#36 /var/www/vendor/symfony/console/Application.php(901): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#37 /var/www/vendor/symfony/console/Application.php(262): Symfony\Component\Console\Application->doRunCommand(Object(Laravel\Horizon\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#38 /var/www/vendor/symfony/console/Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#39 /var/www/vendor/laravel/framework/src/Illuminate/Console/Application.php(89): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#40 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#41 /var/www/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#42 {main}

Most helpful comment

You probably forgot the restart horizon after having added that conversion.

You should restart horizon after every code change.

>All comments

You probably forgot the restart horizon after having added that conversion.

You should restart horizon after every code change.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mohammad6006 picture mohammad6006  路  4Comments

eichgi picture eichgi  路  3Comments

brendt picture brendt  路  4Comments

xron89 picture xron89  路  3Comments

jam1e picture jam1e  路  3Comments