Merge pull request #579 from merk/client-overwrite

Surpress server errors cookbook update
This commit is contained in:
Tim Nagel 2014-05-23 23:01:16 +10:00
commit d532e6b1e3

View file

@ -1,5 +1,5 @@
Suppressing Server Errors
========================
=========================
By default, exceptions from the Elastica client library will propagate through
the bundle's Client class. For instance, if the Elasticsearch server is offline,
@ -12,25 +12,48 @@ container parameter with a custom class. In the following example, we override
the `Client::request()` method and return the equivalent of an empty search
response if an exception occurred.
```
Sample client code:
-------------------
```php
<?php
namespace Acme\ElasticaBundle;
use FOS\ElasticaBundle\Client as BaseClient;
use Elastica\Exception\ExceptionInterface;
use Elastica\Request;
use Elastica\Response;
use FOS\ElasticaBundle\Client as BaseClient;
class Client extends BaseClient
{
public function request($path, $method, $data = array())
public function request($path, $method = Request::GET, $data = array(), array $query = array())
{
try {
return parent::request($path, $method, $data);
return parent::request($path, $method, $data, $query);
} catch (ExceptionInterface $e) {
if ($this->_logger) {
$this->_logger->warning('Failed to send a request to ElasticSearch', array(
'exception' => $e->getMessage(),
'path' => $path,
'method' => $method,
'data' => $data,
'query' => $query
));
}
return new Response('{"took":0,"timed_out":false,"hits":{"total":0,"max_score":0,"hits":[]}}');
}
}
}
```
```
Configuration change:
---------------------
You must update a parameter in your `app/config/config.yml` file to point to your overridden client:
```yaml
parameters:
fos_elastica.client.class: Acme\ElasticaBundle\Client
```