Simplify deprecation issue levels (#36326)
This commit gets rid of the 'NONE' and 'INFO' severity levels for deprecation issues. 'NONE' is unused and does not make much sense as a severity level. 'INFO' can be separated into two categories: Either 1) we can definitively tell there will be a problem with the cluster/node/index configuration that can be resolved prior to upgrade, in which case the issue should be a WARNING, or 2) we can't, because any issues would be at the application level, for which the user should review the deprecation logs and/or response headers.
This commit is contained in:
parent
2ba023be8a
commit
85bba0c3ae
|
@ -141,8 +141,6 @@ public class DeprecationInfoResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Level {
|
public enum Level {
|
||||||
NONE,
|
|
||||||
INFO,
|
|
||||||
WARNING,
|
WARNING,
|
||||||
CRITICAL
|
CRITICAL
|
||||||
;
|
;
|
||||||
|
|
|
@ -30,6 +30,8 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.elasticsearch.client.migration.DeprecationInfoResponse.DeprecationIssue.Level.CRITICAL;
|
||||||
|
import static org.elasticsearch.client.migration.DeprecationInfoResponse.DeprecationIssue.Level.WARNING;
|
||||||
import static org.elasticsearch.test.AbstractXContentTestCase.xContentTester;
|
import static org.elasticsearch.test.AbstractXContentTestCase.xContentTester;
|
||||||
|
|
||||||
public class DeprecationInfoResponseTests extends ESTestCase {
|
public class DeprecationInfoResponseTests extends ESTestCase {
|
||||||
|
@ -94,7 +96,7 @@ public class DeprecationInfoResponseTests extends ESTestCase {
|
||||||
// of elements for this list.
|
// of elements for this list.
|
||||||
int startingRandomNumber = canBeEmpty ? 0: 1;
|
int startingRandomNumber = canBeEmpty ? 0: 1;
|
||||||
for (int i =0; i < randomIntBetween(startingRandomNumber, 2); i++) {
|
for (int i =0; i < randomIntBetween(startingRandomNumber, 2); i++) {
|
||||||
list.add(new DeprecationInfoResponse.DeprecationIssue(DeprecationInfoResponse.DeprecationIssue.Level.INFO,
|
list.add(new DeprecationInfoResponse.DeprecationIssue(randomFrom(WARNING, CRITICAL),
|
||||||
randomAlphaOfLength(5),
|
randomAlphaOfLength(5),
|
||||||
randomAlphaOfLength(5),
|
randomAlphaOfLength(5),
|
||||||
randomBoolean() ? randomAlphaOfLength(5) : null));
|
randomBoolean() ? randomAlphaOfLength(5) : null));
|
||||||
|
|
|
@ -49,20 +49,20 @@ Example response:
|
||||||
{
|
{
|
||||||
"cluster_settings" : [
|
"cluster_settings" : [
|
||||||
{
|
{
|
||||||
"level" : "info",
|
"level" : "critical",
|
||||||
"message" : "Network settings changes",
|
"message" : "Cluster name cannot contain ':'",
|
||||||
"url" : "{ref-60}/breaking_60_indices_changes.html#_index_templates_use_literal_index_patterns_literal_instead_of_literal_template_literal",
|
"url" : "{ref}/breaking-changes-7.0.html#_literal_literal_is_no_longer_allowed_in_cluster_name",
|
||||||
"details" : "templates using `template` field: watches,.monitoring-alerts,.watch-history-6,.ml-notifications,security-index-template,triggered_watches,.monitoring-es,.ml-meta,.ml-state,.monitoring-logstash,.ml-anomalies-,.monitoring-kibana"
|
"details" : "This cluster is named [mycompany:logging], which contains the illegal character ':'."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"node_settings" : [ ],
|
"node_settings" : [ ],
|
||||||
"index_settings" : {
|
"index_settings" : {
|
||||||
".monitoring-es-6-2017.07.21" : [
|
"logs:apache" : [
|
||||||
{
|
{
|
||||||
"level" : "info",
|
"level" : "warning",
|
||||||
"message" : "Coercion of boolean fields",
|
"message" : "Index name cannot contain ':'",
|
||||||
"url" : "{ref-60}/breaking_60_mappings_changes.html#_coercion_of_boolean_fields",
|
"url" : "{ref}/breaking-changes-7.0.html#_literal_literal_is_no_longer_allowed_in_index_name",
|
||||||
"details" : "[[type: doc, field: spins], [type: doc, field: mlockall], [type: doc, field: node_master], [type: doc, field: primary]]"
|
"details" : "This index is named [logs:apache], which contains the illegal character ':'."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ The following is an example deprecation warning:
|
||||||
["source","js",subs="attributes,callouts,macros"]
|
["source","js",subs="attributes,callouts,macros"]
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
{
|
{
|
||||||
"level" : "info",
|
"level" : "warning",
|
||||||
"message" : "This is the generic descriptive message of the breaking change",
|
"message" : "This is the generic descriptive message of the breaking change",
|
||||||
"url" : "{ref-60}/breaking_60_indices_changes.html",
|
"url" : "{ref-60}/breaking_60_indices_changes.html",
|
||||||
"details" : "more information, like which nodes, indices, or settings are to blame"
|
"details" : "more information, like which nodes, indices, or settings are to blame"
|
||||||
|
@ -91,10 +91,8 @@ As is shown, there is a `level` property that describes the significance of the
|
||||||
issue.
|
issue.
|
||||||
|
|
||||||
|=======
|
|=======
|
||||||
|none | Everything is good.
|
|
||||||
|info | An advisory note that something has changed. No action needed.
|
|
||||||
|warning | You can upgrade directly, but you are using deprecated functionality
|
|warning | You can upgrade directly, but you are using deprecated functionality
|
||||||
which will not be available in the next major version.
|
which will not be available or behave differently in the next major version.
|
||||||
|critical | You cannot upgrade without fixing this problem.
|
|critical | You cannot upgrade without fixing this problem.
|
||||||
|=======
|
|=======
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,14 @@ import java.util.Objects;
|
||||||
public class DeprecationIssue implements Writeable, ToXContentObject {
|
public class DeprecationIssue implements Writeable, ToXContentObject {
|
||||||
|
|
||||||
public enum Level implements Writeable {
|
public enum Level implements Writeable {
|
||||||
NONE,
|
/**
|
||||||
INFO,
|
* Resolving this issue is advised but not required to upgrade. There may be undesired changes in behavior unless this issue is
|
||||||
|
* resolved before upgrading.
|
||||||
|
*/
|
||||||
WARNING,
|
WARNING,
|
||||||
|
/**
|
||||||
|
* This issue must be resolved to upgrade. Failures will occur unless this is resolved before upgrading.
|
||||||
|
*/
|
||||||
CRITICAL
|
CRITICAL
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,6 @@ public class DeprecationChecks {
|
||||||
static List<Function<IndexMetaData, DeprecationIssue>> INDEX_SETTINGS_CHECKS =
|
static List<Function<IndexMetaData, DeprecationIssue>> INDEX_SETTINGS_CHECKS =
|
||||||
Collections.unmodifiableList(Arrays.asList(
|
Collections.unmodifiableList(Arrays.asList(
|
||||||
IndexDeprecationChecks::baseSimilarityDefinedCheck,
|
IndexDeprecationChecks::baseSimilarityDefinedCheck,
|
||||||
IndexDeprecationChecks::coercionCheck,
|
|
||||||
IndexDeprecationChecks::dynamicTemplateWithMatchMappingTypeCheck,
|
IndexDeprecationChecks::dynamicTemplateWithMatchMappingTypeCheck,
|
||||||
IndexDeprecationChecks::indexSharedFileSystemCheck,
|
IndexDeprecationChecks::indexSharedFileSystemCheck,
|
||||||
IndexDeprecationChecks::indexStoreTypeCheck,
|
IndexDeprecationChecks::indexStoreTypeCheck,
|
||||||
|
|
|
@ -79,23 +79,6 @@ public class IndexDeprecationChecks {
|
||||||
return issues;
|
return issues;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DeprecationIssue coercionCheck(IndexMetaData indexMetaData) {
|
|
||||||
if (indexMetaData.getCreationVersion().before(Version.V_6_0_0_alpha1)) {
|
|
||||||
List<String> issues = new ArrayList<>();
|
|
||||||
fieldLevelMappingIssue(indexMetaData, (mappingMetaData, sourceAsMap) -> {
|
|
||||||
issues.addAll(findInPropertiesRecursively(mappingMetaData.type(), sourceAsMap,
|
|
||||||
property -> "boolean".equals(property.get("type"))));
|
|
||||||
});
|
|
||||||
if (issues.size() > 0) {
|
|
||||||
return new DeprecationIssue(DeprecationIssue.Level.INFO, "Coercion of boolean fields",
|
|
||||||
"https://www.elastic.co/guide/en/elasticsearch/reference/master/" +
|
|
||||||
"breaking_60_mappings_changes.html#_coercion_of_boolean_fields",
|
|
||||||
issues.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
static DeprecationIssue dynamicTemplateWithMatchMappingTypeCheck(IndexMetaData indexMetaData) {
|
static DeprecationIssue dynamicTemplateWithMatchMappingTypeCheck(IndexMetaData indexMetaData) {
|
||||||
if (indexMetaData.getCreationVersion().before(Version.V_6_0_0_alpha1)) {
|
if (indexMetaData.getCreationVersion().before(Version.V_6_0_0_alpha1)) {
|
||||||
List<String> issues = new ArrayList<>();
|
List<String> issues = new ArrayList<>();
|
||||||
|
|
Loading…
Reference in New Issue