From: Christian Weiske Date: Fri, 28 Sep 2012 10:59:52 +0000 (+0200) Subject: accept 404 errors when deleting repositories from elasticsearch X-Git-Tag: v0.3.0~1 X-Git-Url: https://git.cweiske.de/phorkie.git/commitdiff_plain/5f72df7e3f83ae30890a7996da025e68f6c70526 accept 404 errors when deleting repositories from elasticsearch --- diff --git a/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php b/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php index 2d74a4e..4cc02d6 100644 --- a/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php +++ b/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php @@ -3,22 +3,30 @@ namespace phorkie; class Database_Adapter_Elasticsearch_HTTPRequest extends \HTTP_Request2 { + public $allow404 = false; + public function send() { $res = parent::send(); $mainCode = intval($res->getStatus() / 100); - if ($mainCode != 2) { - $js = json_decode($res->getBody()); - if (isset($js->error)) { - $error = $js->error; - } else { - $error = $res->getBody(); - } - throw new Exception( - 'Error in elasticsearch communication: ' . $error - ); + if ($mainCode === 2) { + return $res; + } + + if ($this->allow404 && $res->getStatus() == 404) { + return $res; + } + $js = json_decode($res->getBody()); + if (isset($js->error)) { + $error = $js->error; + } else { + $error = $res->getBody(); } - return $res; + throw new Exception( + 'Error in elasticsearch communication' + . '(status code ' . $res->getStatus() . '): ' + . $error + ); } } diff --git a/src/phorkie/Database/Adapter/Elasticsearch/Indexer.php b/src/phorkie/Database/Adapter/Elasticsearch/Indexer.php index dbe769e..cf50bbe 100644 --- a/src/phorkie/Database/Adapter/Elasticsearch/Indexer.php +++ b/src/phorkie/Database/Adapter/Elasticsearch/Indexer.php @@ -89,6 +89,7 @@ class Database_Adapter_Elasticsearch_Indexer implements Database_IIndexer $this->searchInstance . 'repo/_query', \HTTP_Request2::METHOD_DELETE ); + $r->allow404 = true; $r->setBody( json_encode( (object)array( @@ -101,6 +102,7 @@ class Database_Adapter_Elasticsearch_Indexer implements Database_IIndexer $this->searchInstance . 'file/_query', \HTTP_Request2::METHOD_DELETE ); + $r->allow404 = true; $r->setBody( json_encode( (object)array( @@ -118,6 +120,7 @@ class Database_Adapter_Elasticsearch_Indexer implements Database_IIndexer $this->searchInstance . 'repo/' . $repo->id, \HTTP_Request2::METHOD_DELETE ); + $r->allow404 = true; $r->send(); $this->deleteRepoFiles($repo); @@ -130,6 +133,7 @@ class Database_Adapter_Elasticsearch_Indexer implements Database_IIndexer $this->searchInstance . 'file/_query', \HTTP_Request2::METHOD_DELETE ); + $r->allow404 = true; $r->setBody( json_encode( (object)array(