Skip to content

Setting empty string as null_value in date field breaks 7.9 upgrade #62363

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
psanz-estc opened this issue Sep 15, 2020 · 1 comment · Fixed by #62487
Closed

Setting empty string as null_value in date field breaks 7.9 upgrade #62363

psanz-estc opened this issue Sep 15, 2020 · 1 comment · Fixed by #62487
Assignees
Labels
>bug :Search Foundations/Mapping Index mappings, including merging and defining field types Team:Search Foundations Meta label for the Search Foundations team in Elasticsearch

Comments

@psanz-estc
Copy link

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
@psanz-estc psanz-estc added >bug v7.9.0 needs:triage Requires assignment of a team area label v7.9.1 labels Sep 15, 2020
@jimczi jimczi added the :Search Foundations/Mapping Index mappings, including merging and defining field types label Sep 17, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-search (:Search/Mapping)

@elasticmachine elasticmachine added the Team:Search Meta label for search team label Sep 17, 2020
@jimczi jimczi removed Team:Search Meta label for search team needs:triage Requires assignment of a team area label v7.9.0 v7.9.1 labels Sep 17, 2020
romseygeek added a commit that referenced this issue Sep 17, 2020
In #57666 we changed when null_value was parsed for ip and date fields. Previously,
the null value was stored as a string, and parsed into a date or InetAddress whenever
a document containing a null value was encountered. Now, the values are parsed when
the mappings are built, which means that bad values are detected up front; if you try and
add a mapping with a badly-parsed ip or date for a null_value, the mapping will be
rejected.

This causes problems for upgrades in the case when you have a badly-formed null_value
in a pre-7.9 cluster. This commit fixes the upgrade case by changing the logic to only
fail on indexes created in 8x and later. For earlier indexes, we log a warning on the
badly formed value and ignore it, replicating the earlier behaviour.

Fixes #62363
romseygeek added a commit that referenced this issue Sep 17, 2020
In #57666 we changed when null_value was parsed for ip and date fields. Previously,
the null value was stored as a string, and parsed into a date or InetAddress whenever
a document containing a null value was encountered. Now, the values are parsed when
the mappings are built, which means that bad values are detected up front; if you try and
add a mapping with a badly-parsed ip or date for a null_value, the mapping will be
rejected.

This causes problems for upgrades in the case when you have a badly-formed null_value
in a pre-7.9 cluster. This commit fixes the upgrade case by changing the logic to only
logging a warning on the badly formed value, replicating the earlier behaviour.

Fixes #62363
romseygeek added a commit that referenced this issue Sep 17, 2020
In #57666 we changed when null_value was parsed for ip and date fields. Previously,
the null value was stored as a string, and parsed into a date or InetAddress whenever
a document containing a null value was encountered. Now, the values are parsed when
the mappings are built, which means that bad values are detected up front; if you try and
add a mapping with a badly-parsed ip or date for a null_value, the mapping will be
rejected.

This causes problems for upgrades in the case when you have a badly-formed null_value
in a pre-7.9 cluster. This commit fixes the upgrade case by changing the logic to only
logging a warning on the badly formed value, replicating the earlier behaviour.

Fixes #62363
@javanna javanna added the Team:Search Foundations Meta label for the Search Foundations team in Elasticsearch label Jul 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>bug :Search Foundations/Mapping Index mappings, including merging and defining field types Team:Search Foundations Meta label for the Search Foundations team in Elasticsearch
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants