From 16e754e523a838460265a39760fbe96823386532 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Wed, 25 Sep 2024 11:12:05 +1200 Subject: [PATCH] ENH Only query primary DB --- composer.json | 2 +- src/Model/HybridSessionDataObject.php | 5 +++++ src/Store/DatabaseStore.php | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 3a32041..7a8d0c2 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ ], "require": { "php": "^8.1", - "silverstripe/framework": "^5" + "silverstripe/framework": "^5.4" }, "require-dev": { "phpunit/phpunit": "^9.6", diff --git a/src/Model/HybridSessionDataObject.php b/src/Model/HybridSessionDataObject.php index cdae2f3..1e2cf91 100644 --- a/src/Model/HybridSessionDataObject.php +++ b/src/Model/HybridSessionDataObject.php @@ -20,4 +20,9 @@ class HybridSessionDataObject extends DataObject ]; private static $table_name = 'HybridSessionDataObject'; + + /** + * Only use the primary db to ensure there is no risk of reading from an unsynced replica db + */ + private static bool $must_use_primary_db = true; } diff --git a/src/Store/DatabaseStore.php b/src/Store/DatabaseStore.php index 37aec55..61e54d8 100644 --- a/src/Store/DatabaseStore.php +++ b/src/Store/DatabaseStore.php @@ -68,7 +68,7 @@ public function read(string $session_id): string|false $this->getNow() ); - $result = DB::query($query); + $result = DB::withPrimary(fn() => DB::query($query)); if ($result && $result->numRecords()) { $data = $result->record();