mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-04 10:58:25 +01:00
Soften a possible cluster search setup fatal
Summary: Ref T12450. The way that config repair and setup issues interact is kind of complicated, and if `cluster.search` is invalid we may end up using `cluster.search` before we repair it. I poked at things for a bit but wasn't confident I could get it to consistently repair before we use it without doing a big messy change. The only thing that really matters is whether "type" is valid or not, so just put a slightly softer/more-tailored check in for that. Test Plan: - With `"type": "elastic"`, loaded setup issues. - Before patch: hard fatal. - After patch: softer fatal with more useful messaging. {F4321048} Reviewers: chad Reviewed By: chad Maniphest Tasks: T12450 Differential Revision: https://secure.phabricator.com/D17576
This commit is contained in:
parent
5f939dcce0
commit
88798354e8
2 changed files with 13 additions and 1 deletions
|
@ -4,7 +4,7 @@ final class PhabricatorClusterSearchConfigOptionType
|
||||||
extends PhabricatorConfigJSONOptionType {
|
extends PhabricatorConfigJSONOptionType {
|
||||||
|
|
||||||
public function validateOption(PhabricatorConfigOption $option, $value) {
|
public function validateOption(PhabricatorConfigOption $option, $value) {
|
||||||
self::validateClusterSearchConfigValue($value);
|
self::validateValue($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function validateValue($value) {
|
public static function validateValue($value) {
|
||||||
|
|
|
@ -186,6 +186,18 @@ class PhabricatorSearchService
|
||||||
$refs = array();
|
$refs = array();
|
||||||
|
|
||||||
foreach ($services as $config) {
|
foreach ($services as $config) {
|
||||||
|
|
||||||
|
// Normally, we've validated configuration before we get this far, but
|
||||||
|
// make sure we don't fatal if we end up here with a bogus configuration.
|
||||||
|
if (!isset($engines[$config['type']])) {
|
||||||
|
throw new Exception(
|
||||||
|
pht(
|
||||||
|
'Configured search engine type "%s" is unknown. Valid engines '.
|
||||||
|
'are: %s.',
|
||||||
|
$config['type'],
|
||||||
|
implode(', ', array_keys($engines))));
|
||||||
|
}
|
||||||
|
|
||||||
$engine = $engines[$config['type']];
|
$engine = $engines[$config['type']];
|
||||||
$cluster = new self($engine);
|
$cluster = new self($engine);
|
||||||
$cluster->setConfig($config);
|
$cluster->setConfig($config);
|
||||||
|
|
Loading…
Add table
Reference in a new issue