[COMPONENT][Notification] Don't explode with understandable duplicate notifications

This is common when a duplicate federation request is received
This commit is contained in:
Diogo Peralta Cordeiro 2022-02-19 04:47:08 +00:00
parent 6f3e760c63
commit e86dbad6d6
No known key found for this signature in database
GPG Key ID: 18D2D35001FBFAB0

View File

@ -119,11 +119,17 @@ class Notification extends Component
// XXX: Unideal as in failures the rollback will leave behind a false notification,
// but most notifications (all) require flushing the objects first
// Should be okay as long as implementors bear this in mind
DB::wrapInTransaction(fn () => DB::persist(Entity\Notification::create([
'activity_id' => $activity->getId(),
'target_id' => $target->getId(),
'reason' => $reason,
])));
try {
DB::wrapInTransaction(fn () => DB::persist(Entity\Notification::create([
'activity_id' => $activity->getId(),
'target_id' => $target->getId(),
'reason' => $reason,
])));
} catch (\Exception|\Throwable $e) {
// We do our best not to record duplicated notifications, but it's not insane that can happen
Log::error('It was attempted to record an invalid notification!', [$e]);
}
}
FreeNetwork::notify($sender, $activity, $remote_targets, $reason);