Merge pull request #6234 from shleeable/JobBatchv1-MediaPipeline

JobBatch v1- Media pipelines defensive checks
pull/6261/head
dansup 2 weeks ago committed by GitHub
commit 27daf6ec2b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -11,6 +11,7 @@ use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\Middleware\WithoutOverlapping;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
class MediaDeletePipeline implements ShouldBeUniqueUntilProcessing, ShouldQueue
@ -62,10 +63,18 @@ class MediaDeletePipeline implements ShouldBeUniqueUntilProcessing, ShouldQueue
public function handle()
{
$media = $this->media;
// Verify media exists
if (!$media) {
Log::info("MediaDeletePipeline: Media no longer exists, skipping job");
return 1;
}
$path = $media->media_path;
$thumb = $media->thumbnail_path;
if (! $path) {
Log::info("MediaDeletePipeline: Media {$media->id} has no path, skipping deletion");
return 1;
}
@ -73,8 +82,20 @@ class MediaDeletePipeline implements ShouldBeUniqueUntilProcessing, ShouldQueue
array_pop($e);
$i = implode('/', $e);
if ((bool) config_cache('pixelfed.cloud_storage') == true) {
$disk = Storage::disk(config('filesystems.cloud'));
try {
if ((bool) config_cache('pixelfed.cloud_storage') == true) {
$disk = Storage::disk(config('filesystems.cloud'));
if ($path && $disk->exists($path)) {
$disk->delete($path);
}
if ($thumb && $disk->exists($thumb)) {
$disk->delete($thumb);
}
}
$disk = Storage::disk(config('filesystems.local'));
if ($path && $disk->exists($path)) {
$disk->delete($path);
@ -83,28 +104,21 @@ class MediaDeletePipeline implements ShouldBeUniqueUntilProcessing, ShouldQueue
if ($thumb && $disk->exists($thumb)) {
$disk->delete($thumb);
}
}
$disk = Storage::disk(config('filesystems.local'));
if ($path && $disk->exists($path)) {
$disk->delete($path);
}
if ($thumb && $disk->exists($thumb)) {
$disk->delete($thumb);
}
if ($media->hls_path != null) {
$files = MediaHlsService::allFiles($media);
if ($files && count($files)) {
foreach ($files as $file) {
$disk->delete($file);
if ($media->hls_path != null) {
$files = MediaHlsService::allFiles($media);
if ($files && count($files)) {
foreach ($files as $file) {
$disk->delete($file);
}
}
}
}
$media->delete();
$media->delete();
} catch (\Exception $e) {
Log::warning("MediaDeletePipeline: Failed to delete media {$media->id}: " . $e->getMessage());
throw $e;
}
return 1;
}

@ -9,6 +9,7 @@ use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redis;
use App\Services\MediaStorageService;
@ -26,7 +27,26 @@ class MediaStoragePipeline implements ShouldQueue
public function handle()
{
MediaStorageService::store($this->media);
$media = $this->media;
// Verify media exists
if (!$media) {
Log::info("MediaStoragePipeline: Media no longer exists, skipping job");
return;
}
// Verify media has required fields
if (!$media->media_path) {
Log::info("MediaStoragePipeline: Media {$media->id} has no media_path, skipping job");
return;
}
try {
MediaStorageService::store($media);
} catch (\Exception $e) {
Log::warning("MediaStoragePipeline: Failed to store media {$media->id}: " . $e->getMessage());
throw $e;
}
}
}

@ -10,6 +10,7 @@ use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use App\Services\StatusService;
class MediaSyncLicensePipeline implements ShouldQueue
@ -28,8 +29,15 @@ class MediaSyncLicensePipeline implements ShouldQueue
public function handle()
{
$licenseId = $this->licenseId;
$userId = $this->userId;
if(!$licenseId || !$this->userId) {
// Verify required data exists
if (!$licenseId) {
Log::info("MediaSyncLicensePipeline: License ID not provided, skipping job");
return 1;
}
if (!$userId) {
Log::info("MediaSyncLicensePipeline: User ID not provided, skipping job");
return 1;
}

Loading…
Cancel
Save