Apache Ignite 2.0 incorporate tremendous changes that make it different from Apache Ignite 1.x releases. Apache Ignite 2.0 is incompatible with previous versions and, most likely, application code has to be altered if someone plans to migrate to 2.0. Below you will find the main public API changes introduced in version 2.0.
Apache Ignite 2.0 is based on the new page memory architecture. Data is always stored offheap, with ability to optionally cache small portion in Java heap. Please refer to documentation to learn more about new concepts and configuration parameters [1]. The sections below list APIs existed prior to 2.0 and that was reworked in the latest version.
Cache and Memory Metrics
The following methods were removed from `CacheMetrics` interface as part of a migration to the offheap memory architecture: getOverflowSize, getOffHeapMaxSize, getSwapGets, getSwapPuts, getSwapRemovals, getSwapHits, getSwapMisses, getSwapEntriesCount, getSwapSize, getSwapHitPercentage, getSwapMissPercentage.
To support the new memory architecture, `MemoryMetrics` interface was introduced in order to get insights on a state and behavior of the memory in runtime. Refer to this documentation if you plan to leverage from this interface: https://apacheignite.readme.io/docs/memory-metrics
Service Grid calls are processed in a separated Service Grid thread pool which size can be tweaked over `IgniteConfiguration.setServiceThreadPoolSize(...)` method. Before that, the public thread pool served that purpose.
`IgniteAsyncSupport` and all the methods that relied on it were deprecated and to be removed in the future Apache Ignite releases. Use direct async counterparts for a variety of synchronous methods instead. Refer to this documentation to learn more about the changed approach for the asynchronous programming: https://apacheignite.readme.io/docs/async-support
BinaryConfiguration is no longer required - any type can be used in Cache and Compute right away. All objects are written in Ignite binary format (which means IBinary and SQL APIs always work).
Serializable types (including those which implement ISerializable) are also written using Ignite binary format. Learn more from this documentation: https://apacheignite-net.readme.io/docs/serialization
Default Redis cache name was changed from 'null' to 'redis_cache'. Refer to this documentation for more details: https://apacheignite.readme.io/docs/redis
Apache Ignite 2.0 integrates with Hibernate 5.0. The previous integration with a legacy Hibernate version of 4.2 can be used by importing `ignite-hibernate_4.2` Maven artifact or taking a respective JAR file from Apache Ignite 2.0 or later distribution.
Refer to this documentation for more details: https://apacheignite-mix.readme.io/docs/hibernate-l2-cache
Spring Framework used by several Apache Ignite components has been upgraded to version 4.3.7.RELEASE.
-------------------------------------------------
mapKeysToNodes
- removed, use Affinity.mapKeysToNodes
mapKeyToNode
- removed, use Affinity.mapKeyToNode
Implementation has been removed from public API and is not expected to be used directly anymore.
Several methods were removed with no replacement:
startTime
duration
memoryMode
property has been removed due to new Ignite page memory architecture [1]Several event types have been removed due to new Ignite page memory architecture:
EVT_CACHE_OBJECT_SWAPPED
EVT_CACHE_OBJECT_UNSWAPPED
EVT_SWAP_SPACE_DATA_READ
EVT_SWAP_SPACE_DATA_STORED
EVT_SWAP_SPACE_DATA_REMOVED
EVT_SWAP_SPACE_CLEARED
EVT_SWAP_SPACE_DATA_EVICTED
EVT_CACHE_OBJECT_TO_OFFHEAP
EVT_CACHE_OBJECT_FROM_OFFHEAP
Classes have been removed. Use QueryEntity
class and CacheConfiguration.queryEntities
property.
Enumeration has been removed because CLOCK
mode is no longer supported for ATOMIC
cache.
Enumeration has been removed due to new Ignite page memory architecture [1]. Offheap is used as the main storage tier with an ability to enable Java heap caching via CacheConfiguration.onheapCacheEnabled
property.
name
- null
name is no longer allowedmetaCacheName
- removed, use metaCacheConfiguration
dataCacheName
- removed, use dataCacheConfiguration
streamBufferSize
- renamed to bufferSize
maxSpace
- removed, maximum memory is now controlled through MemoryPolicy
[1]initializeDefaultPathModes
- removedtrashPurgeTimeout
- removedfragmentizerLocWritesRatio
- removed dualModePutExecutorService
- removeddualModePutExecutorServiceShutdown
- removeddualModeMaxPendingPutsSize
- removedNo longer allowed on methods.
No longer allowed on methods.
Interface has been removed. Now key hash code and equality is calculated based on content of serialized object.
Implementation has been removed due to well-known problems with co-location between caches on different versions of cluster topology. Use RendezvousAffinityFunction
.
Interface has been removed. Use IgniteConfiguration.consistentId
property.
randomEntry
- removedlocalPromote
- removed due to new Ignite page memory architecture [1]SPI has been removed due to new Ignite page memory architecture [1]. The swapping tier can only be used if a swapping file is set via MemoryPolicyConfiguration.swapFilePath
property.
Implementation has been removed with no replacement.
Several deprecated methods have been removed:
connectionBufferSize
connectionBufferFlushFrequency
minimumBufferedMessageCount
Heartbeat-related properties have been removed. Now heartbeat frequency is controlled through IgniteConfiguration.metricsUpdateFrequency
property.
maxMissedHeartbeats
maxMissedClientHeartbeats
heartbeatFrequency
gridName
- deprecated, use igniteInstanceName
marshallerCacheThreadPoolSize
- removed due to changes in marshaller metadata handling
marshallerCacheKeepAliveTime
- removed due to changes in marshaller metadata handling
clockSyncSamples
- removed because CLOCK
mode is no longer supported for ATOMIC
cache
clockSyncFrequency
- removed because CLOCK
mode is no longer supported for ATOMIC
cache
swapSpaceSpi
- removed due to new Ignite page memory architecture [1]
The following properties have been changed/removed:
atomicWriteOrderMode
- removed because CLOCK
mode is no longer supported for ATOMIC
cache
name
- null
name is not allowed any more
typeMetadata
- removed, use queryEntities
property
The following properties have been removed due to new Ignite page memory architecture [1]:
evictSynchronized
evictSynchronizedKeyBufferSize
evictSynchronizedConcurrencyLevel
evictSynchronizedTimeout
evictMaxOverflowRatio
memoryMode
offHeapMaxMemory
snapshotableIndex
sqlOnheapRowCacheSize
startSize
swapEnabled
Previously existed eviction mechanisms based on EvictionPolicy
is now supported only for optional near and Java heap caching of the data stored in the offheap page memory. To enable the eviction for the page memory, use DataPageEvictionMode
enumeration. See documentation [2] for more details.
updateTime
method was removedCachePeekMode
MemoryPolicyConfiguration.swapFilePath
property.
Schema import utility - ?
Cache plugins - ?
[1] https://apacheignite.readme.io/docs/page-memory
[2] https://apacheignite.readme.io/docs/evictions