diff --git a/src/Jobs/InitializeFeatureVectorChunk.php b/src/Jobs/InitializeFeatureVectorChunk.php index 1e74993..0473979 100644 --- a/src/Jobs/InitializeFeatureVectorChunk.php +++ b/src/Jobs/InitializeFeatureVectorChunk.php @@ -12,6 +12,7 @@ use Illuminate\Support\Collection; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Storage; +use League\Flysystem\UnableToReadFile; class InitializeFeatureVectorChunk extends GenerateFeatureVectors { @@ -113,7 +114,12 @@ public function getFeatureVectors(Collection $models, string $outputPath): \Gene $srcPath = ProcessAnnotatedFile::getTargetPath($a); $tmpPath = tempnam(sys_get_temp_dir(), ''); - $thumbnail = $disk->get($srcPath); + try { + $thumbnail = $disk->get($srcPath); + } catch (UnableToReadFile $e) { + continue; + } + if (is_null($thumbnail)) { continue; } diff --git a/tests/Jobs/InitializeFeatureVectorChunkTest.php b/tests/Jobs/InitializeFeatureVectorChunkTest.php index 969402a..0f5e3cc 100644 --- a/tests/Jobs/InitializeFeatureVectorChunkTest.php +++ b/tests/Jobs/InitializeFeatureVectorChunkTest.php @@ -14,6 +14,8 @@ use Biigle\VideoAnnotationLabel; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Storage; +use League\Flysystem\UnableToReadFile; +use Mockery; use TestCase; class InitializeFeatureVectorChunkTest extends TestCase @@ -102,6 +104,18 @@ public function testHandleSkipMissingThumbnails() $this->assertNull(ImageAnnotationLabelFeatureVector::find($al->id)); } + public function testHandleSkipMissingThumbnailsException() + { + $mock = Mockery::mock(); + $mock->shouldReceive('get')->andThrow(UnableToReadFile::class); + Storage::shouldReceive('disk')->andReturn($mock); + $al = ImageAnnotationLabel::factory()->create(); + $job = new InitializeFeatureVectorChunkStub([$al->annotation_id], []); + $job->output = $al->annotation_id.',"'.json_encode(range(0, 383)).'"'; + $job->handle(); + $this->assertNull(ImageAnnotationLabelFeatureVector::find($al->id)); + } + public function testHandleMultipleLabels() { $disk = Storage::fake(config('largo.patch_storage_disk'));