Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 See documentation for more information [1]. 

Configuration

IgniteConfiguration

...

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 for more details [2] for more details.

CollectionConfiguration

  • memoryMode property has been removed due to new Ignite page memory architecture [1]

...

IgniteAsyncSupport interface is now deprecated and will be removed in future Apache Ignite releases. Use methods with Async suffix instead. See documentation for more information [4] for more information.

Old style:

Code Block
IgniteCache<K, V> asyncCache = cache.withAsync();
 
asyncCache.getAsync(key);
 
IgniteFuture<V> future = asyncCache.future();

...

SWAP value 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.

@AffinityKeyMapped

No longer allowed on methods.

FairAffinityFunction

Implementation has been removed due to well-known problems with co-location between caches on different versions of cluster topology. Use RendezvousAffinityFunction.

RandomEvictionPolicy

Implementation has been removed with no replacement.

AffinityNodeHashResolver

Interface has been removed. Use IgniteConfiguration.consistentId property.

@AffinityKeyMapped annotation

RandomEvictionPolicy

Implementation has been removed with no replacementNo longer allowed on methods.

SQL API

@QuerySqlField and @QueryTextField

...

No longer allowed on methods.

...

  • Service Grid calls are now processed in dedicated thread pool (see IgniteConfiguration.serviceThreadPoolSize property)

  • Data Streamer calls are now processed in dedicated thread pool (see IgniteConfiguration.dataStreamerThreadPoolSize property)
  • SQL, Scan and SPI queries are now processed in dedicated thread pool (see IgniteConfiguration.queryThreadPoolSize property)

Schema import utility

Utility has been removed. Please use Web Console [7].

Integrations

Spring Framework

...

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 distribution. See documentation for more details [65]

Redis

Default Redis cache name was changed from null to  default. See documentation for more details [56]

Ignite.NET

CompiledQuery2

...

Class was removed. Please use CompiledQuery.

CacheEvent

LockId property

...

has been removed.

...

BinaryConfiguration

  • properties renamed: DefaultNameMapper - > renamed to NameMapper,
  • DefaultIdMapper - > renamed to IdMapper,
  • DefaultKeepDeserialized - > renamed to KeepDeserialized

ILifecycleBean

...

Renamed to ILifecycleHandler. {{IgniteConfiguration.LifecycleBeans

...

}} property renamed to IgniteConfiguration.LifecycleHandlers.

Dynamic Type Registration, Serializable Types

BinaryConfiguration is  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, including types implementing interface. See documentation for more information [8].

Binary Name Mapping

Ignite.NET 1.9 and earlier uses simple name mapping only, which means objObject.GetType().Name is  is used to map type name to type id. Ignite.NET 2.0 uses full name mapping by default, which includes namespace, generics and array dimensions. This change affects may affect multi-platform Ignite applications where Java and .NET types are mapped to each other. More details: https://apacheignite-net.readme.io/docs/platform-interoperability

TODO

Schema import utility - ?

. See documentation for more information [9].

Ignite C++

Enum names

  • CachePeekMode: IGNITE_PEEK_MODE_* -> CachePeekMode::* (e.g. IGNITE_PEEK_MODE_PRIMARY -> CachePeekMode::PRIMARY)
  • TransactionConcurrency: IGNITE_TX_CONCURRENCY_* -> TransactionConcurrency::* (e.g. IGNITE_TX_CONCURRENCY_OPTIMISTIC -> TransactionConcurrency::OPTIMISTIC)
  • TransactionIsolation: IGNITE_TX_ISOLATION_* -> TransactionIsolation::* (e.g. IGNITE_TX_ISOLATION_READ_COMMITTED -> TransactionIsolation::REPEATABLE_READ)
  • TransactionState: IGNITE_TX_STATE_* -> TransactionState::* (e.g. IGNITE_TX_STATE_ACTIVE -> TransactionState::ACTIVE)
  • CollectionType: IGNITE_COLLECTION_* -> CollectionType::* (e.g. IGNITE_COLLECTION_ARRAY_LIST -> CollectionType::ARRAY_LIST)
  • MapType: IGNITE_MAP_* -> MapType::* (e.g. IGNITE_MAP_HASH_MAP -> MapType::HASH_MAP)

IgniteError 

IgniteError now should be passed by reference and not by pointer everywhere.

BinaryWriter and BinaryRawWriter

BinaryWriter::WriteObject and BinaryRawWriter::WriteObject now take constant references instead of value. This probably won't require any changes from you.

BinaryType

BinaryType have been heavily refactored:

  • All methods should now be static now.
  • There is no more default implementation of BinaryType methods, meaning you are now going to have compilation errors instead of runtime errors if you have not implemented some essential method for your binary type. If you don't want to implement some method and you are sure that you will not be needing it then you should explicitly provide implementation of such method which asserts or throws exception upon call.
  • GetHashCode and GetIdentityResolver methods are not used any more.
  • BinaryType::Write now takes object argument by constant reference and not by value: void Write(BinaryWriter&, T) -> static void Write(BinaryWriter&, const T&)
  • BinaryType::Read now returns object by argument reference and not as return value (method does not return any value any more): T Read(BinaryReader&) -> static void Read(BinaryReader&, T&)
  • BinaryType::GetTypeName now return name by argument reference and not as return value: std::string GetTypeName() -> static void GetTypeName(std::string&)
  • BinaryType::GetNull now return null value by argument reference and not as return value: T GetNull() -> static void GetNull(T&)

QueryArgument

QueryArgument and QueryArgumentBase classes are not public any more. This should not affect any users as these classes were not meant for use by users from the beginning.Cache plugins - ?

 

[1] https://apacheignite.readme.io/docs/page-memory

...

[4] https://apacheignite.readme.io/docs/async-support

[5https://apacheignite-mix.readme.io/docs/hibernate-l2-cache

[6https://apacheignite.readme.io/docs/redis

[7] https://apacheignite-tools.readme.io/docs/automatic-rdbms-integration

[68https://apacheignite-mixnet.readme.io/docs/hibernate-l2-cache/serialization

[9] https://apacheignite-net.readme.io/docs/platform-interoperability