diff --git a/app/Http/Controllers/FederationController.php b/app/Http/Controllers/FederationController.php index da4e5c37e..245298d29 100644 --- a/app/Http/Controllers/FederationController.php +++ b/app/Http/Controllers/FederationController.php @@ -166,17 +166,19 @@ class FederationController extends Controller if(Cache::get($lockKey) !== null) { return; } else { - Cache::put($lockKey, 1, 3600); + Cache::put($lockKey, 1, 43200); usleep(5000); } } dispatch(new DeleteWorker($headers, $payload))->onQueue('delete'); + } else if( isset($obj['type']) && in_array($obj['type'], ['Follow', 'Accept'])) { + dispatch(new InboxValidator($username, $headers, $payload))->onQueue('follow'); } else { $lockKey = 'pf:ap:user-inbox:activity:' . hash('sha256', $obj['id']); if(Cache::get($lockKey) !== null) { return; } - Cache::put($lockKey, 1, 3600); + Cache::put($lockKey, 1, 43200); usleep(5000); dispatch(new InboxValidator($username, $headers, $payload))->onQueue('high'); } @@ -219,10 +221,12 @@ class FederationController extends Controller return; } } - Cache::put($lockKey, 1, 3600); + Cache::put($lockKey, 1, 43200); dispatch(new DeleteWorker($headers, $payload))->onQueue('delete'); + } else if( isset($obj['type']) && in_array($obj['type'], ['Follow', 'Accept'])) { + dispatch(new InboxWorker($headers, $payload))->onQueue('follow'); } else { - dispatch(new InboxWorker($headers, $payload))->onQueue('high'); + dispatch(new InboxWorker($headers, $payload))->onQueue('shared'); } return; } diff --git a/config/horizon.php b/config/horizon.php index 19872ad3b..1f797fd1b 100644 --- a/config/horizon.php +++ b/config/horizon.php @@ -80,6 +80,8 @@ return [ 'waits' => [ 'redis:feed' => 30, + 'redis:follow' => 30, + 'redis:shared' => 30, 'redis:default' => 30, 'redis:low' => 30, 'redis:high' => 30, @@ -169,7 +171,7 @@ return [ 'production' => [ 'supervisor-1' => [ 'connection' => 'redis', - 'queue' => ['high', 'default', 'feed', 'low', 'story', 'delete', 'mmo'], + 'queue' => ['high', 'default', 'follow', 'shared', 'feed', 'low', 'story', 'delete', 'mmo'], 'balance' => env('HORIZON_BALANCE_STRATEGY', 'auto'), 'minProcesses' => env('HORIZON_MIN_PROCESSES', 1), 'maxProcesses' => env('HORIZON_MAX_PROCESSES', 20), @@ -183,7 +185,7 @@ return [ 'local' => [ 'supervisor-1' => [ 'connection' => 'redis', - 'queue' => ['high', 'default', 'feed', 'low', 'story', 'delete', 'mmo'], + 'queue' => ['high', 'default', 'follow', 'shared', 'feed', 'low', 'story', 'delete', 'mmo'], 'balance' => 'auto', 'minProcesses' => 1, 'maxProcesses' => 20,