Apache Ignite Release Notes
===========================

Apache Ignite In-Memory Database and Caching Platform 2.7
---------------------------------------------------------

Ignite:
* Added experimental support for multi-version concurrency control with snapshot isolation
  - available for both cache API and SQL
  - use CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT to enable it
  - not production ready, data consistency is not guaranteed in case of node failures
* Implemented Transparent Data Encryption based on JKS certificates
* Implemented Node.JS Thin Client
* Implemented Python Thin Client
* Implemented PHP Thin Client
* Ignite start scripts now support Java 9 and higher
* Added ability to set WAL history size in bytes
* Added SslContextFactory.protocols and SslContextFactory.cipherSuites properties to control which SSL encryption algorithms can be used
* Added JCache 1.1 compliance
* Added IgniteCompute.withNoResultCache method with semantics similar to ComputeTaskNoResultCache annotation
* Spring Data 2.0 is now supported in the separate module 'ignite-spring-data_2.0'
* Added monitoring of critical system workers
* Added ability to provide custom implementations of ExceptionListener for JmsStreamer
* Ignite KafkaStreamer was upgraded to use new KafkaConsmer configuration
* S3 IP Finder now supports subfolder usage instead of bucket root
* Improved dynamic cache start speed
* Improved checkpoint performance by decreasing mark duration.
* Added ability to manage compression level for compressed WAL archives.
* Added metrics for Entry Processor invocations.
* Added JMX metrics: ClusterMetricsMXBean.getTotalBaselineNodes and ClusterMetricsMXBean.getActiveBaselineNodes
* Node uptime metric now includes days count
* Exposed info about thin client connections through JMX
* Introduced new system property IGNITE_REUSE_MEMORY_ON_DEACTIVATE to enable reuse of allocated memory on node deactivation (disabled by default)
* Optimistic transaction now will be properly rolled back if waiting too long for a new topology on remap
* ScanQuery with setLocal flag now checks if the partition is actually present on local node
* Improved cluster behaviour when a left node does not cause partition affinity assignment changes
* Interrupting user thread during partition initialization will no longer cause node to stop
* Fixed problem when partition lost event was not triggered if multiple nodes left cluster
* Fixed massive node drop from the cluster on temporary network issues
* Fixed service redeployment on cluster reactivation
* Fixed client node stability under ZooKeeper discovery
* Massive performance and stability improvements

Ignite .Net:
* Add .NET Core 2.1 support
* Added thin client connection failover

Ignite C++:
* Implemented Thin Client with base cache operations
* Implemented smart affinity routing for Thin Client to send requests directly to nodes containing data when possible
* Added Clang compiler support

SQL:
* Added experimental support for fully ACID transactional SQL with the snapshot isolation:
  - use CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT to enable it
  - a transaction can be started through native API (IgniteTransactions), thin JDBC driver or ODBC driver
  - not production ready, data consistency is not guaranteed in case of node failures
* Added a set of system views located in "IGNITE" schema to view cluster information (NODES, NODE_ATTRIBUTES, NODE_METRICS, BASELINE_NODES)
* Added ability to create predefined SQL schemas
* Added GROUP_CONCAT function support
* Added string length constraint
* Custom Java objects are now inlined into primary and secondary indexes what may significantly improve performance when AFFINITY_KEY is used
* Added timeout to fail query execution in case it cannot be mapped to topology
* Restricted number of cores allocated for CREATE INDEX by default to 4 to avoid contention on index tree Fixed transaction hanging during runtime error on commit.
* Fixed possible memory leak when result set size is multiple of the page size
* Fixed situation when data may be returned from cache partitions in LOST state even when PartitionLossPolicy doesn't permit it
* Fixed "Caches have distinct sets of data nodes" during SQL JOIN query execution between REPLICATED and PARTITIONED caches
* Fixed wrong result for SQL queries when item size exceeds the page size
* Fixed error during SQL query from client node with the local flag set to "true"
* Fixed handling UUID as a column type

JDBC:
* Implemented DataSource interface for the thin driver

ODBC:
* Added streaming mode support
* Fixed crash in Linux when there are more than 1023 open file descriptors
* Fixed bug that prevented cursors on a server from being closed
* Fixed segmentation fault when reusing a closed connection

Web Console:
* Added new metrics: WAL and Data size on disk
* Added support for "collocated" query mode on Query screen
* Added support for Java 9+ for Web Agent.
* Added ability to show/hide password field value
* Implemented execution of selected part of SQL query
* Implemented explain of the selected part of SQL query
* Implemented connection to a secured cluster
* Implemented responsive full-screen layout
* Split "Sign In" page to three separate pages
* UI updated to modern look and feel
* Improved backend stability
* Fixed fail when working with web sockets

REST:
* Added option IGNITE_REST_GETALL_AS_ARRAY for array format in "getAll" call

Visor:
* Added output of node "Consistent ID"
* Visor now collects information about cache groups instead of separate caches to reduce memory consumption
* Improved help for "start" command
* Fixed output of cache metrics

Control utility:
* Added information about transaction start time
* Added command to collect information about a distribution of partitions
* Added command to reset lost partitions
* Added support for empty label (control.sh --tx label null)
* Added atomicity mode to utility output.
* Added orphaned local and remote transactions and ability to rollback them
* Added "--dump" flag to dump current partition state to file.
* Renamed command argument '--force' to '--yes'
* Removed "initOrder" and "loc keys" from an info
* Fixed control utility hanging when connected to a joining node with PME

ML:
* Added TensorFlow integration
* Added Estimator API support to TensorFlow cluster on top of Apache Ignite
* Added ANN algorithm based on ACD concept
* Added Random Forest algorithm
* Added OneHotEncoder for categorical features
* Added model estimation
* Added K-fold cross-validation for ML models
* Added splitter for splitting the dataset into test and train subsets
* Added ability of filtering data during datasets creation
* Added encoding categorical features with One-of-K Encoder
* Added MinMax scaler preprocessor
* Added gradient boosting for trees
* Added indexing for decision trees
* Added GDB convergence by error support
* Added ability to build pipeline of data preprocessing and model training
* Added ability to start and maintain TensorFlow cluster on top of Apache Ignite
* Added support of Multi-Class for Logistic Regression
* Implemented distributed binary logistic regression

Dependency updates:
* Apache Camel updated to 2.22.0
* Apache Commons Beanutils updated to 1.9.3
* Apache Hadoop Yarn updated to 2.7.7
* Apache Kafka updated to 1.1.0
* Apache Lucene updated to 7.4.0
* Apache Mesos updated to 1.5.0
* Apache Tomcat updated to 9.0.10
* Apache Zookeeper updated to 3.4.13
* Guava updated to 25.1-jre
* Jackson Databind updated to 2.9.6
* Jackson 1 usages replaced with Jackson 2
* JCraft updated to 0.1.54
* H2 version updated to 1.4.197
* Log4j 2.x updated to 2.11.0
* Netty updated to 4.1.27.Final
* RocketMQ updated to 4.3.0
* Scala 2.10.x was updated to 2.10.7
* Scala 2.11.x updated to 2.11.12

Apache Ignite In-Memory Database and Caching Platform 2.6
---------------------------------------------------------
Ignite:
* Fixed incorrect calculation of client affinity assignment with baseline.
* Fixed incorrect calculation of switch segment record in WAL.
* Fixed JVM crush during in-progress eviction and cache group stop.

REST:
* Fixed serialization of BinaryObjects to JSON.

Apache Ignite In-Memory Database and Caching Platform 2.5
---------------------------------------------------------
Ignite:
* Implemented Zookeeper discovery SPI.
* Added Java thin client.
* Added continuous queries with transformers.
* Implemented general approach for critical failures handling.
* Added the new method IgniteMXBean.getCurrentCoordinatorFormatted() which displays formatted information about current coordiantor.
* Added partition update counters verification on partition map exchange.
* Added ability to disable WAL during initial data rebalancing.
* Added additional data storage metrics
* Added additional transactional metrics.
* Added DEB package and improved RPM package.
* Added information about fields serialization/deserialization errors in BinaryMarshaller.
* Added configurable automatic rollback timeout for pending transactions preventing partition map exchange to complete.
* Added preventing infinite iterations of corrupted B+Tree. New IGNITE_BPLUS_TREE_LOCK_RETRIES property was added, default value is Integer.MAX_VALUE.
* Implemented handling of broken segment in WAL compaction.
* Fixed affinity to always choose primary node from one of the owners when persistence is enabled.
* Partition eviction now does not block exchange.
* Fixed the issue that prevented rebalancing on a new baseline node join.
* Fixed potential deadlock during preloading.
* Fixed exception handling in IsolatedUpdater of DataStreamer.
* Fixed the issue when ComputeTaskFuture.get() threw a trimmed exception chain: now full exception chain is propagated to the caller; the exception thrown from IgniteCompute methods may now differ from the previous behavior.
* Fixed null value being passed to entry processor when such entry actually exists.
* Fixed problem when cluster could not survive after IgniteOutOfMemoryException.
* Fixed NullPointerException on batch atomic cache operations with cache store.
* Fixed bug with ScanQuery transformer which applies to the first result page only.
* Fixed hanging of node stopping in case when node is invalidated and persistence is enabled.
* BinaryMetadata exchange is triggered only if there are actual changes in BinaryMetadata.
* Fixed contention while executing parallel atomic single get operations.
* Fixed cache metadata corruption during concurrent checkpoint and cache destroy.
* Implemented additional synchronization for correct partition counters update on partition map exchange.
* Optimized checkpoint lock acquisition for demander thread.
* Destroyed caches with enabled persistence now will not survive grid restart.
* Nodes with incompatible SQL metadata will not be able to join grid. This fixes known case for index corruption.
* Fixed fillFactor memory metric value.
* Fixed bug with checkpoint buffer overflow with enabled throttling.
* Fixed crash recovery problem when index tree could reference to removed data pages.
* Fixed error during cluster initialization with partially acceptable WAL archive.
* Fixed issue with local partitions size changing inside checkpoint write lock.
* Fixed LOG_ONLY and BACKGROUND modes to be power-crash resistant.
* Fixed incorrect finishing of implicit transactions on unstable topology.
* Fixed incorrect mapping of smallint Cassandra type.
* Introduced log markers support to IgniteLogger and standard DEV_ONLY marker.
* Changed Log4J and Log4J2 adapters to update active logger configuration when configuration source file is modified.
* Fixed sqlline.sh script to use Java from JAVA_HOME.
* Improved Docker image build.
* Default and recommended JVM options are updated.

Ignite .Net:
* Added SSL configuration for node-to-node links.
* Added dynamic service proxies.
* Propagated query metrics to ICache.GetQueryMetrics() and ICache.ResetQueryMetrics().
* DML update via LINQ.
* Fixed hang caused by mishandled exception during custom cache store deserialization.
* Fixed GroupBy and Where issues in LINQ.
* .Net thin client SSL support.

Ignite C++:
* Fixed bug with LocalSize cache method.

SQL:
* Implemented COPY command for fast data load.
* Added support of authorization for CREATE TABLE and DROP TABLE commands.
* Improved deadlock handling in DML.
* Added IGNITE_SQL_FORCE_LAZY_RESULT_SET option to force all SQL queries on node using lazy result set.
* Fixed SQL query hang if cluster contains nodes not in baseline.

JDBC:
* Added SSL support.
* Added authentication.
* Added streaming mode to thin driver.
* Semicolon now can be used as delimiter for properties in URL string.
* Changed default socket buffer size to 64Kb in thin driver.
* Added FQDN to thin client in order to support multiple IPs for connection establishment.

ODBC:
* Added SSL support.
* Implemented username/password authentication.
* Added support of multiple addresses in connection string.
* Added support for SQL_ATTR_LOGIN_TIMEOUT.

Web Console:
* Added support for persistence in demo mode.
* Configuration screen is reworked to new modern design with improved usability.
* Implemented support for comma-separated list of node URIs.
* Fixed Docker file generation.
* Fixed code generation for large numbers in configuration params.
* Fixed demo for non-collocated joins.
* Fixed enum values decoding for SQL queries.
* Upgraded build to use Webpack 4.

REST:
* Added AUTHENTICATE command.
* Added support for new authentication API.
* Implemented possibility to get values from cache inserted via API or SQL.
* Enhanced GET_OR_CREATE_CACHE command with optional "templateName", "backups", "cacheGroup", "dataRegion" and "writeSynchronizationMode" options.
* Added support of Java built-in types (boolean, int, long, ..., UUID) for put/get operations.

Visor:
* Added "cache -slp" and "cache -rlp" commands to show and reset lost partitions for specified cache.
* Added scan queries of near cache support.

Control utility:
* Added utilities to control.sh script to display cache info.
* Added new tools (control.sh --tx, TransactionsMXBean) to view active transactions and ability to kill them .
* Added confirmation on dangerous operations.
* Fixed NullPointerException in case of empty base line and not active cluster.
* Fixed timeout on changing baseline in control.sh

ML:
* Implemented framework for genetic algorithms over Apache Ignite caches.
* Implemented LSQR-based linear regression.
* Implemented Linear SVM for binary classification.
* Implemented distributed version of SVM (support vector machine) algoritm.

Apache Ignite In-Memory Database and Caching Platform 2.4
---------------------------------------------------------
Ignite:
* Introduced Baseline Affinity Topology
* Ability to disable WAL for cache in runtime through IgniteCluster API or ALTER TABLE command
* Added ability to convert WAL to human-readable form
* Ability to enable/disable JDBC, ODBC and thin client endpoints
* Project moved to Java 8
* Java 7 is no longer supported
* Apache Ignite can be run on Java 9
* Introduced Apache Ignite packaging with RPM
* Spark Data Frames support
* Added integration with Spring 3.x
* Added handler to stop node when IO error is encountered
* EvictionPolicyFactory support added to CacheConfiguration
* Added JMX metrics for memory regions
* Added detailed memory consumption on start and OOM reporting
* Added custom thread pools monitoring
* Support Ignite MR in Kerberized environment without IGFS
* S3 IP finder: support server side encryption and bucket endpoint configuration
* Multiple fixes and performance optimizations

Ignite.NET:
* Thin Client initial release
* .NET Core / Linux / macOS support
* Mono platform support
* Removed C++ JNI layer

SQL:
* Added DEFAULT support to CREATE TABLE command
* Added ALTER TABLE DROP COLUMN support
* Added INLINE_SIZE option to CREATE INDEX command
* Added PARALLEL option to CREATE INDEX command
* Added optional on-heap row cache
* INSERT command now can be executed without explicit column names (INSERT INTO table VALUES ...)
* Allowed multiple caches to share the same schema
* Added support for Java 8 Date and Time API
* Added "notNull" property to QuerySqlField annotation
* Improved COUNT(*) performance
* Fixed a problem causing an exception in certain nodes do not have primary partitions for REPLICATED cache
* Fixed per-thread H2 connection leak.
* Fixed partition exchange hang due to SQL query running inside a transaction.

JDBC Driver:
* Optimized batched operations processing

ODBC Driver:
* Added support of multiple statements execution with one call
* Added support of SQL_ATTR_CONNECTION_TIMEOUT
* Added support of SQL_ATTR_QUERY_TIMEOUT
* Optimized batched operations processing
* Proper handling of ungraceful TCP disconnects (keep-alive connection)
* Fixed error preventing close of executed DML statement
* Fixed table names returned by SQLTables for DDL-created tables

Machine Learning:
* Implemented Fuzzy c-means algorithm
* Implemented gradient descent for OLS Linear Regression
* Implemented K nearest neighbor algorithm
* Introduced API for datasets
* Introduced API for ML model and trainers
* Introduced common mechanism for group training of models
* Added distributed version of multilayer perceptron
* Added local version of multilayer perceptron
* Added basic import/export functionality for ml models
* Added decision tree algorithm
* Performance optimizations for distributed operations

Web Console:
* Implemented component for cluster selection and activation
* Implemented support for multiple statements on Queries screen
* Implemented progress indication for 'execute', 'scan' and 'export' actions on Queries screen
* Added support for ClientConnectorConfiguration
* Added several SQL examples on Queries screen
* Added "Connected clusters" component in header
* Added support for custom SMTP server configuration
* Added detection of CSV separator based on browser locale
* Added "Copy to clipboard" action on Queries screen
* Added duration and node ID in results header and 'Show query' modal
* Improved support for binary JDBC types on import from RDBMS
* Fixed Web Console under IE11
* Fixed configuration generation for imported model in case of Oracle NUMBER(5) data type
* Fixed output of big numbers in SQL query results

Visor:
* Added "-quiet" flag for batch mode
* Added ability to start cache rebalance
* Added output of data region metrics to "node" command
* Added dialog to put/get/remove values to/from cache for simple key types
* Show valid message for caches when cluster is inactive
* Fixed 'cache -a' in case of node filter
* Fixed reading last command line in batch mode
* Updated eviction policy factory in configs

Apache Ignite In-Memory Database and Caching Platform 2.3
---------------------------------------------------------
Ignite:
* Ability to enable persistence per data region.
* Default page size is changed to 4KB.
* Ability to enable and disable rebalancing per-node.
* Added methods for batch services deployment.
* Introduced cache start/stop order on cluster activation.
* EstimatedRebalancingFinishTime and RebalancingStartTime metrics are exposed through MXBean interface.
* Ability to (de)activate cluster via http-rest API.
* Added Ignite update notifier.
* Updated Lucene dependency to version 5.5.2.
* Added an option to disable MBeans.
* Added sorted and multithreaded checkpoint modes.
* Added calculation of fill factor memory metric in persistent mode.
* Added estimated time for rebalance start and completion to cache metrics.
* Added API to add binary metadata locally.
* Added write throttling during an ongoing checkpoint to avoid zero performance drops.
* Ability to convert WAL to human-redable form.
* Ability to handle CacheObject from DataRecord in standalone WAL iterator.
* Support for uninterruptable writes using AsyncFileIOFactory; enabled with -DIGNITE_USE_ASYNC_FILE_IO_FACTORY=true.
* Enhanced persistent store path resolving to not rely on automatically generated consistent ID.
* Pre-configure local event listeners with IgniteConfiguration.LocalEventListeners.
* Massive performance and stability improvements.

Ignite.NET:
* LINQ: Local collections joins support.
* LINQ: Regex support.

Ignite CPP:
* Added Compute::Broadcast method.
* Added Ignite::SetActive method.

SQL:
* Added sqlline utility to the build.
* CREATE TABLE: Added NOT NULL support.
* CREATE TABLE: Ability to specify cache, key type and value type names.
* CREATE TABLE: Added "WRAP_KEY" and "WRAP_VALUE" options to CREATE TABLE command.
* CREATE TABLE: Added DATA_REGION option.
* CREATE TABLE: Added WRITE_SYNCHRONIZATION_MODE option.
* ALTER TABLE: ADD COLUMN support.
* Added lazy query execution mode (SqlFieldsQuery.setLazy).
* Added QuerySqlField.inlineSize property.
* Added FieldsQueryCursor interface to get fields metadata for SqlFieldsQuery.
* Added QueryEntity(Class keyClass, Class valueClass) constructor.
* Improved LocalDate, LocalTime and LocalDateTime support for Java 8.
* Optimized memory consumption during query execution.
* Fixed BigInteger data type handling.

JDBC Driver:
* Batch update support.
* SQLSTATE error codes support.
* Added "enforceJoinOrder" flag to connection string.
* Added "skipReducerOnUpdate" flag.
* Thin driver: Allowed execution of multiple SQL statements in one command.
* Thin driver: Added metadata support.
* Thin driver: Added type conversions in accordance with specification.
* Thin driver: Added schema to connection string.
* Thin driver: Added Statement.closeOnCompletion() support.
* Appended UUID to thick driver's Ignite instance name to avoid collision with user-created instances.
* Fixed a bug in PreparedStatement not clearing query parameters after execution.

ODBC Driver:
* SQLSTATE error codes support.
* Support for BINARY and VARBINARY types.
* DML statement batching.
* SQL_ATTR_CONNECTION_DEAD connection attribute.
* SQLGetInfo for info types.
* Added "skipReducerOnUpdate" flag.
* SQLRowCount now returns number of affected rows for non-batch queries.
* SQLBindParameter do not unbind parameter if the ParameterValuePtr is NULL anymore.
* Fixed error on cursor closing before all the rows from the result fetched.

Machine Learning:
* Implemented K-means clustering algorithm optimized for distributed storages.
* Introduced sparse block distributed matrix.
* Initial BLAS implementation.
* Integration with BLAS via netlib.
* Added getRow() and getCol() methods to Matrix API.

Web Console:
* Improved DDL support.
* Added PK alias generation on Models screen.
* Added generation of QueryEntity.keyFields on model import from RDBMS.
* Added sanitize user on save.
* Added charts with throughput and latency metrics for cache operations.
* Added version to footer.
* Added "Lazy ResultSet" flag on Queries screen.
* Implemented refresh rate for Monitoring screen.
* Implemented cluster nodes log viewer.

Visor:
* Ability to keep connection opened in batch mode.
* Ability to activate/deactivate cluster.
* Improved cache statistics.
* Added missing configuration properties to "config" command.
* Fixed script execution after alert throttling interval.

Apache Ignite In-Memory Database and Caching Platform 2.2
---------------------------------------------------------
Ignite:
* Checkpointing algorithm optimized
* Default max memory size changed from 80% to 20%

Ignite CPP:
* Now possible to start node with persistent store
* Ignite.setActive method added to C++ API

Apache Ignite In-Memory Database and Caching Platform 2.1
---------------------------------------------------------
Ignite:
* Persistent cache store
* Added IgniteFuture.listenAsync() and IgniteFuture.chainAsync() mehtods
* Deprecated IgniteConfiguration.marshaller
* Updated Lucene dependency to version 5.5.2
* Machine learning: implemented K-means clusterization algorithm optimized for distributed storages
* SQL: CREATE TABLE and DROP TABLE commands support
* SQL: New thin JDBC driver
* SQL: Improved performance of certain queries, when affinity node can be calculated in advance
* SQL: Fixed return type of AVG() function
* SQL: BLOB type support added to thick JDBC driver
* SQL: Improved LocalDate, LocalTime and LocalDateTime support for Java 8
* SQL: Added FieldsQueryCursor interface to get fields metadata for SqlFieldsQuery
* ODBC: Implemented DML statement batching
* Massive performance and stability improvements

Ignite.NET:
* Automatic remote assembly loading
* NuGet-based standalone node deployment
* Added conditional data removeal via LINQ DeleteAll
* Added TimestampAttribute to control DateTime serialization mode
* Added local collections joins support to LINQ.

Ignite CPP:
* Added Compute::Call and Compute::Broadcast methods

Web Console:
* Implemented support for UNIQUE indexes for key fields on import model from RDBMS
* Added option to show full stack trace on Queries screen
* Added PK alias generation on Models screen.

Apache Ignite In-Memory Database and Caching Platform 2.0
---------------------------------------------------------
Ignite:
* Introduced new page memory architecture
* Machine Learning beta: distributed algebra support for dense and sparse data sets
* Reworked and simplified API for asynchronous operations
* Custom thread pool executors for compute tasks
* Removed CLOCK mode in ATOMIC cache
* Deprecated schema-import utility in favor of Web Console
* Integration with Spring Data
* Integration with Hibernate 5
* Integration with RocketMQ
* Integration with ZeroMQ
* SQL: CREATE INDEX and DROP INDEX commands
* SQL: Ability to execute queries over specific set of partitions
* SQL: Improved REPLICATED cache support
* SQL: Updated H2 version to 1.4.195
* SQL: Improved performance of MIN/MAX aggregate functions
* ODBC: Added Time data type support
* Massive performance improvements

Ignite.NET:
* Custom plugin API
* Generic cache store
* Binary types now can be registered dynamically
* LINQ: join, "contains" and DateTime property support

Ignite CPP:
* Implemented Cache::Invoke
* Added remote filters support to continuous queries

Web Console:
* Multi-cluster support
* Possibility to configure Kubernetes IP finder
* EnforceJoinOrder option on Queries screen

Apache Ignite In-Memory Database and Caching Platform 1.9
---------------------------------------------------------
Ignite:
* Added Data streamer mode for DML
* Added Discovery SPI Implementation for Ignite Kubernetes Pods
* SQL: Query can utilize multiple threads
* SQL: Improved distributed SQL support
* Benchmarking simplified and automated
* Fixed licenses generation during build
* ignite-spark module upgraded to Spark 2.0

Ignite.NET:
* DML support
* TransactionScope API for Ignite transactions support

Ignite CPP:
* DML support
* Implemented LoadCache
* ContinuousQuery support

Apache Ignite In-Memory Database and Caching Platform 1.8
---------------------------------------------------------
Ignite:
* SQL: Added DML operations support (INSERT, UPDATE, DELETE, MERGE)
* SQL: Improved DISTINCT keyword handling in aggregates
* Hadoop: Added MapR distribution support
* Visor: Improved SQL statistics
* Added Redis protocol support
* Added transactions deadlock detection
* Many stability and fault-tolerance fixes

Ignite.NET:
* ASP.NET session state store provider
* Entity Framework second level cache
* Custom loggers support: NLog, Apache log4Net

ODBC driver:
* Added DML operations support
* Added distributed joins support
* Added DSN support
* Performance improvements

Apache Ignite In-Memory Database and Caching Platform 1.7
---------------------------------------------------------
Ignite:
* Added distributed SQL JOIN.
* Node can be assigned as primary only after preloading is finished.
* Fixed CountDownLatch re-create issue.
* ODBC: Added decimal type support.
* Visor: Fixed data nodes calculation when node filter is set for cache.
* Many stability and fault-tolerance fixes.

Ignite.NET:
* Added ASP.NET Output Cache provider.
* Added ability to use .NET configuration in Apache.Ignite.exe.
* Added ability to implement custom affinity functions.
* Fixed a bug in IBinaryObjectBuilder causing type name to be lost.

Ignite CPP:
* Marshalling performance improvements.

Apache Ignite In-Memory Database and Caching Platform 1.6
---------------------------------------------------------
Ignite .NET:
* Added LINQ Provider for cache SQL queries
* Added native configuration mechanism (C#, app.config, web.config - instead of Spring XML)
* Added NuGet distribution
* Added AtomicSequence and AtomicReference data structures
* Binaries are now AnyCPU (instead of separate x64/x86)
* Java-based services can be called the same way as .NET service are called
* Added java-based continuous query filters
* Added automatic Java detection: no need for JAVA_HOME
* Added ability to use Java-based remote filters in continuous queries.

Ignite C++:
* Added Transactions API for C++ client.
* Added Date and Timestamp types implementation for C++ client.
* Simplified Autotools build process for C++ client.

Ignite:
* Added ability to get partition 'updateCntr' with continuous query public API.
* Added asynchronous execution of ContinuousQuery's remote filter and local listener.
* Added backup partitions storing to local store default behavior.
* Added cache deadlock detection.
* Added Cache Store implementation backed by Cassandra DB.
* Added method to get versioned cache entry.
* Added ODBC driver for Ignite.
* Added support for join timeout while registering local addresses with IP finder in TcpDiscoverySpi.
* Added support for JTA transactions via synchronization callback.
* Added Web Console for Ignite.
* Fixed a bug causing object deserialization when local store is configured for cache.
* Fixed a problem with incorrect classloader picked in OSGI environment.
* Fixed a race condition when evicted offheap data was not delivered to query engine leading to query timeout.
* Fixed an issue in ContinuousQueries that caused missing of notifications.
* Fixed background cache partition map exchange not to flood network.
* Fixed BinaryContext to honor custom loader set through IgniteConfiguration.
* Fixed BinaryObjectOffHeapImpl leak to public code.
* Fixed cluster stability with 500+ clients.
* Fixed continuous queries to send filter factory instead of filter.
* Fixed continuous query deployment in case originating node has left.
* Fixed issues with continuous query.
* Fixed deadlock in services deployment when Spring is used.
* Fixed discovery and node start procedure issues that may cause slowdowns during larger topologies start (>100 nodes).
* Fixed eviction policy notification if swap or off heap is enabled and an entry is not loaded during preloading.
* Fixed excessive thread stack usage in case of high contention on cache entries.
* Fixed execution of Splunk MapReduce jobs on top of Ignite MR.
* Fixed GridClosureProcessor internal closures to be deserialized by BinaryMarshaller.
* Fixed issue with AWS dependencies.
* Fixed java proxies deserialization with optimized marshaller.
* Fixed local store behavior at cross cache transactions.
* Fixed marshalling of Java collection and maps for BinaryMarshaller.
* Fixed memory leak in IgniteH2Indexing.
* Fixed NPE during rebalancing.
* Fixed NPE in GridMergeIndex.
* Fixed OOME when OFFHEAP_TIERED mode is used.
* Fixed potential thread starvation during cache rebalancing.
* Fixed race condition on load cache on changing topology.
* Fixed race in marshalling logic that could arise when several nodes are running on the same host.
* Fixed redeployment issues happened with ScanQueries filters.
* Fixed service proxy not to make remote call for methods declared in java.lang.Object.
* Fixed several ClassNotFoundException in OSGi environment.
* Fixed SKIP_STORE flag behavior for transaction entry.
* Fixed support for classes with equal simple name for binary marshaller.
* Fixed system caches not to use user-defined TransactionConfiguration.
* Fixed the issue when CacheStore was updated even if EntryProcessor didn't update an entry.
* Fixed thread safety for TcpDiscoveryMulticastIpFinder.
* Fixed unintentional deserialization of BinaryObjects in OFFHEAP mode with peer class loading enabled.
* Fixed UTF-16 surrogate pairs marshalling.
* Fixed value copying in entry processor with OptimizedMarshaller.
* Fixed web session clustering with WebLogic.
* Hadoop: fixed a bug causing exception during MR planning when input split file doesn't exist.
* IGFS: Added configuration flag to disable default path modes under "/ignite" folder.
* IGFS: Added pluggable factory interface for Hadoop FileSystem creation.
* IGFS: Fixed file properties when running over secondary file system.
* IGFS: Fixed issues with Kerberized HDFS.
* IGFS: Massive performance and stability fixes.
* Improved marshaller behavior during cluster topology change.
* Mesos integration: added possibility to load Ignite package from file system.
* Optimized cache 'get' operations on affinity node.
* Optimized memory usage on server nodes to allow more client connections.
* Passed update notifier flag to discovery data to be sure that all cluster nodes have the same notifier status as the first node.
* Performance optimization for transactions that do not acquire locks.
* ScanQueries over local partitions performance optimisation.
* Support of package-private implementations for Ignite Services.
* Supported Ignite Compute tasks cancellation for Ignite.NET.
* Visor CMD: Added ability to attach custom scripts to alerts.
* Web sessions: minor fix to prevent NullPointerException in some special case.
* Web sessions: user session classes are no longer needed on server nodes.
* A lot of stability and fault-tolerance fixes.

Apache Ignite In-Memory Database and Caching Platform 1.5
---------------------------------------------------------
* Ignite.NET: Initial Release.
* Ignite C++: Initial Release.
* Massive performance improvements for cache operations and SQL.
* Added new binary cache object marshalling implementation.
* Added IgniteSemaphore data structure.
* Added MQTT Streamer.
* Added Twitter Streamer.
* Added Ignite Sink (integration with Apache Flume).
* Added Apache Camel Streamer.
* Added OSGi support.
* Fixed optimistic serializable transactions: implemented "deadlock-free" locking algorithm.
* Fixed failover for continuous queries.
* Fixed compilation and runtime errors under OpenJDK and IBM JDK.
* Fixed Integer.size limitation for cache.
* Fixed and improved cache types configuration.
* Fixed cache rebalancing.
* Many stability and fault-tolerance fixes.
* Added example to demonstrate the usage of EntryProcessor.

Complete list of closed issues: https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20fixVersion%20%3D%201.5%20AND%20status%20%3D%20closed

Apache Ignite In-Memory Database and Caching Platform 1.4
---------------------------------------------------------
* Added SSL support to communication and discovery.
* Added support for log4j2.
* Added versioned entry to cache API.
* Added client node based JDBC driver implementation.
* Fixed consistency issue for custom events processing within discovery.
* Fixed race in cache swap/unswap logic.
* Fixed IGNITE_HOME resolution with JBoss.
* Fixed configuration file resolution on classpath.
* Fixed MBean registration for caches.
* Fixed near cache evictions with offheap.
* Fixed SQL queries group index logic.
* Fixed memory leak in partitioned transactional cache.
* Fixed auto-retries for cache operations in recoverable cases.
* Fixed affinity routing in compute grid.
* Many stability and fault-tolerance fixes.

Apache Ignite In-Memory Database and Caching Platform 1.3
---------------------------------------------------------

* Added auto-retries for cache operations in recoverable cases.
* Added integration with Apache YARN.
* Added auto detection and dropping of slow client nodes.
* Fixed several issues with JTA integration.
* Fixed several issues with Hibernate L2 cache.
* Fixed issue with GAR files in source release.
* Stability fixes for TCP discovery SPI.
* Stability fixes for onheap and offheap SQL queries.
* Bug fixes in In-Memory Accelerator For Apache Hadoop.
* Many stability and fault-tolerance fixes.

Apache Ignite In-Memory Database and Caching Platform 1.2
---------------------------------------------------------

* Added client mode to TCP discovery SPI.
* Added memory based evictions.
* Added integration with Apache Spark.
* Added integration with Apache Mesos.
* Added IgniteCache.getAllOutTx() method.
* Added serializable cache store factories for built-in stores.
* Bug fixes in In-Memory Accelerator For Apache Hadoop.
* Many stability and fault-tolerance fixes.

Apache Ignite In-Memory Database and Caching Platform 1.1
---------------------------------------------------------

* Added Google Compute Engine TCP discovery IP finder.
* Added generic cloud TCP discovery IP finder (based on jclouds).
* Added SortedEvictionPolicy.
* Added chaining for IgniteConfiguration and CacheConfiguration setters.
* Added AffinityUuid class for easier generation of unique collocated keys.
* Added support for cache configuration templates.
* Added support for (*) star notation in cache names.
* Added "collocated" mode for SQL queries.
* Improved expiry policy handling (TTL based evictions) to avoid thrashing.
* Fixed job continuations.
* Fixed compilation and runtime with OpenJDK 7 & 8
* Fixed SQL Union support
* Fixed Word-Count streaming example to produce better results.
* Removed edtFTPj scanner from URI deployment due to licensing issues.
* Made deployment scanners for URI-based deployment pluggable.
* Many stability and fault-tolerance fixes.

Apache Ignite In-Memory Database and Caching Platform 1.0
---------------------------------------------------------

* Simplified query API.
* Added automatic aggregation, grouping, and sorting support to SQL queries.
* Added dynamic caches, i.e. ability to start and stop caches during runtime.
* Changed IgniteDataLoader to IgniteDataStreamer.
* Added automatic transformation support to streaming.
* Removed old streaming APIs in favor of new IgniteDataStreamer.
* Added many examples using Java8 lambdas and streams.
* Added new streaming examples based on new streaming and SQL querying APIs.
* Added automatic schema-import demo under examples.
* Improved javadoc documentation.
* Added ability to automatically exclude LGPL optional dependencies during build.


Apache Ignite In-Memory Database and Caching Platform 1.0 RC3
-------------------------------------------------------------

This is the first release of Apache Ignite project. The source code in large part is based
on the 7 year old GridGain In-Memory Database and Caching Platform, open source edition, v. 6.6.2, which was
donated to Apache Software Foundation in September 2014.

The main feature set of Ignite In-Memory Database and Caching Platform includes:
* Advanced Clustering
* Compute Grid
* Data Grid
* Service Grid
* IGFS - Ignite File System
* Distributed Data Structures
* Distributed Messaging
* Distributed Events
* Streaming & CEP
