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 and later versions are based on the new off-heap memory architecture that is well explained documentation [1].
Look over the documentation above to learn more about new concepts and configuration parameters. The sections below list APIs existed prior to 2.0 and that was reworked in the latest version.
Previously existed eviction mechanisms based on `EvictionPolicy` is now supported only for optional near and Java heap caching of the data stored in the off-heap page memory. To enable the eviction for the page memory, use `DataPageEvictionMode` enumeration. Refer to this documentation for more details: https://apacheignite.readme.io/docs/evictions
The following methods were removed from `CacheMetrics` interface as part of a migration to the off-heap 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
`null` can no longer be used as a cache name. If a cache is started with an empty named then it will be named `default` and you can get it using either `Ignite.cache(null)` or `Ignite.cache("default")` calls.
`FairAffinityFunction` was discontinued and removed from the API level due. Use `RendezvousAffinityFunction` instead (enabled by default).
IgniteConfiguration's `getGridName/setGridName` methods are deprecated and will be removed in later releases. Use IgniteConfiguration's `getIgniteInstanceName/setIgniteInstanceName` instead.
`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]
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].
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
Schema import utility - ?
Cache plugins - ?
[1] https://apacheignite.readme.io/docs/page-memory