There have been two instances of this today (both in PR builds) that blew up due to an OOME.

**Build scan:**
https://gradle-enterprise.elastic.co/s/ryfsljqpbyjlm/tests/:x-pack:plugin:ml:internalClusterTest/org.elasticsearch.xpack.ml.integration.MlDistributedFailureIT/testClusterWithTwoMlNodes_StopsDatafeed_GivenJobFailsOnReassign

**Reproduction line:**
`./gradlew ':x-pack:plugin:ml:internalClusterTest' --tests "org.elasticsearch.xpack.ml.integration.MlDistributedFailureIT.testClusterWithTwoMlNodes_StopsDatafeed_GivenJobFailsOnReassign" -Dtests.seed=A3E13461A939BDF6 -Dtests.locale=ar-IQ -Dtests.timezone=America/Porto_Velho -Druntime.java=17`

**Applicable branches:**
master

**Reproduces locally?:**
No

**Failure history:**
https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.xpack.ml.integration.MlDistributedFailureIT&tests.test=testClusterWithTwoMlNodes_StopsDatafeed_GivenJobFailsOnReassign

**Failure excerpt:**
```
java.lang.Exception: Test abandoned because suite timeout was reached.

  at __randomizedtesting.SeedInfo.seed([A3E13461A939BDF6]:0)

```
server/src/main/java/org/elasticsearch/plugins/PluginsService.java
private static void ensureEntryPointAccessible(Controller controller, Module pluginModule, String className) {
        if (className != null) {
            controller.addOpens(pluginModule, toPackageName(className), serverModule);
        }
    }
    /**
     * Adds qualified exports declared in the server module descriptor to the target module.
     * This is required since qualified exports targeting yet-to-be-created modules, i.e. plugins,
     * are silently dropped when the boot layer is created.
     */
    private static void addQualifiedExports(Module target) {
        serverModule.getDescriptor()
            .exports()
            .stream()
            .filter(ModuleDescriptor.Exports::isQualified)
            .filter(exports -> exports.targets().contains(target.getName()))
            .forEach(exports -> serverModule.addExports(exports.source(), target));
    }
    /**
     * Adds qualified opens declared in the server module descriptor to the target module.
     * This is required since qualified opens targeting yet-to-be-created modules, i.e. plugins,
     * are silently dropped when the boot layer is created.
     */
    private static void addQualifiedOpens(Module target) {
        serverModule.getDescriptor()
            .opens()
            .stream()
            .filter(ModuleDescriptor.Opens::isQualified)
            .filter(opens -> opens.targets().contains(target.getName()))
            .forEach(opens -> serverModule.addExports(opens.source(), target));