Kirill Tkalenko created IGNITE-17148:
----------------------------------------

             Summary: Support for abstract configuration
                 Key: IGNITE-17148
                 URL: https://issues.apache.org/jira/browse/IGNITE-17148
             Project: Ignite
          Issue Type: Task
            Reporter: Kirill Tkalenko
            Assignee: Kirill Tkalenko
             Fix For: 3.0.0-alpha6


*NOTE*

Description may not be complete.

*Problem*
We need the ability to create a basic configuration schema so that we can 
define a common configuration schema and inherit from it with additional 
configuration added. 

Let's look at an example:

We need to create two configuration schemes for the Memory based storage 
engine, they should have a common property "page size in bytes" and then they 
should be different, let's sketch an example scheme.


{code:java}
public class BasePageMemoryStorageEngineConfigurationSchema {
    @Value(hasDefault = true)
    public int pageSize = 16 * 1024;
}

public class VolatilePageMemoryStorageEngineConfigurationSchema extends 
BasePageMemoryStorageEngineConfigurationSchema{
    @ConfigValue
    public VolatilePageMemoryDataRegionConfigurationSchema defaultRegion;

    @NamedConfigValue
    public VolatilePageMemoryDataRegionConfigurationSchema regions;
}

public class PersistentPageMemoryStorageEngineConfigurationSchema extends 
BasePageMemoryStorageEngineConfigurationSchema{
    @ConfigValue
    public PersistentPageMemoryDataRegionConfigurationSchema defaultRegion;

    @NamedConfigValue
    public PersistentPageMemoryDataRegionConfigurationSchema regions;

    @ConfigValue
    public PageMemoryCheckpointConfigurationSchema checkpoint;
}{code}
How can we implement this at the moment:
 * [internal extension of the 
configuration|https://issues.apache.org/jira/browse/IGNITE-15047]: then the 
user will not be able to see and change it - not suitable;
 * [polymorphic 
configuration|https://issues.apache.org/jira/browse/IGNITE-14645]:

 ** by design, we cannot create root config schemas for polymorphic config or 
instances;


 ** by design, we can change the type of polymorphic configuration to any 
instance, we do not fix its type, which does not suit us;
 ** by design, we cannot expose a polymorphic instance as a configuration 
schema property;
 ** hocon will display the type of polymorphic configuration, which is not 
necessary in this case and will look a little strange.

 



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to