Skip to content

Commit

Permalink
Merge pull request #45206 from nextcloud/backport/45055/stable29
Browse files Browse the repository at this point in the history
  • Loading branch information
Altahrim authored May 29, 2024
2 parents 7af7793 + 9bea6ec commit 8479dfa
Showing 1 changed file with 25 additions and 2 deletions.
27 changes: 25 additions & 2 deletions apps/dav/lib/CalDAV/Status/StatusService.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Calendar\IManager;
use OCP\DB\Exception;
use OCP\ICache;
use OCP\ICacheFactory;
use OCP\IUser as User;
Expand Down Expand Up @@ -72,7 +73,18 @@ public function processCalendarStatus(string $userId): void {
}

if(empty($calendarEvents)) {
$this->userStatusService->revertUserStatus($userId, IUserStatus::MESSAGE_CALENDAR_BUSY);
try {
$this->userStatusService->revertUserStatus($userId, IUserStatus::MESSAGE_CALENDAR_BUSY);
} catch (Exception $e) {
if ($e->getReason() === Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
// A different process might have written another status
// update to the DB while we're processing our stuff.
// We cannot safely restore the status as we don't know which one is valid at this point
// So let's silently log this one and exit
$this->logger->debug('Unique constraint violation for live user status', ['exception' => $e]);
return;
}
}
$this->logger->debug('No calendar events found for status check', ['user' => $userId]);
return;
}
Expand Down Expand Up @@ -118,7 +130,18 @@ public function processCalendarStatus(string $userId): void {
});

if(empty($applicableEvents)) {
$this->userStatusService->revertUserStatus($userId, IUserStatus::MESSAGE_CALENDAR_BUSY);
try {
$this->userStatusService->revertUserStatus($userId, IUserStatus::MESSAGE_CALENDAR_BUSY);
} catch (Exception $e) {
if ($e->getReason() === Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
// A different process might have written another status
// update to the DB while we're processing our stuff.
// We cannot safely restore the status as we don't know which one is valid at this point
// So let's silently log this one and exit
$this->logger->debug('Unique constraint violation for live user status', ['exception' => $e]);
return;
}
}
$this->logger->debug('No status relevant events found, skipping calendar status change', ['user' => $userId]);
return;
}
Expand Down

0 comments on commit 8479dfa

Please sign in to comment.