-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Closed
Labels
:Search Foundations/MappingIndex mappings, including merging and defining field typesIndex mappings, including merging and defining field types>bugTeam:Search FoundationsMeta label for the Search Foundations team in ElasticsearchMeta label for the Search Foundations team in Elasticsearch
Description
Elasticsearch version (bin/elasticsearch --version): 7.9.X
Plugins installed: []
JVM version (java -version):
OS version (uname -a if on a Unix-like system):
Related to: #61712
Description of the problem including expected versus actual behavior:
7.9.X upgrade is broken when there are indexes with "null_value": "" in their mappings.
Steps to reproduce:
In 7.8 (or earlier) create an index with the following mappings:
PUT testindex1
{
"mappings": {
"properties": {
"testdate": {
"type": "date",
"null_value": "",
"format": "dd/MM/yyyy HH:mm:ss"
}
}
}
}
That didn't return any warning/error message...
Then when trying to upgrade to 7.9..X, ES is unable to upgrade the mappings for the testindex1, and exits.
Provide logs (if relevant):
Logs after ES has been upgraded to 7.9.1:
[2020-09-15T11:33:53,429][INFO ][o.e.n.Node ] [node-1] starting ...
[2020-09-15T11:33:53,844][INFO ][o.e.t.TransportService ] [node-1] publish_address {192.168.64.3:9300}, bound_addresses {[::]:9300}
[2020-09-15T11:33:56,861][ERROR][o.e.b.Bootstrap ] [node-1] Exception
java.lang.IllegalStateException: unable to upgrade the mappings for the index [[testindex1/UHhZyWKOSGu2wkfRvTH-mg]]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:192) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.upgradeIndexMetadata(MetadataIndexUpgradeService.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadata(GatewayMetaState.java:247) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadataForNode(GatewayMetaState.java:230) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.start(GatewayMetaState.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.node.Node.start(Node.java:786) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:317) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:402) [elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) [elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) [elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127) [elasticsearch-cli-7.9.1.jar:7.9.1]
at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-cli-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) [elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) [elasticsearch-7.9.1.jar:7.9.1]
Caused by: org.elasticsearch.index.mapper.MapperParsingException: Failed to parse mapping [_doc]: failed to parse date field [NULL] with format [dd/MM/yyyy HH:mm:ss]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:423) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
... 14 more
Caused by: java.lang.IllegalArgumentException: failed to parse date field [NULL] with format [dd/MM/yyyy HH:mm:ss]
at org.elasticsearch.common.time.JavaDateFormatter.parse(JavaDateFormatter.java:169) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.common.time.DateFormatter.parseMillis(DateFormatter.java:51) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:257) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:182) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.ObjectMapper$Builder.build(ObjectMapper.java:180) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.RootObjectMapper$Builder.build(RootObjectMapper.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapper$Builder.<init>(DocumentMapper.java:74) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:108) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:421) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
... 14 more
Caused by: java.time.format.DateTimeParseException: Text 'NULL' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2050) ~[?:?]
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1878) ~[?:?]
at org.elasticsearch.common.time.JavaDateFormatter.doParse(JavaDateFormatter.java:198) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.common.time.JavaDateFormatter.parse(JavaDateFormatter.java:167) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.common.time.DateFormatter.parseMillis(DateFormatter.java:51) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:257) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:182) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.ObjectMapper$Builder.build(ObjectMapper.java:180) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.RootObjectMapper$Builder.build(RootObjectMapper.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapper$Builder.<init>(DocumentMapper.java:74) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:108) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:421) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
... 14 more
[2020-09-15T11:33:56,894][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: unable to upgrade the mappings for the index [[testindex1/UHhZyWKOSGu2wkfRvTH-mg]]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:174) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127) ~[elasticsearch-cli-7.9.1.jar:7.9.1]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
Caused by: java.lang.IllegalStateException: unable to upgrade the mappings for the index [[testindex1/UHhZyWKOSGu2wkfRvTH-mg]]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:192) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.upgradeIndexMetadata(MetadataIndexUpgradeService.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadata(GatewayMetaState.java:247) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadataForNode(GatewayMetaState.java:230) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.start(GatewayMetaState.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.node.Node.start(Node.java:786) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:317) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:402) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.9.1.jar:7.9.1]
... 6 more
Caused by: org.elasticsearch.index.mapper.MapperParsingException: Failed to parse mapping [_doc]: failed to parse date field [NULL] with format [dd/MM/yyyy HH:mm:ss]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:423) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.upgradeIndexMetadata(MetadataIndexUpgradeService.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadata(GatewayMetaState.java:247) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadataForNode(GatewayMetaState.java:230) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.start(GatewayMetaState.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.node.Node.start(Node.java:786) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:317) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:402) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.9.1.jar:7.9.1]
... 6 more
Caused by: java.lang.IllegalArgumentException: failed to parse date field [NULL] with format [dd/MM/yyyy HH:mm:ss]
at org.elasticsearch.common.time.JavaDateFormatter.parse(JavaDateFormatter.java:169) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.common.time.DateFormatter.parseMillis(DateFormatter.java:51) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:257) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:182) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.ObjectMapper$Builder.build(ObjectMapper.java:180) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.RootObjectMapper$Builder.build(RootObjectMapper.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapper$Builder.<init>(DocumentMapper.java:74) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:108) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:421) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.upgradeIndexMetadata(MetadataIndexUpgradeService.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadata(GatewayMetaState.java:247) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadataForNode(GatewayMetaState.java:230) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.start(GatewayMetaState.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.node.Node.start(Node.java:786) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:317) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:402) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.9.1.jar:7.9.1]
... 6 more
Caused by: java.time.format.DateTimeParseException: Text 'NULL' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2050) ~[?:?]
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1878) ~[?:?]
at org.elasticsearch.common.time.JavaDateFormatter.doParse(JavaDateFormatter.java:198) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.common.time.JavaDateFormatter.parse(JavaDateFormatter.java:167) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.common.time.DateFormatter.parseMillis(DateFormatter.java:51) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:257) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DateFieldMapper$Builder.build(DateFieldMapper.java:182) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.ObjectMapper$Builder.build(ObjectMapper.java:180) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.RootObjectMapper$Builder.build(RootObjectMapper.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapper$Builder.<init>(DocumentMapper.java:74) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:108) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:421) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.upgradeIndexMetadata(MetadataIndexUpgradeService.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadata(GatewayMetaState.java:247) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadataForNode(GatewayMetaState.java:230) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.gateway.GatewayMetaState.start(GatewayMetaState.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.node.Node.start(Node.java:786) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:317) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:402) ~[elasticsearch-7.9.1.jar:7.9.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.9.1.jar:7.9.1]
... 6 more
[2020-09-15T11:33:56,957][INFO ][o.e.n.Node ] [node-1] stopping ...
[2020-09-15T11:33:57,010][INFO ][o.e.n.Node ] [node-1] stopped
[2020-09-15T11:33:57,011][INFO ][o.e.n.Node ] [node-1] closing ...
[2020-09-15T11:33:57,094][INFO ][o.e.n.Node ] [node-1] closed
[2020-09-15T11:33:57,099][INFO ][o.e.x.m.p.NativeController] [node-1] Native controller process has stopped - no new native processes can be started
Metadata
Metadata
Assignees
Labels
:Search Foundations/MappingIndex mappings, including merging and defining field typesIndex mappings, including merging and defining field types>bugTeam:Search FoundationsMeta label for the Search Foundations team in ElasticsearchMeta label for the Search Foundations team in Elasticsearch