Skip to content

Commit c3f7520

Browse files
authored
Pass environment paths into entitlement bootstrap (#121347)
This commit adds the data dirs, config dir and temp dir into entitlement bootstrapping. It doesn't yet use them in entitlement policies, but makes them available to use within initialization.
1 parent 859d92c commit c3f7520

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,22 @@
3131

3232
public class EntitlementBootstrap {
3333

34-
public record BootstrapArgs(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
34+
public record BootstrapArgs(
35+
Map<String, Policy> pluginPolicies,
36+
Function<Class<?>, String> pluginResolver,
37+
Path[] dataDirs,
38+
Path configDir,
39+
Path tempDir
40+
) {
3541
public BootstrapArgs {
3642
requireNonNull(pluginPolicies);
3743
requireNonNull(pluginResolver);
44+
requireNonNull(dataDirs);
45+
if (dataDirs.length == 0) {
46+
throw new IllegalArgumentException("must provide at least one data directory");
47+
}
48+
requireNonNull(configDir);
49+
requireNonNull(tempDir);
3850
}
3951
}
4052

@@ -50,13 +62,22 @@ public static BootstrapArgs bootstrapArgs() {
5062
*
5163
* @param pluginPolicies a map holding policies for plugins (and modules), by plugin (or module) name.
5264
* @param pluginResolver a functor to map a Java Class to the plugin it belongs to (the plugin name).
65+
* @param dataDirs data directories for Elasticsearch
66+
* @param configDir the config directory for Elasticsearch
67+
* @param tempDir the temp directory for Elasticsearch
5368
*/
54-
public static void bootstrap(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
69+
public static void bootstrap(
70+
Map<String, Policy> pluginPolicies,
71+
Function<Class<?>, String> pluginResolver,
72+
Path[] dataDirs,
73+
Path configDir,
74+
Path tempDir
75+
) {
5576
logger.debug("Loading entitlement agent");
5677
if (EntitlementBootstrap.bootstrapArgs != null) {
5778
throw new IllegalStateException("plugin data is already set");
5879
}
59-
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver);
80+
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver, dataDirs, configDir, tempDir);
6081
exportInitializationToAgent();
6182
loadAgent(findAgentJar());
6283
selfTest();

server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,13 @@ private static void initPhase2(Bootstrap bootstrap) throws IOException {
242242
pluginsLoader = PluginsLoader.createPluginsLoader(modulesBundles, pluginsBundles, findPluginsWithNativeAccess(pluginPolicies));
243243

244244
var pluginsResolver = PluginsResolver.create(pluginsLoader);
245-
EntitlementBootstrap.bootstrap(pluginPolicies, pluginsResolver::resolveClassToPluginName);
245+
EntitlementBootstrap.bootstrap(
246+
pluginPolicies,
247+
pluginsResolver::resolveClassToPluginName,
248+
nodeEnv.dataFiles(),
249+
nodeEnv.configFile(),
250+
nodeEnv.tmpFile()
251+
);
246252
} else if (RuntimeVersionFeature.isSecurityManagerAvailable()) {
247253
// no need to explicitly enable native access for legacy code
248254
pluginsLoader = PluginsLoader.createPluginsLoader(modulesBundles, pluginsBundles, Map.of());

0 commit comments

Comments
 (0)