-
Notifications
You must be signed in to change notification settings - Fork 25.7k
Closed
Labels
:Core/Infra/CoreCore issues without another labelCore issues without another label>bugTeam:Core/InfraMeta label for core/infra teamMeta label for core/infra teamblocker
Description
Elasticsearch Version
7.17
Installed Plugins
No response
Java Version
bundled
OS Version
macos
Problem Description
It looks like we are unable to parse SystemIndexMigrationTaskState and SystemIndexMigrationTaskParams from cluster state.
I think we are missing the list of NamedXContetnParsers
public static List<NamedXContentRegistry.Entry> getNamedXContentParsers() {
return org.elasticsearch.core.List.of(
new NamedXContentRegistry.Entry(PersistentTaskParams.class, new ParseField(SystemIndexMigrationTaskParams.SYSTEM_INDEX_UPGRADE_TASK_NAME),
SystemIndexMigrationTaskParams::fromXContent) ,
new NamedXContentRegistry.Entry(PersistentTaskState.class, new ParseField(SystemIndexMigrationTaskParams.SYSTEM_INDEX_UPGRADE_TASK_NAME),
SystemIndexMigrationTaskState::fromXContent)
);
}
and there might be a mistake in
elasticsearch/server/src/main/java/org/elasticsearch/upgrades/SystemIndexMigrationTaskState.java
Line 33 in 35dc030
| public class SystemIndexMigrationTaskState implements PersistentTaskState { |
Steps to Reproduce
A unit test reproduces the problem
public void testUpgradeSystemIndices() throws IOException {
String data = "{\n" +
" \"id\" : \"upgrade-system-indices\",\n" +
" \"task\" : {\n" +
" \"upgrade-system-indices\" : {\n" +
" \"params\" : { },\n" +
" \"state\" : {\n" +
" \"current_index\" : \".tasks\",\n" +
" \"current_feature\" : \"tasks\",\n" +
" \"feature_metadata\" : { }\n" +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
" } ";
XContentParser parser = JsonXContent.jsonXContent.createParser(NamedXContentRegistry.EMPTY, LoggingDeprecationHandler.INSTANCE, data);
PersistentTasksCustomMetadata.PERSISTENT_TASK_PARSER.parse(parser, null);
}
it will pass with this registry
NamedXContentRegistry registry = new NamedXContentRegistry(
org.elasticsearch.core.List.of(
new NamedXContentRegistry.Entry(PersistentTaskParams.class, new ParseField(SystemIndexMigrationTaskParams.SYSTEM_INDEX_UPGRADE_TASK_NAME),
SystemIndexMigrationTaskParams::fromXContent) ,
new NamedXContentRegistry.Entry(PersistentTaskState.class, new ParseField(SystemIndexMigrationTaskParams.SYSTEM_INDEX_UPGRADE_TASK_NAME),
SystemIndexMigrationTaskState::fromXContent)
)
);
Logs (if relevant)
org.elasticsearch.xcontent.XContentParseException: [5:26] [tasks] failed to parse field [task]
at __randomizedtesting.SeedInfo.seed([AAF90DD8FF67D929:DFEEA1E8FDED2720]:0)
at org.elasticsearch.xcontent.ObjectParser.throwFailedToParse(ObjectParser.java:609)
at org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:604)
at org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:616)
at org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:320)
at org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:260)
at org.elasticsearch.xcontent.ObjectParserTests.testUpgradeSystemIndices(ObjectParserTests.java:1126)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:947)
at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:832)
at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:883)
at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:894)
at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.elasticsearch.xcontent.XContentParseException: [5:26] [task] failed to parse field [upgrade-system-indices]
at org.elasticsearch.xcontent.ObjectParser.rethrowFieldParseFailure(ObjectParser.java:547)
at org.elasticsearch.xcontent.ObjectParser.lambda$declareNamedObjects$12(ObjectParser.java:487)
at org.elasticsearch.xcontent.ObjectParser.lambda$declareNamedObjects$13(ObjectParser.java:498)
at org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:602)
... 40 more
Caused by: org.elasticsearch.xcontent.XContentParseException: [5:26] [named] failed to parse field [params]
at org.elasticsearch.xcontent.ObjectParser.throwFailedToParse(ObjectParser.java:609)
at org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:604)
at org.elasticsearch.xcontent.ObjectParser.parseSub(ObjectParser.java:616)
at org.elasticsearch.xcontent.ObjectParser.parse(ObjectParser.java:320)
at org.elasticsearch.persistent.PersistentTasksCustomMetadata.lambda$static$9(PersistentTasksCustomMetadata.java:96)
at org.elasticsearch.xcontent.ObjectParser.lambda$declareNamedObjects$12(ObjectParser.java:485)
... 42 more
Caused by: org.elasticsearch.xcontent.XContentParseException: named objects are not supported for this parser
at org.elasticsearch.xcontent.NamedXContentRegistry.parseNamedObject(NamedXContentRegistry.java:125)
at org.elasticsearch.xcontent.support.AbstractXContentParser.namedObject(AbstractXContentParser.java:408)
at org.elasticsearch.persistent.PersistentTasksCustomMetadata.lambda$static$6(PersistentTasksCustomMetadata.java:88)
at org.elasticsearch.xcontent.ObjectParser.lambda$declareField$8(ObjectParser.java:424)
at org.elasticsearch.xcontent.ObjectParser.parseValue(ObjectParser.java:602)
... 46 more
Metadata
Metadata
Assignees
Labels
:Core/Infra/CoreCore issues without another labelCore issues without another label>bugTeam:Core/InfraMeta label for core/infra teamMeta label for core/infra teamblocker