### CI Link

https://gradle-enterprise.elastic.co/s/2kxb4swf2na3m

### Repro line

`gradlew ':x-pack:plugin:core:test' --tests "org.elasticsearch.xpack.core.ilm.IndexLifecycleExplainResponseTests.testConcurrentToXContent" -Dtests.seed=F0ACC0B7F00E87C -Dtests.locale=he-IL -Dtests.timezone=America/Mazatlan -Druntime.java=17`

### Does it reproduce?

No

### Applicable branches

master

### Failure history

Failed three times in the past three weeks. Cannot repro locally, even after running it with `-Dtests.iters=10000`

### Failure excerpt

```
REPRODUCE WITH: ./gradlew ':x-pack:plugin:core:test' --tests "org.elasticsearch.xpack.core.ilm.IndexLifecycleExplainResponseTests.testConcurrentToXContent" -Dtests.seed=F0ACC0B7F00E87C -Dtests.locale=he-IL -Dtests.timezone=America/Mazatlan -Druntime.java=17

org.elasticsearch.xpack.core.ilm.IndexLifecycleExplainResponseTests > testConcurrentToXContent FAILED
    java.util.concurrent.ExecutionException: java.lang.AssertionError: Failed to round trip over human readable VND_JSON
    Canonical is:
    {
      "index" : "OdLNCOIKwA",
      "managed" : true,
      "policy" : "AUuNtYTjhg",
      "index_creation_date" : "1986-08-05T02:55:06.458Z",
      "index_creation_date_millis" : 523594506458,
      "time_since_index_creation" : "12987.34d",
      "lifecycle_date" : "1988-04-18T16:24:40.565Z",
      "lifecycle_date_millis" : 577383880565,
      "age" : "12364.78d",
      "phase" : "wvePKgOTZU",
      "phase_time" : "+152620375-08-31T14:02:46.038Z",
      "phase_time_millis" : 4816171701842566038,
      "action" : "NwsgagyYHU",
      "action_time" : "+112419015-07-21T08:32:22.739Z",
      "action_time_millis" : 3547539310408342739,
      "step" : "BxpfxjHiJx",
      "step_time" : "+67495741-05-23T01:58:56.303Z",
      "step_time_millis" : 2129897704067936303,
      "failed_step" : "vcYCDfQVtg",
      "is_auto_retryable_error" : true,
      "failed_step_retry_count" : 9,
      "repository_name" : "MTMJajqKrm",
      "snapshot_name" : "ewBcghonnw",
      "shrink_index_name" : "XSCUxutXRS",
      "step_info" : {
        "HNLPXKQbuQ" : "GQBbwuCOmq"
      },
      "phase_execution" : {
        "policy" : "PRgtD",
        "phase_definition" : {
          "min_age" : "0ms",
          "actions" : {
            "TEST_ACTION" : { }
          }
        },
        "version" : 755898683045883943,
        "modified_date" : "+38424792-04-16T02:03:27.661Z",
        "modified_date_in_millis" : 1212507158695407661
      }
    }
    Wanted : {"index":"OdLNCOIKwA","managed":true,"policy":"AUuNtYTjhg","index_creation_date":"1986-08-05T02:55:06.458Z","index_creation_date_millis":523594506458,"time_since_index_creation":"12987.34d","lifecycle_date":"1988-04-18T16:24:40.565Z","lifecycle_date_millis":577383880565,"age":"12364.77d","phase":"wvePKgOTZU","phase_time":"+152620375-08-31T14:02:46.038Z","phase_time_millis":4816171701842566038,"action":"NwsgagyYHU","action_time":"+112419015-07-21T08:32:22.739Z","action_time_millis":3547539310408342739,"step":"BxpfxjHiJx","step_time":"+67495741-05-23T01:58:56.303Z","step_time_millis":2129897704067936303,"failed_step":"vcYCDfQVtg","is_auto_retryable_error":true,"failed_step_retry_count":9,"repository_name":"MTMJajqKrm","snapshot_name":"ewBcghonnw","shrink_index_name":"XSCUxutXRS","step_info":{"HNLPXKQbuQ":"GQBbwuCOmq"},"phase_execution":{"policy":"PRgtD","phase_definition":{"min_age":"0ms","actions":{"TEST_ACTION":{}}},"version":755898683045883943,"modified_date":"+38424792-04-16T02:03:27.661Z","modified_date_in_millis":1212507158695407661}}
    But got: {"index":"OdLNCOIKwA","managed":true,"policy":"AUuNtYTjhg","index_creation_date":"1986-08-05T02:55:06.458Z","index_creation_date_millis":523594506458,"time_since_index_creation":"12987.34d","lifecycle_date":"1988-04-18T16:24:40.565Z","lifecycle_date_millis":577383880565,"age":"12364.78d","phase":"wvePKgOTZU","phase_time":"+152620375-08-31T14:02:46.038Z","phase_time_millis":4816171701842566038,"action":"NwsgagyYHU","action_time":"+112419015-07-21T08:32:22.739Z","action_time_millis":3547539310408342739,"step":"BxpfxjHiJx","step_time":"+67495741-05-23T01:58:56.303Z","step_time_millis":2129897704067936303,"failed_step":"vcYCDfQVtg","is_auto_retryable_error":true,"failed_step_retry_count":9,"repository_name":"MTMJajqKrm","snapshot_name":"ewBcghonnw","shrink_index_name":"XSCUxutXRS","step_info":{"HNLPXKQbuQ":"GQBbwuCOmq"},"phase_execution":{"policy":"PRgtD","phase_definition":{"min_age":"0ms","actions":{"TEST_ACTION":{}}},"version":755898683045883943,"modified_date":"+38424792-04-16T02:03:27.661Z","modified_date_in_millis":1212507158695407661}}
        at __randomizedtesting.SeedInfo.seed([F0ACC0B7F00E87C:6773E0E2321A101F]:0)
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at org.elasticsearch.test.AbstractWireTestCase.concurrentTest(AbstractWireTestCase.java:99)
        at org.elasticsearch.test.AbstractSerializingTestCase.testConcurrentToXContent(AbstractSerializingTestCase.java:82)
        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:1758)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:44)
        at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
        at org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45)
        at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
        at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:375)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:824)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:475)
        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
        at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
        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.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
        at org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
        at org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
        at org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
        at org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:375)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:831)
        at java.base/java.lang.Thread.run(Thread.java:833)

        Caused by:
        java.lang.AssertionError: Failed to round trip over human readable VND_JSON
        Canonical is:
        {
          "index" : "OdLNCOIKwA",
          "managed" : true,
          "policy" : "AUuNtYTjhg",
          "index_creation_date" : "1986-08-05T02:55:06.458Z",
          "index_creation_date_millis" : 523594506458,
          "time_since_index_creation" : "12987.34d",
          "lifecycle_date" : "1988-04-18T16:24:40.565Z",
          "lifecycle_date_millis" : 577383880565,
          "age" : "12364.78d",
          "phase" : "wvePKgOTZU",
          "phase_time" : "+152620375-08-31T14:02:46.038Z",
          "phase_time_millis" : 4816171701842566038,
          "action" : "NwsgagyYHU",
          "action_time" : "+112419015-07-21T08:32:22.739Z",
          "action_time_millis" : 3547539310408342739,
          "step" : "BxpfxjHiJx",
          "step_time" : "+67495741-05-23T01:58:56.303Z",
          "step_time_millis" : 2129897704067936303,
          "failed_step" : "vcYCDfQVtg",
          "is_auto_retryable_error" : true,
          "failed_step_retry_count" : 9,
          "repository_name" : "MTMJajqKrm",
          "snapshot_name" : "ewBcghonnw",
          "shrink_index_name" : "XSCUxutXRS",
          "step_info" : {
            "HNLPXKQbuQ" : "GQBbwuCOmq"
          },
          "phase_execution" : {
            "policy" : "PRgtD",
            "phase_definition" : {
              "min_age" : "0ms",
              "actions" : {
                "TEST_ACTION" : { }
              }
            },
            "version" : 755898683045883943,
            "modified_date" : "+38424792-04-16T02:03:27.661Z",
            "modified_date_in_millis" : 1212507158695407661
          }
        }
        Wanted : {"index":"OdLNCOIKwA","managed":true,"policy":"AUuNtYTjhg","index_creation_date":"1986-08-05T02:55:06.458Z","index_creation_date_millis":523594506458,"time_since_index_creation":"12987.34d","lifecycle_date":"1988-04-18T16:24:40.565Z","lifecycle_date_millis":577383880565,"age":"12364.77d","phase":"wvePKgOTZU","phase_time":"+152620375-08-31T14:02:46.038Z","phase_time_millis":4816171701842566038,"action":"NwsgagyYHU","action_time":"+112419015-07-21T08:32:22.739Z","action_time_millis":3547539310408342739,"step":"BxpfxjHiJx","step_time":"+67495741-05-23T01:58:56.303Z","step_time_millis":2129897704067936303,"failed_step":"vcYCDfQVtg","is_auto_retryable_error":true,"failed_step_retry_count":9,"repository_name":"MTMJajqKrm","snapshot_name":"ewBcghonnw","shrink_index_name":"XSCUxutXRS","step_info":{"HNLPXKQbuQ":"GQBbwuCOmq"},"phase_execution":{"policy":"PRgtD","phase_definition":{"min_age":"0ms","actions":{"TEST_ACTION":{}}},"version":755898683045883943,"modified_date":"+38424792-04-16T02:03:27.661Z","modified_date_in_millis":1212507158695407661}}
        But got: {"index":"OdLNCOIKwA","managed":true,"policy":"AUuNtYTjhg","index_creation_date":"1986-08-05T02:55:06.458Z","index_creation_date_millis":523594506458,"time_since_index_creation":"12987.34d","lifecycle_date":"1988-04-18T16:24:40.565Z","lifecycle_date_millis":577383880565,"age":"12364.78d","phase":"wvePKgOTZU","phase_time":"+152620375-08-31T14:02:46.038Z","phase_time_millis":4816171701842566038,"action":"NwsgagyYHU","action_time":"+112419015-07-21T08:32:22.739Z","action_time_millis":3547539310408342739,"step":"BxpfxjHiJx","step_time":"+67495741-05-23T01:58:56.303Z","step_time_millis":2129897704067936303,"failed_step":"vcYCDfQVtg","is_auto_retryable_error":true,"failed_step_retry_count":9,"repository_name":"MTMJajqKrm","snapshot_name":"ewBcghonnw","shrink_index_name":"XSCUxutXRS","step_info":{"HNLPXKQbuQ":"GQBbwuCOmq"},"phase_execution":{"policy":"PRgtD","phase_definition":{"min_age":"0ms","actions":{"TEST_ACTION":{}}},"version":755898683045883943,"modified_date":"+38424792-04-16T02:03:27.661Z","modified_date_in_millis":1212507158695407661}}
            at org.junit.Assert.fail(Assert.java:88)
            at org.elasticsearch.test.AbstractSerializingTestCase.lambda$testConcurrentToXContent$3(AbstractSerializingTestCase.java:98)
            at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
            at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
            ... 1 more
```
x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ilm/IndexLifecycleExplainResponseTests.java
}
        @Override
        public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
            builder.startObject();
            builder.field(key, value);
            builder.endObject();
            return builder;
        }
        @Override
        public int hashCode() {
            return Objects.hash(key, value);
        }
        @Override
        public boolean equals(Object obj) {
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            RandomStepInfo other = (RandomStepInfo) obj;
            return Objects.equals(key, other.key) && Objects.equals(value, other.value);
        }
        @Override
        public String toString() {
            return Strings.toString(this);
        }
    }
}