Clarify that plugins can be closed
Plugins are closed if they implement java.io.Closeable but this is not clear from the plugin interface. This commit clarifies this by declaring that Plugins implement java.io.Closeable and adding an empty implementation to the base Plugin class. Relates #21669
This commit is contained in:
parent
52d4cd504a
commit
484ad31ed9
|
@ -734,7 +734,7 @@ public class Node implements Closeable {
|
||||||
toClose.add(() -> stopWatch.stop().start("plugin(" + plugin.getClass().getName() + ")"));
|
toClose.add(() -> stopWatch.stop().start("plugin(" + plugin.getClass().getName() + ")"));
|
||||||
toClose.add(plugin);
|
toClose.add(plugin);
|
||||||
}
|
}
|
||||||
toClose.addAll(pluginsService.filterPlugins(Closeable.class));
|
toClose.addAll(pluginsService.filterPlugins(Plugin.class));
|
||||||
|
|
||||||
toClose.add(() -> stopWatch.stop().start("script"));
|
toClose.add(() -> stopWatch.stop().start("script"));
|
||||||
toClose.add(injector.getInstance(ScriptService.class));
|
toClose.add(injector.getInstance(ScriptService.class));
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
|
|
||||||
package org.elasticsearch.plugins;
|
package org.elasticsearch.plugins;
|
||||||
|
|
||||||
|
import java.io.Closeable;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -70,7 +72,7 @@ import java.util.function.UnaryOperator;
|
||||||
* methods should cause any extensions of {@linkplain Plugin} that used the pre-5.x style extension syntax to fail to build and point the
|
* methods should cause any extensions of {@linkplain Plugin} that used the pre-5.x style extension syntax to fail to build and point the
|
||||||
* plugin author at the new extension syntax. We hope that these make the process of upgrading a plugin from 2.x to 5.x only mildly painful.
|
* plugin author at the new extension syntax. We hope that these make the process of upgrading a plugin from 2.x to 5.x only mildly painful.
|
||||||
*/
|
*/
|
||||||
public abstract class Plugin {
|
public abstract class Plugin implements Closeable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Node level guice modules.
|
* Node level guice modules.
|
||||||
|
@ -162,6 +164,16 @@ public abstract class Plugin {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the resources opened by this plugin.
|
||||||
|
*
|
||||||
|
* @throws IOException if the plugin failed to close its resources
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void close() throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Old-style guice index level extension point. {@code @Deprecated} and {@code final} to act as a signpost for plugin authors upgrading
|
* Old-style guice index level extension point. {@code @Deprecated} and {@code final} to act as a signpost for plugin authors upgrading
|
||||||
* from 2.x.
|
* from 2.x.
|
||||||
|
|
Loading…
Reference in New Issue