Currently Ignite does not allow to change most of the configuration properties at runtime. This may be very inconvenient since even minor config change may require full cluster restart with down time.
The purpose of this document is to build a list of configuration properties in Ignite, IgniteCache and default SPIs that are possible to change at runtime and also to suggest architecture to support the intended changes.
Ignite needs flexibility in changing configuration settings at runtime for the following reasons:
It seems that almost everything is possible to change except some cornerstone properties such as consistent ID, discovery ports and some other props of the kind.
Some of the properties are really easy to change. E.g. IgniteConfiguration.getFailureDetectionTimeout()
will require only to validate the input and update the value and make network components to reread it (or make them read value from configuration all the time). Propagation is out of scope, but we can think of internal compute job. And some properties may require custom event to be sent and handled, e.g. PersistentStoreConfiguration.getWalMode()
This is not the final list, as Ignite has tons of configuration properties and config objects. This list will further be expanded, but for now let's keep only the most important props here.
IgniteConfiguration
CacheConfiguration
TcpDiscoverySpi
TcpCommunicationSpi
PersistentStoreConfiguration
MemoryConfiguration
MemoryPolicyConfiguration
TransactionConfiguration (this is low priority - no valuable props to change)