diff options
| author | Yuriy Andamasov <yuriy@vyos.io> | 2026-05-23 13:47:45 +0300 |
|---|---|---|
| committer | Yuriy Andamasov <yuriy@vyos.io> | 2026-05-23 13:47:45 +0300 |
| commit | 3a4580e35a0c7a6480aeee9ec4acf90d0fa85326 (patch) | |
| tree | 3aa689e12ea9764a6883dfc101a712cdf0b9264b /src/engine/VyOSElasticModernFulltextStorageEngine.php | |
| parent | e0eb6dd6b21c129c775d8bb2bec203ae0d756d0f (diff) | |
| download | phorge-elasticsearch-modern-3a4580e35a0c7a6480aeee9ec4acf90d0fa85326.tar.gz phorge-elasticsearch-modern-3a4580e35a0c7a6480aeee9ec4acf90d0fa85326.zip | |
E7 fixup: move didHealthCheck(true) to HTTP-success boundary in executeRequest()
Previously the success health-check was called inside the JSON-decode
try block. This was wrong: a valid HTTP 200 response with non-JSON
body (e.g. ES maintenance page) would mark the host as *unhealthy*
because JSON parse failure triggered didHealthCheck(false). The host
is demonstrably reachable and responding; only the application layer
failed.
Move didHealthCheck(true) to immediately after list($body) = resolvex()
succeeds, before the GET/non-GET branch. Remove the now-unnecessary
didHealthCheck(false) from the JSON catch block — only network/timeout
failures belong in the health-check false path.
🤖 Generated by [robots](https://vyos.io)
Diffstat (limited to 'src/engine/VyOSElasticModernFulltextStorageEngine.php')
| -rw-r--r-- | src/engine/VyOSElasticModernFulltextStorageEngine.php | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/engine/VyOSElasticModernFulltextStorageEngine.php b/src/engine/VyOSElasticModernFulltextStorageEngine.php index 211a196..e036082 100644 --- a/src/engine/VyOSElasticModernFulltextStorageEngine.php +++ b/src/engine/VyOSElasticModernFulltextStorageEngine.php @@ -261,16 +261,18 @@ abstract class VyOSElasticModernFulltextStorageEngine throw $ex; } + // HTTP request succeeded — mark the host as healthy regardless of whether + // the response body is valid JSON. JSON parse failure is an application + // error, not a host-connectivity failure. + $host->didHealthCheck(true); + if ($method !== 'GET') { return null; } try { - $decoded = phutil_json_decode($body); - $host->didHealthCheck(true); - return $decoded; + return phutil_json_decode($body); } catch (PhutilJSONParserException $ex) { - $host->didHealthCheck(false); throw new Exception( pht('Elasticsearch server returned invalid JSON.'), 0, |
