accept 404 errors when deleting repositories from elasticsearch
authorChristian Weiske <cweiske@cweiske.de>
Fri, 28 Sep 2012 10:59:52 +0000 (12:59 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Fri, 28 Sep 2012 10:59:52 +0000 (12:59 +0200)
src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php
src/phorkie/Database/Adapter/Elasticsearch/Indexer.php

index 2d74a4e..4cc02d6 100644 (file)
@@ -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
+        );
     }
 }
 
index dbe769e..cf50bbe 100644 (file)
@@ -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(