Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Extensions]Versioning support for plugin extension points #2283

Open
4 tasks
saratvemulapalli opened this issue Feb 28, 2022 · 0 comments
Open
4 tasks

[Extensions]Versioning support for plugin extension points #2283

saratvemulapalli opened this issue Feb 28, 2022 · 0 comments
Labels
Build Libraries & Interfaces enhancement Enhancement or improvement to existing feature or request extensions Meta Meta issue, not directly linked to a PR Plugins Priority-High

Comments

@saratvemulapalli
Copy link
Member

saratvemulapalli commented Feb 28, 2022

Plugins are rigid in terms of compatibility and have to be built with a specific x.y.z version of OpenSearch during compile time. This tight coupling reduces the velocity of software development lifecycle for OpenSearch and plugins because it requires all plug-ins to release at the same time when a version number is raised.

Ref: #1707

The underlying problem is lack of versioning support for extension points (https://opensearch.org/blog/technical-post/2021/12/plugins-intro/) on which plugins are extended.

We would like to see OpenSearch being compatible with different versions of plugins/extensions.
This would need modularization of opensearch starting with all the extension points.

  • Versioning support for all extension points.
  • Versioning support for underlying core modules (like Settings etc).
  • Build and publish versioned SPI's for plugin/extension developers.
  • Add support to register/remove extension point handlers dynamically.

Ref: Extension Points:

getFeature - Implement a custom feature and respond to cluster state API.
createModules - Implement node level dependency injection modules via Guice.
getGuiceServiceClasses - Node level services which will be automatically called with node state changes.
createComponents - Custom component implemented and its lifecycle being managed by OpenSearch.
additionalSettings - Implement additional node level settings.
getNamedWriteables - Custom parsers the plugin would use for transport messaging.
getNamedXContent - Custom parsers the plugin would use for NamedObjects.
onIndexModule - Index level extension point, called before an index is created.
getSettings - Implement additional cluster level settings.
getSettingsFilter - Implement additional cluster level settings filter.
getSettingUpgraders - Implement setting upgraders.
getIndexTemplateMetadataUpgrader - An extension to modify index template metadata on startup.
getExecutorBuilders - Implement custom thread pools for executions.
getBootstrapChecks - Add additional bootstrap checks when OpenSearch node initializes.
getRoles - Implement additional DiscoveryNodeRole’s.
getAdditionalIndexSettingProviders - Implement additional index level settings for newly created indices.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Build Libraries & Interfaces enhancement Enhancement or improvement to existing feature or request extensions Meta Meta issue, not directly linked to a PR Plugins Priority-High
Projects
None yet
Development

No branches or pull requests

2 participants