Catch listeners elastica exceptions and log them
This commit is contained in:
parent
36f0a4bb19
commit
b7c4317f6e
|
@ -3,6 +3,7 @@
|
|||
namespace FOQ\ElasticaBundle\Doctrine;
|
||||
|
||||
use FOQ\ElasticaBundle\Persister\ObjectPersister;
|
||||
use Symfony\Component\HttpKernel\Log\LoggerInterface;
|
||||
|
||||
abstract class AbstractListener
|
||||
{
|
||||
|
@ -27,14 +28,17 @@ abstract class AbstractListener
|
|||
*/
|
||||
protected $events;
|
||||
|
||||
protected $logger;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
**/
|
||||
public function __construct(ObjectPersister $objectPersister, $objectClass, array $events)
|
||||
public function __construct(ObjectPersister $objectPersister, $objectClass, array $events, LoggerInterface $logger = null)
|
||||
{
|
||||
$this->objectPersister = $objectPersister;
|
||||
$this->objectClass = $objectClass;
|
||||
$this->events = $events;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -44,4 +48,16 @@ abstract class AbstractListener
|
|||
{
|
||||
return $this->events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log the failure message if a logger is available
|
||||
*
|
||||
* $param string $message
|
||||
*/
|
||||
protected function logFailure($message)
|
||||
{
|
||||
if (null !== $this->logger) {
|
||||
$this->logger->err(sprintf('%s: %s', get_class($this), $message));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,11 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$document = $eventArgs->getDocument();
|
||||
|
||||
if ($document instanceof $this->objectClass) {
|
||||
$this->objectPersister->insertOne($document);
|
||||
try {
|
||||
$this->objectPersister->insertOne($document);
|
||||
} catch (\Elastica_Exception_Abstract $e) {
|
||||
$this->logFailure($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,7 +26,11 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$document = $eventArgs->getDocument();
|
||||
|
||||
if ($document instanceof $this->objectClass) {
|
||||
$this->objectPersister->replaceOne($document);
|
||||
try {
|
||||
$this->objectPersister->replaceOne($document);
|
||||
} catch (\Elastica_Exception_Abstract $e) {
|
||||
$this->logFailure($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,7 +39,11 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$document = $eventArgs->getDocument();
|
||||
|
||||
if ($document instanceof $this->objectClass) {
|
||||
$this->objectPersister->deleteOne($document);
|
||||
try {
|
||||
$this->objectPersister->deleteOne($document);
|
||||
} catch (\Elastica_Exception_Abstract $e) {
|
||||
$this->logFailure($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,11 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$entity = $eventArgs->getEntity();
|
||||
|
||||
if ($entity instanceof $this->objectClass) {
|
||||
$this->objectPersister->insertOne($entity);
|
||||
try {
|
||||
$this->objectPersister->insertOne($entity);
|
||||
} catch (\Elastica_Exception_Abstract $e) {
|
||||
$this->logFailure($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,7 +26,11 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$entity = $eventArgs->getEntity();
|
||||
|
||||
if ($entity instanceof $this->objectClass) {
|
||||
$this->objectPersister->replaceOne($entity);
|
||||
try {
|
||||
$this->objectPersister->replaceOne($entity);
|
||||
} catch (\Elastica_Exception_Abstract $e) {
|
||||
$this->logFailure($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,7 +39,11 @@ class Listener extends AbstractListener implements EventSubscriber
|
|||
$entity = $eventArgs->getEntity();
|
||||
|
||||
if ($entity instanceof $this->objectClass) {
|
||||
$this->objectPersister->deleteOne($entity);
|
||||
try {
|
||||
$this->objectPersister->deleteOne($entity);
|
||||
} catch (\Elastica_Exception_Abstract $e) {
|
||||
$this->logFailure($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
<argument /> <!-- object persister -->
|
||||
<argument /> <!-- model -->
|
||||
<argument type="collection" /> <!-- events -->
|
||||
<argument type="service" id="logger" on-invalid="null" />
|
||||
</service>
|
||||
|
||||
<service id="foq_elastica.elastica_to_model_transformer.prototype.mongodb" class="FOQ\ElasticaBundle\Doctrine\MongoDB\ElasticaToModelTransformer" public="false">
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
<argument /> <!-- object persister -->
|
||||
<argument /> <!-- model -->
|
||||
<argument type="collection" /> <!-- events -->
|
||||
<argement type="service" id="logger" on-invalid="null" />
|
||||
</service>
|
||||
|
||||
<service id="foq_elastica.elastica_to_model_transformer.prototype.orm" class="FOQ\ElasticaBundle\Doctrine\ORM\ElasticaToModelTransformer" public="false">
|
||||
|
|
Loading…
Reference in a new issue