-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Closed
Labels
Description
Elasticsearch Version
7.16.2, master
Installed Plugins
no
Java Version
bundled
OS Version
Linux iZbp1dn0ktfed9mjoyuiajZ 5.10.84-10.2.al8.x86_64 #1 SMP Thu Feb 10 15:03:09 CST 2022 x86_64 x86_64 x86_64 GNU/Linux
Problem Description
When put repository using PutRespository API for an existing repository, NullPointerException was thrown, short stack shows as below
1> java.lang.Exception: java.lang.NullPointerException: Cannot invoke "org.elasticsearch.repositories.Repository.getMetadata()" because "repository" is null
1> at org.elasticsearch.cluster.service.MasterService.innerExecuteTasks(MasterService.java:916) ~[main/:?]
1> at org.elasticsearch.cluster.service.MasterService.executeTasks(MasterService.java:871) ~[main/:?]
1> at org.elasticsearch.cluster.service.MasterService.runTasks(MasterService.java:253) [main/:?]
1> at org.elasticsearch.cluster.service.MasterService$Batcher.run(MasterService.java:153) [main/:?]
1> at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:114) [main/:?]
1> at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:170) [main/:?]
1> at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:714) [main/:?]
1> at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:260) [main/:?]
1> at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:223) [main/:?]
1> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
1> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
1> at java.lang.Thread.run(Thread.java:833) [?:?]
Steps to Reproduce
I've created an IT to reproduce this issue in #85551, steps can be described as following:
- put repository using
RestPutRepositoryAPI and make sure non-master node failed to create repository. - restart master let one of the previous non-master node become master
- put the same repository using the
RestPutRepositoryAPI.
Logs (if relevant)
No response