Merge pull request #4695 from pixelfed/staging

Staging
This commit is contained in:
daniel 2023-10-11 05:06:24 -06:00 committed by GitHub
commit 627be42b36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 19 deletions

View File

@ -43,15 +43,9 @@ class DecrementPostCount implements ShouldQueue
return 1; return 1;
} }
if($profile->updated_at && $profile->updated_at->lt(now()->subDays(30))) {
$profile->status_count = Status::whereProfileId($id)->whereNull(['in_reply_to_id', 'reblog_of_id'])->count();
$profile->save();
AccountService::del($id);
} else {
$profile->status_count = $profile->status_count ? $profile->status_count - 1 : 0; $profile->status_count = $profile->status_count ? $profile->status_count - 1 : 0;
$profile->save(); $profile->save();
AccountService::del($id); AccountService::del($id);
}
return 1; return 1;
} }

View File

@ -21,6 +21,7 @@ use App\{
}; };
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Queue\ShouldBeUniqueUntilProcessing;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
@ -37,8 +38,9 @@ use App\Services\AccountService;
use App\Services\CollectionService; use App\Services\CollectionService;
use App\Services\StatusService; use App\Services\StatusService;
use App\Jobs\MediaPipeline\MediaDeletePipeline; use App\Jobs\MediaPipeline\MediaDeletePipeline;
use App\Jobs\ProfilePipeline\DecrementPostCount;
class RemoteStatusDelete implements ShouldQueue class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
@ -51,9 +53,35 @@ class RemoteStatusDelete implements ShouldQueue
*/ */
public $deleteWhenMissingModels = true; public $deleteWhenMissingModels = true;
public $timeout = 90; public $tries = 3;
public $tries = 2; public $maxExceptions = 3;
public $maxExceptions = 1; public $timeout = 180;
public $failOnTimeout = true;
/**
* The number of seconds after which the job's unique lock will be released.
*
* @var int
*/
public $uniqueFor = 3600;
/**
* Get the unique ID for the job.
*/
public function uniqueId(): string
{
return 'status:remote:delete:' . $this->status->id;
}
/**
* Get the middleware the job should pass through.
*
* @return array<int, object>
*/
public function middleware(): array
{
return [(new WithoutOverlapping("status-remote-delete-{$this->status->id}"))->shared()->dontRelease()];
}
/** /**
* Create a new job instance. * Create a new job instance.
@ -62,7 +90,7 @@ class RemoteStatusDelete implements ShouldQueue
*/ */
public function __construct(Status $status) public function __construct(Status $status)
{ {
$this->status = $status; $this->status = $status->withoutRelations();
} }
/** /**
@ -77,14 +105,10 @@ class RemoteStatusDelete implements ShouldQueue
if($status->deleted_at) { if($status->deleted_at) {
return; return;
} }
$profile = $this->status->profile;
StatusService::del($status->id, true); StatusService::del($status->id, true);
if($profile->status_count && $profile->status_count > 0) { DecrementPostCount::dispatch($status->profile_id)->onQueue('inbox');
$profile->status_count = $profile->status_count - 1;
$profile->save();
}
return $this->unlinkRemoveMedia($status); return $this->unlinkRemoveMedia($status);
} }