Skip to content
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

Mapping update for “date_range” field type is not idempotent #69012

Closed
0bivan opened this issue Feb 16, 2021 · 3 comments
Closed

Mapping update for “date_range” field type is not idempotent #69012

0bivan opened this issue Feb 16, 2021 · 3 comments
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

@0bivan
Copy link

0bivan commented Feb 16, 2021

Elasticsearch version (bin/elasticsearch --version): 7.10.1, 7.10.2 (both inside container, https://hub.docker.com/_/elasticsearch/)

Plugins installed: []

JVM version (java -version): JVM[AdoptOpenJDK/OpenJDK 64-Bit Server VM/15.0.1/15.0.1+9]

OS version (uname -a if on a Unix-like system): Linux/5.8.0-43-generic/amd64

Description of the problem including expected versus actual behavior:

ES does not allow to update date_range fields with exact same mapping settings and responds with 500.
Expect to see just confirmation, but get that odd error. By the way, this does not happen with integer or keyword fields.

Steps to reproduce:

### 1. add new index
$ curl -XPUT http://localhost:29200/test_index
{"acknowledged":true,"shards_acknowledged":true,"index":"test_index"}

### 2. check settings
$ curl -XGET http://localhost:29200/test_index
{
  "test_index": {
    "aliases": {},
    "mappings": {},
    "settings": {
      "index": {
        "creation_date": "1612290812518",
        "number_of_shards": "1",
        "number_of_replicas": "1",
        "uuid": "jQ2IEe5VTkKgWVnBfDxvoA",
        "version": {
          "created": "7100299"
        },
        "provided_name": "test_index"
      }
    }
  }
}

### 3. add date_range field
$ curl -XPUT http://localhost:29200/test_index/_mapping -H 'Content-Type: application/json' -d '{"properties": {"range": {"type": "date_range", "format": "yyyy-MM-dd"}}}'
{"acknowledged":true}

### 4. ensure mapping is updated
$ curl -XGET http://localhost:29200/test_index/_mapping
{
  "test_index": {
    "mappings": {
      "properties": {
        "range": {
          "type": "date_range",
          "format": "yyyy-MM-dd"
        }
      }
    }
  }
}

### 5. try to put exact same settings for "range" field
$ curl -XPUT http://localhost:29200/test_index/_mapping -H 'Content-Type: application/json' -d '{"properties": {"range": {"type": "date_range", "format": "yyyy-MM-dd"}}}'
{
  "error": {
    "root_cause": [
      {
        "type": "illegal_state_exception",
        "reason": "[index.version.created] is not present in the index settings for index with UUID [null]"
      }
    ],
    "type": "illegal_state_exception",
    "reason": "[index.version.created] is not present in the index settings for index with UUID [null]"
  },
  "status": 500
}

Provide logs (if relevant):

{"type": "server", "timestamp": "2021-02-16T06:08:57,169Z", "level": "WARN", "component": "r.suppressed", "cluster.name": "docker-cluster", "node.name": "940ccd424da4", "message": "path: /test_index/_mapping, params: {index=test_index}", "cluster.uuid": "iOA30YSdT0GMlF0zdpMTaw", "node.id": "u1zOdxINR9KQTlY9LrLFdw" , 
"stacktrace": ["java.lang.IllegalStateException: [index.version.created] is not present in the index settings for index with UUID [null]",
"at org.elasticsearch.Version.indexCreated(Version.java:258) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.Mapper$BuilderContext.indexCreatedVersion(Mapper.java:57) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.RangeFieldMapper$Builder.setupFieldType(RangeFieldMapper.java:134) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.RangeFieldMapper$Builder.build(RangeFieldMapper.java:152) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.RangeFieldMapper$Builder.build(RangeFieldMapper.java:84) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.ParametrizedFieldMapper.merge(ParametrizedFieldMapper.java:104) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.ParametrizedFieldMapper.merge(ParametrizedFieldMapper.java:61) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.ObjectMapper.doMerge(ObjectMapper.java:535) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.RootObjectMapper.doMerge(RootObjectMapper.java:298) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.ObjectMapper.merge(ObjectMapper.java:495) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.RootObjectMapper.merge(RootObjectMapper.java:293) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.Mapping.merge(Mapping.java:110) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.index.mapper.DocumentMapper.merge(DocumentMapper.java:281) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.metadata.MetadataMappingService$PutMappingExecutor.applyRequest(MetadataMappingService.java:283) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.metadata.MetadataMappingService$PutMappingExecutor.execute(MetadataMappingService.java:239) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.service.MasterService.executeTasks(MasterService.java:702) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.service.MasterService.calculateTaskOutputs(MasterService.java:324) ~[elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.service.MasterService.runTasks(MasterService.java:219) [elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.service.MasterService.access$000(MasterService.java:73) [elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.service.MasterService$Batcher.run(MasterService.java:151) [elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150) [elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188) [elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:684) [elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:252) [elasticsearch-7.10.2.jar:7.10.2]",
"at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:215) [elasticsearch-7.10.2.jar:7.10.2]",
"at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]",
"at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]",
"at java.lang.Thread.run(Thread.java:832) [?:?]"] }
@0bivan 0bivan added >bug needs:triage Requires assignment of a team area label labels Feb 16, 2021
@cbuescher cbuescher added the :Search Foundations/Mapping Index mappings, including merging and defining field types label Feb 16, 2021
@elasticmachine elasticmachine added the Team:Search Meta label for search team label Feb 16, 2021
@elasticmachine
Copy link
Collaborator

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

@cbuescher cbuescher removed the needs:triage Requires assignment of a team area label label Feb 16, 2021
@cbuescher
Copy link
Member

Hi @0bivan, thanks for reporting this issue. The bug has already been fixed in 7.11.0 which has been release a few days ago, it also didn't show up in 7.9 when I just tried to reproduce it, so I suggest updating to the latest issue and will be closing this here.

@0bivan
Copy link
Author

0bivan commented Feb 16, 2021

Yep. Checked with 7.11.0 works fine. Thank you!

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

No branches or pull requests

4 participants