|
14 | 14 | use MongoDB\BSON\UTCDateTime; |
15 | 15 | use MongoDB\Client; |
16 | 16 | use MongoDB\Collection; |
17 | | -use MongoDB\Driver\Command; |
18 | 17 | use MongoDB\Driver\Exception\WriteException; |
| 18 | +use MongoDB\Driver\ReadPreference; |
19 | 19 | use MongoDB\Exception\DriverRuntimeException; |
20 | 20 | use MongoDB\Exception\InvalidArgumentException as MongoInvalidArgumentException; |
21 | 21 | use MongoDB\Exception\UnsupportedException; |
@@ -54,8 +54,6 @@ class MongoDbStore implements BlockingStoreInterface |
54 | 54 | private $options; |
55 | 55 | private $initialTtl; |
56 | 56 |
|
57 | | - private $databaseVersion; |
58 | | - |
59 | 57 | use ExpiringStoreTrait; |
60 | 58 |
|
61 | 59 | /** |
@@ -87,8 +85,8 @@ class MongoDbStore implements BlockingStoreInterface |
87 | 85 | * to 0.0 and optionally leverage |
88 | 86 | * self::createTtlIndex(int $expireAfterSeconds = 0). |
89 | 87 | * |
90 | | - * writeConcern, readConcern and readPreference are not specified by |
91 | | - * MongoDbStore meaning the collection's settings will take effect. |
| 88 | + * writeConcern and readConcern are not specified by MongoDbStore meaning the connection's settings will take effect. |
| 89 | + * readPreference is primary for all queries. |
92 | 90 | * @see https://docs.mongodb.com/manual/applications/replication/ |
93 | 91 | */ |
94 | 92 | public function __construct($mongo, array $options = [], float $initialTtl = 300.0) |
@@ -262,6 +260,8 @@ public function exists(Key $key): bool |
262 | 260 | 'expires_at' => [ |
263 | 261 | '$gt' => $this->createMongoDateTime(microtime(true)), |
264 | 262 | ], |
| 263 | + ], [ |
| 264 | + 'readPreference' => new ReadPreference(\defined(ReadPreference::PRIMARY) ? ReadPreference::PRIMARY : ReadPreference::RP_PRIMARY), |
265 | 265 | ]); |
266 | 266 | } |
267 | 267 |
|
@@ -315,25 +315,6 @@ private function isDuplicateKeyException(WriteException $e): bool |
315 | 315 | return 11000 === $code; |
316 | 316 | } |
317 | 317 |
|
318 | | - private function getDatabaseVersion(): string |
319 | | - { |
320 | | - if (null !== $this->databaseVersion) { |
321 | | - return $this->databaseVersion; |
322 | | - } |
323 | | - |
324 | | - $command = new Command([ |
325 | | - 'buildinfo' => 1, |
326 | | - ]); |
327 | | - $cursor = $this->getCollection()->getManager()->executeReadCommand( |
328 | | - $this->getCollection()->getDatabaseName(), |
329 | | - $command |
330 | | - ); |
331 | | - $buildInfo = $cursor->toArray()[0]; |
332 | | - $this->databaseVersion = $buildInfo->version; |
333 | | - |
334 | | - return $this->databaseVersion; |
335 | | - } |
336 | | - |
337 | 318 | private function getCollection(): Collection |
338 | 319 | { |
339 | 320 | if (null !== $this->collection) { |
|
0 commit comments