feature #38134 [Lock] Fix wrong interface for MongoDbStore (jderusse)

This PR was merged into the 5.2-dev branch.

Discussion
----------

[Lock] Fix wrong interface for MongoDbStore

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

The MongoDbStore is not a `BlockingStore` because does not "really" implements  the method `waitAndSave`.

This PR changes the interface of `MongoDbStore` and remove the dummy implementation of `waitAndSave`.

Commits
-------

4c2d32ce11 Fix wrong interface for MongoDbStore
This commit is contained in:
Nicolas Grekas 2020-09-10 18:54:54 +02:00
commit 474e877035
4 changed files with 12 additions and 23 deletions

View File

@ -16,6 +16,11 @@ FrameworkBundle
used to be added by default to the seed, which is not the case anymore. This allows sharing caches between used to be added by default to the seed, which is not the case anymore. This allows sharing caches between
apps or different environments. apps or different environments.
Lock
----
* `MongoDbStore` does not implement `BlockingStoreInterface` anymore, typehint against `PersistingStoreInterface` instead.
Mime Mime
---- ----

View File

@ -1,6 +1,11 @@
CHANGELOG CHANGELOG
========= =========
5.2.0
-----
* `MongoDbStore` does not implement `BlockingStoreInterface` anymore, typehint against `PersistingStoreInterface` instead.
5.1.0 5.1.0
----- -----

View File

@ -19,15 +19,14 @@ use MongoDB\Driver\ReadPreference;
use MongoDB\Exception\DriverRuntimeException; use MongoDB\Exception\DriverRuntimeException;
use MongoDB\Exception\InvalidArgumentException as MongoInvalidArgumentException; use MongoDB\Exception\InvalidArgumentException as MongoInvalidArgumentException;
use MongoDB\Exception\UnsupportedException; use MongoDB\Exception\UnsupportedException;
use Symfony\Component\Lock\BlockingStoreInterface;
use Symfony\Component\Lock\Exception\InvalidArgumentException; use Symfony\Component\Lock\Exception\InvalidArgumentException;
use Symfony\Component\Lock\Exception\InvalidTtlException; use Symfony\Component\Lock\Exception\InvalidTtlException;
use Symfony\Component\Lock\Exception\LockAcquiringException; use Symfony\Component\Lock\Exception\LockAcquiringException;
use Symfony\Component\Lock\Exception\LockConflictedException; use Symfony\Component\Lock\Exception\LockConflictedException;
use Symfony\Component\Lock\Exception\LockExpiredException; use Symfony\Component\Lock\Exception\LockExpiredException;
use Symfony\Component\Lock\Exception\LockStorageException; use Symfony\Component\Lock\Exception\LockStorageException;
use Symfony\Component\Lock\Exception\NotSupportedException;
use Symfony\Component\Lock\Key; use Symfony\Component\Lock\Key;
use Symfony\Component\Lock\PersistingStoreInterface;
/** /**
* MongoDbStore is a StoreInterface implementation using MongoDB as a storage * MongoDbStore is a StoreInterface implementation using MongoDB as a storage
@ -46,7 +45,7 @@ use Symfony\Component\Lock\Key;
* *
* @author Joe Bennett <joe@assimtech.com> * @author Joe Bennett <joe@assimtech.com>
*/ */
class MongoDbStore implements BlockingStoreInterface class MongoDbStore implements PersistingStoreInterface
{ {
private $collection; private $collection;
private $client; private $client;
@ -224,14 +223,6 @@ class MongoDbStore implements BlockingStoreInterface
$this->checkNotExpired($key); $this->checkNotExpired($key);
} }
/**
* {@inheritdoc}
*/
public function waitAndSave(Key $key)
{
throw new NotSupportedException(sprintf('The store "%s" does not support blocking locks.', __CLASS__));
}
/** /**
* {@inheritdoc} * {@inheritdoc}
* *

View File

@ -14,7 +14,6 @@ namespace Symfony\Component\Lock\Tests\Store;
use MongoDB\Client; use MongoDB\Client;
use MongoDB\Driver\Exception\ConnectionTimeoutException; use MongoDB\Driver\Exception\ConnectionTimeoutException;
use Symfony\Component\Lock\Exception\InvalidArgumentException; use Symfony\Component\Lock\Exception\InvalidArgumentException;
use Symfony\Component\Lock\Exception\NotSupportedException;
use Symfony\Component\Lock\Key; use Symfony\Component\Lock\Key;
use Symfony\Component\Lock\PersistingStoreInterface; use Symfony\Component\Lock\PersistingStoreInterface;
use Symfony\Component\Lock\Store\MongoDbStore; use Symfony\Component\Lock\Store\MongoDbStore;
@ -81,17 +80,6 @@ class MongoDbStoreTest extends AbstractStoreTest
$this->assertContains('expires_at_1', $indexes); $this->assertContains('expires_at_1', $indexes);
} }
public function testNonBlocking()
{
$this->expectException(NotSupportedException::class);
$store = $this->getStore();
$key = new Key(uniqid(__METHOD__, true));
$store->waitAndSave($key);
}
/** /**
* @dataProvider provideConstructorArgs * @dataProvider provideConstructorArgs
*/ */