Page MenuHomePhabricator

D12948.diff
No OneTemporary

D12948.diff

diff --git a/src/applications/config/check/PhabricatorElasticSearchSetupCheck.php b/src/applications/config/check/PhabricatorElasticSearchSetupCheck.php
--- a/src/applications/config/check/PhabricatorElasticSearchSetupCheck.php
+++ b/src/applications/config/check/PhabricatorElasticSearchSetupCheck.php
@@ -7,44 +7,71 @@
}
protected function executeChecks() {
- if ($this->shouldUseElasticSearchEngine()) {
- $engine = new PhabricatorElasticSearchEngine();
-
- if (!$engine->indexExists()) {
- $summary = pht(
- 'You enabled Elasticsearch but the index does not exist.');
-
- $message = pht(
- 'You likely enabled search.elastic.host without creating the '.
- 'index. Run `./bin/search init` to correct the index.');
-
- $this
- ->newIssue('elastic.missing-index')
- ->setName(pht('Elasticsearch index Not Found'))
- ->setSummary($summary)
- ->setMessage($message)
- ->addRelatedPhabricatorConfig('search.elastic.host');
- } else if (!$engine->indexIsSane()) {
- $summary = pht(
- 'Elasticsearch index exists but needs correction.');
-
- $message = pht(
- 'Either the Phabricator schema for Elasticsearch has changed '.
- 'or Elasticsearch created the index automatically. Run '.
- '`./bin/search init` to correct the index.');
-
- $this
- ->newIssue('elastic.broken-index')
- ->setName(pht('Elasticsearch index Incorrect'))
- ->setSummary($summary)
- ->setMessage($message);
+ if (!$this->shouldUseElasticSearchEngine()) {
+ return;
+ }
+
+ $engine = new PhabricatorElasticSearchEngine();
+
+ $index_exists = null;
+ $index_sane = null;
+ try {
+ $index_exists = $engine->indexExists();
+ if ($index_exists) {
+ $index_sane = $engine->indexIsSane();
}
+ } catch (Exception $ex) {
+ $summary = pht('Elasticsearch is not reachable as configured.');
+ $message = pht(
+ 'Elasticsearch is configured (with the %s setting) but Phabricator '.
+ 'encountered an exception when trying to test the index.'.
+ "\n\n".
+ '%s',
+ phutil_tag('tt', array(), 'search.elastic.host'),
+ phutil_tag('pre', array(), $ex->getMessage()));
+
+ $this->newIssue('elastic.misconfigured')
+ ->setName(pht('Elasticsearch Misconfigured'))
+ ->setSummary($summary)
+ ->setMessage($message)
+ ->addRelatedPhabricatorConfig('search.elastic.host');
+ return;
+ }
+
+ if (!$index_exists) {
+ $summary = pht(
+ 'You enabled Elasticsearch but the index does not exist.');
+
+ $message = pht(
+ 'You likely enabled search.elastic.host without creating the '.
+ 'index. Run `./bin/search init` to correct the index.');
+
+ $this
+ ->newIssue('elastic.missing-index')
+ ->setName(pht('Elasticsearch index Not Found'))
+ ->setSummary($summary)
+ ->setMessage($message)
+ ->addRelatedPhabricatorConfig('search.elastic.host');
+ } else if (!$index_sane) {
+ $summary = pht(
+ 'Elasticsearch index exists but needs correction.');
+
+ $message = pht(
+ 'Either the Phabricator schema for Elasticsearch has changed '.
+ 'or Elasticsearch created the index automatically. Run '.
+ '`./bin/search init` to correct the index.');
+
+ $this
+ ->newIssue('elastic.broken-index')
+ ->setName(pht('Elasticsearch index Incorrect'))
+ ->setSummary($summary)
+ ->setMessage($message);
}
}
protected function shouldUseElasticSearchEngine() {
$search_engine = PhabricatorSearchEngine::loadEngine();
- return $search_engine instanceof PhabricatorElasticSearchEngine;
+ return ($search_engine instanceof PhabricatorElasticSearchEngine);
}
}

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 8, 1:11 AM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6739247
Default Alt Text
D12948.diff (3 KB)

Event Timeline