Issue with custom settings with my plugin in 6.x


#1

I'm having an issue with an elastic search plugin I'm trying to write...basically I need my own settings (like passed in as System props or defined in elasticsearch.yml)...originally I started on an earlier version of elastic search for development and testing, but since I have upgraded to 6.1.1. However...now my setting gets loaded by my plugin, but then immediately fails validation... org.elasticsearch.bootstrap.StartupException: "java.lang.IllegalArgumentException: unknown setting [my.setting] please check that any required plugins are installed, or check the breaking changes documentation for removed settings"

Documentation in breaking changes 5.4 (https://www.elastic.co/guide/en/elasticsearch/reference/5.4/breaking_50_settings_changes.html) says "From Elasticsearch 5.0 on all settings are validated before they are applied. Node level and default index level settings are validated on node startup, dynamic cluster and index setting are validated before they are updated/added to the cluster state.

Every setting must be a known setting. All settings must have been registered with the node or transport client they are used with. This implies that plugins that define custom settings must register all of their settings during plugin loading using the SettingsModule#registerSettings(Setting) method."

I couldn't find any subsequent info that implied this has changed in later releases.

However...SettingsModule#registerSettings(Setting) is private...and from what I can tell always has been since it was introduced...what am I missing?

On the community website, there is a link (https://www.elastic.co/blog/found-writing-a-plugin) with information on writing your own plugin, but that site has a big warning...
WARNING: This article contains outdated information. We no longer recommend taking its advice.
Can anyone help me with my plugin specific setting question or is there more up to date documentation available?


(Ivan Brusic) #2

Your plugin, which should extend the org.elasticsearch.plugin.Plugin class,
needs to override the getSettings() methods, which returns the additional
settings your plugin provides.

There is no documentation on writing plugins or working on the internals.
Wait until you get to the gradle build goodness! The beauty of open-source
is that you can often learn by example. The base plugins are all contained
in the main repo

Various other projects on Github, Bitbucket, etc. Here is another example:

Cheers,

Ivan


#3

Thanks so much Ivan. I knew it had to be something relatively easy.

Thanks again!!!
Andy


(system) #4

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.