Fix #977: Handle the exception as structured even if the reason is null #980
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Close #977
The case of the issue #977 is handling structured exception as semi-structured exception which only occurs before Elasticsearch 2.0.
Ordinal code checks whether
$error['error']['reason']
is set.elasticsearch-php/src/Elasticsearch/Connections/Connection.php
Line 683 in c65c1fb
Unfortunately,
master_not_discovered_exception
is thrown with blank error reason.https://github.com/elastic/elasticsearch/blob/16bfdcacc0172264db9b32aa6edfa8b5c327f3b4/server/src/main/java/org/elasticsearch/discovery/MasterNotDiscoveredException.java#L31
To avoid the problem, use
array_key_exists()
alterisset()
.To make the logic simple, I refactored the if-statements.
Check whether the exception is structured or not first.
Then distinguish whether the exception is structured exception after Elasticsearch 2.0.