From deb3d7537539d958fe40c8ba0cbdd8e1f9b6044c Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 3 Oct 2025 20:00:32 +1300 Subject: [PATCH] Explicit order asc --- src/Appwrite/Databases/TransactionState.php | 16 ++++++++++++++++ .../Http/Databases/Transactions/Update.php | 1 + 2 files changed, 17 insertions(+) diff --git a/src/Appwrite/Databases/TransactionState.php b/src/Appwrite/Databases/TransactionState.php index e9cb6b82e4..31e09ccf75 100644 --- a/src/Appwrite/Databases/TransactionState.php +++ b/src/Appwrite/Databases/TransactionState.php @@ -4,6 +4,8 @@ namespace Appwrite\Databases; use Utopia\Database\Database; use Utopia\Database\Document; +use Utopia\Database\Exception; +use Utopia\Database\Exception\Timeout; use Utopia\Database\Query; /** @@ -32,6 +34,9 @@ class TransactionState * @param string|null $transactionId Optional transaction ID * @param array $queries Optional query filters * @return Document + * @throws Exception + * @throws Exception\Query + * @throws Timeout */ public function getDocument( string $collectionId, @@ -90,6 +95,9 @@ class TransactionState * @param string|null $transactionId Optional transaction ID * @param array $queries Optional query filters * @return array Array of Document objects + * @throws Exception + * @throws Exception\Query + * @throws Timeout */ public function listDocuments( string $collectionId, @@ -147,6 +155,9 @@ class TransactionState * @param string|null $transactionId Optional transaction ID * @param array $queries Optional query filters * @return int Document count + * @throws Exception + * @throws Exception\Query + * @throws Timeout */ public function countDocuments( string $collectionId, @@ -328,6 +339,9 @@ class TransactionState * * @param string $transactionId Transaction ID * @return array State array with structure: [collectionId => [docId => ['action' => ..., 'document' => ..., 'exists' => ...]]] + * @throws Exception + * @throws Exception\Query + * @throws Timeout */ private function getTransactionState(string $transactionId): array { @@ -339,6 +353,8 @@ class TransactionState // Fetch operations ordered by sequence to replay in exact order $operations = $this->dbForProject->find('transactionLogs', [ Query::equal('transactionInternalId', [$transaction->getSequence()]), + Query::orderAsc(), + Query::limit(PHP_INT_MAX) ]); $state = []; diff --git a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php index bd0c7f5582..525c74abc7 100644 --- a/src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php +++ b/src/Appwrite/Platform/Modules/Databases/Http/Databases/Transactions/Update.php @@ -137,6 +137,7 @@ class Update extends Action // Fetch operations ordered by sequence by default to replay operations in exact order they were created $operations = $dbForProject->find('transactionLogs', [ Query::equal('transactionInternalId', [$transaction->getSequence()]), + Query::orderAsc(), Query::limit(PHP_INT_MAX), ]);