[ 
https://issues.apache.org/jira/browse/IGNITE-28837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mikhail Petrov updated IGNITE-28837:
------------------------------------
    Description: 
Add the ability for internal components (e.g., plugins and SPIs) to provide 
their own independent sets of features and versions.
h2. Proposed Design

Introduce the concept of an *Ignite component* participating in Rolling Upgrade.

Each component provides:
 * Component name.

 * Component version.

 * Set of supported {{{}IgniteFeature{}}}s.

Component registration should be performed through the existing *Extensions* 
mechanism.

Each participating component implements the following internal interface:

 


{code:java}
public interface IgniteComponentFeaturesProvider extends Extension {
    /** Component name. */
    String componentName();

    /** Component version. */
    IgniteProductVersion componentVersion();

    /** Features supported by the component. */
    Collection<IgniteFeature> features();
}
{code}


The implementation is registered in the {{ExtensionRegistry}} during plugin 
initialization:

 


{code:java}
@Override public void initExtensions(PluginContext ctx, ExtensionRegistry 
registry) {
    registry.registerExtension(
        IgniteComponentFeaturesProvider.class,
        new TestPluginComponentFeaturesProvider(versions.pluginVersion()));
}

{code}

Initially, feature state queries and feature activation notifications will only 
be available through {{{}GridKernalContext{}}}, as this API is intended for 
internal use.
h2. Validation Rules

The presence of registered components should be validated during node join.
h3. Server nodes

When Rolling Upgrade is *not* active:
 * All server nodes must expose the same set of registered components.

h3. Client nodes
 * Every component present on a client node must also be present on the server 
nodes.

 * Client nodes are allowed to omit components that exist on the server.

This relaxation is intentional because:
 * Plugins may not be required on client nodes.

 * Client node configurations are often outside the control of the cluster 
administrator.

 

  was:Add the ability for internal components (e.g., plugins and SPIs) to 
provide their own independent sets of features and versions.


> Add support for multiple independent feature sets during RU
> -----------------------------------------------------------
>
>                 Key: IGNITE-28837
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28837
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Mikhail Petrov
>            Assignee: Mikhail Petrov
>            Priority: Major
>              Labels: IEP-132, ise
>             Fix For: 2.19
>
>          Time Spent: 1h 50m
>  Remaining Estimate: 0h
>
> Add the ability for internal components (e.g., plugins and SPIs) to provide 
> their own independent sets of features and versions.
> h2. Proposed Design
> Introduce the concept of an *Ignite component* participating in Rolling 
> Upgrade.
> Each component provides:
>  * Component name.
>  * Component version.
>  * Set of supported {{{}IgniteFeature{}}}s.
> Component registration should be performed through the existing *Extensions* 
> mechanism.
> Each participating component implements the following internal interface:
>  
> {code:java}
> public interface IgniteComponentFeaturesProvider extends Extension {
>     /** Component name. */
>     String componentName();
>     /** Component version. */
>     IgniteProductVersion componentVersion();
>     /** Features supported by the component. */
>     Collection<IgniteFeature> features();
> }
> {code}
> The implementation is registered in the {{ExtensionRegistry}} during plugin 
> initialization:
>  
> {code:java}
> @Override public void initExtensions(PluginContext ctx, ExtensionRegistry 
> registry) {
>     registry.registerExtension(
>         IgniteComponentFeaturesProvider.class,
>         new TestPluginComponentFeaturesProvider(versions.pluginVersion()));
> }
> {code}
> Initially, feature state queries and feature activation notifications will 
> only be available through {{{}GridKernalContext{}}}, as this API is intended 
> for internal use.
> h2. Validation Rules
> The presence of registered components should be validated during node join.
> h3. Server nodes
> When Rolling Upgrade is *not* active:
>  * All server nodes must expose the same set of registered components.
> h3. Client nodes
>  * Every component present on a client node must also be present on the 
> server nodes.
>  * Client nodes are allowed to omit components that exist on the server.
> This relaxation is intentional because:
>  * Plugins may not be required on client nodes.
>  * Client node configurations are often outside the control of the cluster 
> administrator.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to