mirror of
https://github.com/nextcloud/server.git
synced 2026-02-19 02:38:40 -05:00
Fix possible dead locks when running the propagator caused by two
requests updating the same amount rows in transactions.
- Lock rows always in the same deterministic order by sorting the
path_hash first
- On all database outside of sqlite, also do first a SELECT FOR UPDATE
to lock all the rows used in batch UPDATE calls, afterward to decrease
the risk of two requests trying to lock the same rows
Signed-off-by: Carl Schwan <carlschwan@kde.org>
(cherry picked from commit cae742d182)
26 lines
440 B
PHP
26 lines
440 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
namespace OCP\DB\QueryBuilder;
|
|
|
|
/**
|
|
* Conflict resolution mode for "FOR UPDATE" select queries.
|
|
*
|
|
* @since 34.0.0
|
|
*/
|
|
enum ConflictResolutionMode {
|
|
/**
|
|
* Wait for the row to be unlocked.
|
|
*/
|
|
case Ordinary;
|
|
/**
|
|
* Skip the row if it is locked.
|
|
*/
|
|
case SkipLocked;
|
|
}
|