Abstract

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.

Why?

Ignite needs flexibility in changing configuration settings at runtime for the following reasons:

  • make system easy adoptable to changing load or environment
  • make possible to fix configuration mistakes
  • allow fine tuning at runtime
  • avoid cluster restart to change the config

What Settings Can be Changed?

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.

How Changes to Properties Can Be Applied

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()

Properties to Change

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

  • Require custom discovery event
    • user attributes (userAttrs)
  • Can be changed right away
    • rebalance thread pool size
    • failure detection timeout
    • client failure detection timeout
    • long query warn timeout
    • metrics log frequency
    • pools sizes (public, system, partitioned, etc. However, may require some tricky synchronization)
    • metrics update frequency
    • metrics history size

CacheConfiguration

  • Require custom discovery event
    • ?
  • Can be changed right away
    • rebalance timeout
    • rebalance batches prefetch count
    • rebalance throttle
    • partition loss policy
    • StatisticsEnabled: on / off
    • QueryDetailMetricsSize: change size

TcpDiscoverySpi

  • Require custom discovery event
    • ?
  • Can be changed right away
    • timeouts - socket timeout, connect timeout, ack timeout, cleanup timeouts
    • stats print frequency
    • client reconnect disabled

TcpCommunicationSpi

  • Require custom discovery event
    • ?
  • Can be changed right away
    • timeouts - socket timeout, connect timeout, ack timeout, idle connection timeouts
    • socket write timeout
    • socket buffers sizes
    • unacked messages buffer size

PersistentStoreConfiguration

  • Require custom discovery event
    • wal mode
  • Can be changed right away
    • ?

MemoryConfiguration

  • Require custom discovery event
    • ?
  • Can be changed right away
    • ?

MemoryPolicyConfiguration

  • Require custom discovery event
    • ?
  • Can be changed right away
    • ?

TransactionConfiguration (this is low priority - no valuable props to change)

  • Require custom discovery event
    • ?
  • Can be changed right away
    • default concurrency
    • default isolation
    • default timeout 

 

 

 

  • No labels