blob: d2afaea914ebcd9e456eb4adc0f6443da756b1b3 [file] [log] [blame]
<link rel="canonical" href="" />
<title>2.0 Release Notes - Apache Ignite</title>
<style>h2 { border-bottom: 2px solid #ccc;
color: #113847;
font-size: 29px;
font-weight: normal;
margin: 30px 0 15px 0;
padding-bottom: 7px; width: 700px;
}a {
color: #cc0000;
text-decoration: none;
a:hover {
text-decoration: underline;
ol {
list-style: disc;
margin-left: 30px;
ul li,
ol li {
margin: 5px 0;
}h1 {
color: #113847;
font-size: 33px;
font-weight: bold;
margin: 30px 0 15px 0;
padding-bottom: 7px;
width: 700px;
<h1 id="Apache IGNITE 2.0 Overview">Apache Ignite 2.0 Overview</h1>
Apache Ignite 2.0 incorporates significant as well as breakthrough changes some of the are described below.
<h2>Redesigned Off-Heap Memory Architecture</h2>
The whole memory architecture of the platform was redesigned from scratch.
In a nutshell, all the data and indexes are stored in a completely <a href="" target="_blank">new manageable off-heap memory</a>
that has no issues with memory fragmentation, accelerates SQL Grid significantly and helps your application tolerate Java GC
pauses easily. The architecture allows integrating easily with SSD and Flash drives.
<h2>Data Definition Language</h2>
The release <a href="" target="_blank">introduces support</a>
for Data Definition Language (DDL) as a part of its SQL Grid functionality.
Now you can define and, what's more important, to alter indexes in runtime without a need to restart your cluster.
Apache Ignite users have been waiting for this feature for a long time and it's more exciting that they can leverage
from this by using standard SQL commands like CREATE or DROP index. More DDL commands will be supported in upcoming
<h2>Machine Learning Grid Beta</h2>
With Apache Ignite 2.0 you can check up project's own <a href="" target="_blank">distributed algebra implementation</a>.
The distributed algebra is the foundation for the whole component and pretty soon you can expect to get
distributed versions of widely used regression algorithms, decision trees and more.
<h2>Spring Data Integration</h2>
<a href="" target="_blank">Spring Data integration</a> allows interacting with an Apache Ignite cluster using well-known and highly adopted
Spring Data Framework. You can connect to the cluster by means of Spring Data repositories and start executing
distributed SQL queries as well as simple CRUD operations.
<h2>Rocket MQ Integration</h2>
Starting with Apache Ignite 2.0 you can easily stream data from <a href="" target="_blank">RocketMQ to an Apache Ignite cluster</a>.
<h2>Hibernate 5 Support</h2>
Hibernate L2 cache users have been anticipating support of Hibernate 5 on Apache Ignite side pretty long time.
Apache Ignite 2.0 fulfilled this demand.
<a href="" target="_blank">The integration</a> now supports Hibernate 5 and contains a number of bug fixes and improvements.
Ignite.NET now supports <a href="" target="_blank">dynamic type registration</a> and provides a
<a href="" target="_blank">plugin system</a> that allows 3rd parties to extend existing functionality.
Eventually, Ignite.C++ part of the community made up a way on how to execute arbitrary C++ code on remote cluster machines.
The approach was initially tested for continuous queries and now you can <a href="" target="_blank">register continuous queries' remote filters</a>
on any cluster node you like. Going forward you can expect support for Ignite.C++ compute grid and more.
<h1 id="Apache IGNITE 2.0">Full Set of Changes</h1>
<h2>New Features</h2>
<li>Implement index hints for SQL<a href=""> [#IGNITE-4594]</a>
<li>Support CREATE INDEX DDL statements<a href=""> [#IGNITE-4565]</a>
<li>RocketMQ data streamer<a href=""> [#IGNITE-4539]</a>
<li>Implement cluster ACTIVE/INACTIVE state<a href=""> [#IGNITE-4335]</a>
<h2>New Features .NET</h2>
<li>.NET: Dynamically registered classes must use binary serialization if possible<a href=""> [#IGNITE-2703]</a>
<li>.NET: Plugin system<a href=""> [#IGNITE-2940]</a>
<li>Move memory metrics to snapshots<a href=""> [#IGNITE-5072]</a>
<li>Default MemoryPolicy settings improvements<a href=""> [#IGNITE-5024]</a>
<li>Need to add an option to write all updates in write-behind store<a href=""> [#IGNITE-4933]</a>
<li>Create separate thread pool for services<a href=""> [#IGNITE-4802]</a>
<li>Inherit TransactionException and update Javadoc<a href=""> [#IGNITE-4795]</a>
<li>Better optimistic tx lock conflict client information<a href=""> [#IGNITE-4710]</a>
<li>Refresh client attributes during reconnect<a href=""> [#IGNITE-4641]</a>
<li>ScanQuery shows poor performance<a href=""> [#IGNITE-4624]</a>
<li>Write IgniteUuid with BinaryMarshaller<a href=""> [#IGNITE-4611]</a>
<li>Use BinaryArrayIdentityResolver by default<a href=""> [#IGNITE-4558]</a>
<li>BinaryObjectImpl: lack of context information upon deserialization<a href=""> [#IGNITE-4538]</a>
<li>Allow distributed SQL query execution over explicit set of partitions<a href=""> [#IGNITE-4523]</a>
<li>Set QueryIndexType.SORTED by default for an index <a href=""> [#IGNITE-4511]</a>
<li>Add MBean for StripedExecutor<a href=""> [#IGNITE-4492]</a>
<li>Call commit for read-only transactions<a href=""> [#IGNITE-4484]</a>
<li>ODBC: Add support for logger configuration<a href=""> [#IGNITE-4470]</a>
<li>Make sure data structures do not use outTx call<a href=""> [#IGNITE-4437]</a>
<li>Exchange binary metadata with discovery custom messages instead of system cache<a href=""> [#IGNITE-4302]</a>
<li>Update Spring dependency to latest stable version<a href=""> [#IGNITE-4211]</a>
<li>Use discovery custom messages instead of marshaller cache<a href=""> [#IGNITE-4157]</a>
<li>JDBC driver should always set withKeepBinary flag when querying cache<a href=""> [#IGNITE-4141]</a>
<li>Add an option to serialize specific type(s) with OptimizedMarshaller when binary format is used<a href=""> [#IGNITE-3904]</a>
<li>Improve Enum fields handling in SQL<a href=""> [#IGNITE-3595]</a>
<li>Set copyOnRead property to FALSE for marshaller cache<a href=""> [#IGNITE-3569]</a>
<li>Prohibit null as name in all the components (cache name first of all)<a href=""> [#IGNITE-3488]</a>
<li>_key and _val fields should be excluded from 'select * from' queries<a href=""> [#IGNITE-3487]</a>
<li>Rename IgniteConfiguration.gridName<a href=""> [#IGNITE-3207]</a>
<li>Binary marshaller: sort fields alphabetically<a href=""> [#IGNITE-2626]</a>
<li>NearCacheConfiguration should not extend MutableConfiguration<a href=""> [#IGNITE-2558]</a>
<h2>Improvements .NET</h2>
<li>.NET: CacheConfiguration.WriteBehindCoalescing<a href=""> [#IGNITE-5043]</a>
<li>.NET: Add partition loss APIs<a href=""> [#IGNITE-5031]</a>
<li>.NET: IgniteConfiguration.MemoryConfiguration<a href=""> [#IGNITE-5023]</a>
<li>.NET: QueryEntity.TableName<a href=""> [#IGNITE-4870]</a>
<li>.NET: StopAll on AppDomain unload<a href=""> [#IGNITE-4856]</a>
<li>.NET: Support complex type dictionaries in app.config configuration<a href=""> [#IGNITE-4846]</a>
<li>.NET: Add IgniteUuid system type support<a href=""> [#IGNITE-4716]</a>
<li>.NET: Add ClassName and Message to JavaException<a href=""> [#IGNITE-4692]</a>
<li>.NET: Sort binary object fields<a href=""> [#IGNITE-4669]</a>
<li>.NET: Rename IgniteConfiguration.gridName<a href=""> [#IGNITE-4576]</a>
<li>.NET: Expose default concurrency and isolation on ITransactions<a href=""> [#IGNITE-4504]</a>
<li>.NET: Optimize ExamplesTest.TestRemoteNodes<a href=""> [#IGNITE-4494]</a>
<li>.NET: Provide default-config-dotnet.xml<a href=""> [#IGNITE-4410]</a>
<li>.NET: Support BinaryFieldsIdentityResolver<a href=""> [#IGNITE-4397]</a>
<li>.NET: Use BinaryArrayIdentityResolver by default<a href=""> [#IGNITE-4351]</a>
<li>.NET: EventType.SwapspaceAll inconsistent naming<a href=""> [#IGNITE-4217]</a>
<li>.NET: Generic ICacheStore methods<a href=""> [#IGNITE-4102]</a>
<li>.NET: Throw an exception when user tries to run SQL over [Serializable] types<a href=""> [#IGNITE-3734]</a>
<li>.NET: Remove IgniteProxy<a href=""> [#IGNITE-3689]</a>
<li>.NET: Inconsistent namespace imports in examples<a href=""> [#IGNITE-3604]</a>
<li>.NET: Rename ILifecycleBean<a href=""> [#IGNITE-3548]</a>
<li>.NET: Review access modifiers<a href=""> [#IGNITE-3540]</a>
<li>.NET: Remove deprecated code<a href=""> [#IGNITE-3539]</a>
<li>.NET: Review namespace structure<a href=""> [#IGNITE-3510]</a>
<li>.NET: Fix ContinuousQuery, QueryBase, and SqlFieldsQuery class constants<a href=""> [#IGNITE-3506]</a>
<li>.NET: Remove "Default" prefix from BinaryConfiguration properties<a href=""> [#IGNITE-3503]</a>
<li>.NET: Write Serializable as binary<a href=""> [#IGNITE-2825]</a>
<li>.NET: Native object comparison<a href=""> [#IGNITE-2578]</a>
<li>NPE during deadlock detection because cache isn't started on node<a href=""> [#IGNITE-5041]</a>
<li>Timeout in ignite-cassandra SessionPool is not configurable<a href=""> [#IGNITE-4954]</a>
<li>Web session clustering fails to work with Spring Security<a href=""> [#IGNITE-4948]</a>
<li>LocalDeploymentSpi resources cleanup on spi.register() might clean resources from other tasks using delegating classloader<a href=""> [#IGNITE-4920]</a>
<li>Excessive service instances can be started with dynamic deployment<a href=""> [#IGNITE-4907]</a>
<li>ClassCastException in DML benchmarks<a href=""> [#IGNITE-4905]</a>
<li>OptimizedMarshaller should not failed on GridClientNodeBean serialization<a href=""> [#IGNITE-4896]</a>
<li>Key is deserialized during transactional get() even if withKeepBinary is set<a href=""> [#IGNITE-4891]</a>
<li>VisorServiceTask should properly handle ClassNotFound exceptions<a href=""> [#IGNITE-4886]</a>
<li>System pool starvation while partition evicting<a href=""> [#IGNITE-4879]</a>
<li>Log4jLogger can change RootLogger logging level unexpectedly<a href=""> [#IGNITE-4863]</a>
<li>NPE on execution of unknown internal task by name<a href=""> [#IGNITE-4838]</a>
<li>Service is deployed on client when service configuration is provided on startup<a href=""> [#IGNITE-4832]</a>
<li>SQL: Eviction to swap failed if segmented index is used<a href=""> [#IGNITE-4826]</a>
<li>Ignite map-reduce engine should set MRJobConfig.TASK_ATTEMPT_ID<a href=""> [#IGNITE-4813]</a>
<li>Disable EventStorageSpi by default<a href=""> [#IGNITE-4812]</a>
<li>ServiceProcessor hangs while stopping on unstable topology<a href=""> [#IGNITE-4761]</a>
<li>Print a warning when option 'ignite.job.shared.classloader' is on<a href=""> [#IGNITE-4755]</a>
<li>Service could be deployed/undeployed twice on concurrent cancel and discovery event<a href=""> [#IGNITE-4740]</a>
<li>FairAffinityFunction fails on node restart with backupFilter set and no backups<a href=""> [#IGNITE-4671]</a>
<li>Throw exception on starting client cache when indexed types cannot be loaded<a href=""> [#IGNITE-4667]</a>
<li>Value from IgniteQueue in atomic mode could be lost<a href=""> [#IGNITE-4644]</a>
<li>Possible starvation during rebalancing for marshaller cache<a href=""> [#IGNITE-4589]</a>
<li>Optimize GridDhtLocalPartition.rmvQueue<a href=""> [#IGNITE-4552]</a>
<li>Near reader is not created when value is loaded from store<a href=""> [#IGNITE-4525]</a>
<li>CacheQueryExample and CacheClientBinaryQueryExample print class name and hash instead of smth meaningful<a href=""> [#IGNITE-4508]</a>
<li>TcpDiscoverySpi is not reliable in some network split scenarios<a href=""> [#IGNITE-4499]</a>
<li>ODBC: Add missing diagnostic records in case of API errors<a href=""> [#IGNITE-4493]</a>
<li>ODBC: First query execution takes much more time than any subsequent<a href=""> [#IGNITE-4488]</a>
<li>Client should re-try connection attempt in case of concurrent network failure<a href=""> [#IGNITE-4473]</a>
<li>ODBC: Can not retrieve table metadata<a href=""> [#IGNITE-4471]</a>
<li>JclLogger ignores IGNITE_QUIET system property<a href=""> [#IGNITE-4464]</a>
<li>Web console: Implement configuration of affinity function in cache configuration<a href=""> [#IGNITE-4442]</a>
<li>REPLICATED cache isn't synced across nodes<a href=""> [#IGNITE-4424]</a>
<li>ODBC: SQLFetch fails if result set contains non-primitive column<a href=""> [#IGNITE-4421]</a>
<li>Web console: Failed to edit File system checkpoint spi paths<a href=""> [#IGNITE-4396]</a>
<li>Incorrect Karaf OSGI feature for ignite-rest-http<a href=""> [#IGNITE-4387]</a>
<li>Hadoop tests affect each other through IgniteHadoopClientProtocolProvider#cliMap<a href=""> [#IGNITE-4386]</a>
<li>SQL: Failed to run reduce query locally with a valid query<a href=""> [#IGNITE-4376]</a>
<li>Inner properties mutation broken in SQL UPDATE<a href=""> [#IGNITE-4363]</a>
<li>DML: BinaryObjectBuilder does not sort fields in some cases<a href=""> [#IGNITE-4354]</a>
<li>Failed second client node join with continuous query and peer class loading enabled<a href=""> [#IGNITE-4284]</a>
<li>SSL misconfiguration is not handled properly<a href=""> [#IGNITE-4147]</a>
<li>Assertion in ClientImpl.updateMetrics()<a href=""> [#IGNITE-4142]</a>
<li>Client is stopped if communication to servers is lost during (re)connect routine<a href=""> [#IGNITE-4112]</a>
<li>BinaryType.isEnum() throws an exception if typeId==0<a href=""> [#IGNITE-4109]</a>
<li>BinaryType.fieldNames() should return names in consistent order<a href=""> [#IGNITE-4063]</a>
<li>Incorrect errors/warnings while odbc driver installation<a href=""> [#IGNITE-4002]</a>
<li>Hadoop: automatically add ${HADOOP_HOME}/lib/native to java.library.path system property<a href=""> [#IGNITE-3966]</a>
<li>IgniteCache.invokeAll returns empty result set in ATOMIC cache<a href=""> [#IGNITE-3955]</a>
<li>Web Console: Summary page - Download button should show progress of downloading<a href=""> [#IGNITE-3923]</a>
<li>Clarify if IgfsFile -> FileStatus conversion should treat groupBlockSize as blockSize<a href=""> [#IGNITE-3877]</a>
<li>CreatedExpiryPolicy doesn't work if entry is loaded from store<a href=""> [#IGNITE-3699]</a>
<li>CPP: JVM crash on "Failed to start SPI" exception<a href=""> [#IGNITE-3514]</a>
<li>IGFS: Does not correctly deallocate free space in courner case<a href=""> [#IGNITE-3400]</a>
<li>Reentrant lock is lost when lock owner leaves topology<a href=""> [#IGNITE-3386]</a>
<li>Marshaling works wrong for the BigDecimals that have negative scale<a href=""> [#IGNITE-3196]</a>
<li>Hadoop module cannot load native libraries when running inside HDP 2.3.4<a href=""> [#IGNITE-3085]</a>
<li>NearCacheConfiguration incorrectly extends MutableConfiguration<a href=""> [#IGNITE-3081]</a>
<li>Eviction policy must consider either max size or max entries count<a href=""> [#IGNITE-2552]</a>
<li>'Put' cache event treats entry created at lock acquisition time as old value<a href=""> [#IGNITE-2231]</a>
<li>IgniteCacheProxy is not serialized properly<a href=""> [#IGNITE-2194]</a>
<li>IgniteSemaphore's failover related tests lead to the deadlock or fail<a href=""> [#IGNITE-1977]</a>
<li>[Test] IgniteProjectionStartStopRestartSelfTest.testStopNodesByIdsC fails<a href=""> [#IGNITE-1725]</a>
<li>[Test] IgniteProjectionStartStopRestartSelfTest.testStartOneNode fails<a href=""> [#IGNITE-1724]</a>
<li>Cache SQL query metadata index's fields have wrong register<a href=""> [#IGNITE-1495]</a>
<li>Provide integration with Spring Data<a href=""> [#IGNITE-1192]</a>
<li>NPE in GridCacheProcessor.onKernalStop()<a href=""> [#IGNITE-1178]</a>
<li>Need to automatically support LocalDateTime class in indexing<a href=""> [#IGNITE-1072]</a>
<li>Failed to start node if 'textFields' in 'CacheTypeMetadata' contains non String value (Integer in my case)<a href=""> [#IGNITE-969]</a>
<li>TTL is not updated for reader when entry is accessed on backup<a href=""> [#IGNITE-518]</a>
<h2>Fixed .NET</h2>
<li>.NET: Continuous query fails with exception on Java side<a href=""> [#IGNITE-5066]</a>
<li>.NET: build.ps1 fails for Any CPU config on PowerShell 4.0 and lower<a href=""> [#IGNITE-5057]</a>
<li>.NET: SQL does not work with F# record types<a href=""> [#IGNITE-5006]</a>
<li>.NET: StartFromApplicationConfiguration does not work in ASP.NET<a href=""> [#IGNITE-4902]</a>
<li>.NET: Meaningless exception on generic type in BinaryConfiguration<a href=""> [#IGNITE-4885]</a>
<li>.NET: Contains fails in LINQ when subquery comes from a variable<a href=""> [#IGNITE-4817]</a>
<li>.NET: Binary enums are handled incorrectly<a href=""> [#IGNITE-4592]</a>
<li>.NET: BinaryConfiguration handles nested type names incorrectly<a href=""> [#IGNITE-4546]</a>
<li>.NET: SqlQuery with DateTime arguments does not work<a href=""> [#IGNITE-4413]</a>
<li>.NET: NLogLoggerTest is not thread safe<a href=""> [#IGNITE-4412]</a>
<li>.NET: LINQ requires IQueryable in joins<a href=""> [#IGNITE-4385]</a>
<li>.NET: Java and .NET nodes with default configs can not join<a href=""> [#IGNITE-3267]</a>