You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by al...@apache.org on 2022/02/08 15:18:23 UTC

[ignite] 01/01: Merge remote-tracking branch 'remotes/upstream/master' into sql-calcite

This is an automated email from the ASF dual-hosted git repository.

alexpl pushed a commit to branch sql-calcite
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit cacc613172bf29ac9bf8f041db8ee74cb59f7335
Merge: 6d120d8 5529f68
Author: Aleksey Plekhanov <pl...@gmail.com>
AuthorDate: Tue Feb 8 18:06:11 2022 +0300

    Merge remote-tracking branch 'remotes/upstream/master' into sql-calcite
    
    # Conflicts:
    #	modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java
    #	modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteStatisticsTestSuite.java

 .travis.yml                                        |  15 +-
 README.md                                          |   4 +-
 RELEASE_NOTES.txt                                  | 146 ++++++
 bin/ignite-cdc.sh                                  |   4 +
 docs/_data/toc.yaml                                |   2 +
 docs/_docs/SQL/ODBC/odbc-driver.adoc               |  61 ++-
 docs/_docs/SQL/distributed-joins.adoc              |  61 +--
 docs/_docs/clustering/baseline-topology.adoc       |   8 +-
 .../ignite/snippets/services/ServiceExample.java   |  33 +-
 .../k8s/stateful/node-configuration.xml            |  16 +-
 .../k8s/stateless/node-configuration.xml           |   9 +-
 .../collocated-computations.adoc                   |   2 +-
 .../hibernate-l2-cache.adoc                        |   4 +-
 .../spring/spring-data.adoc                        |   2 +-
 .../cpp-odbc-linux-build-prerequisites.adoc        |  43 ++
 docs/_docs/includes/starting-node.adoc             |   4 +-
 docs/_docs/key-value-api/transactions.adoc         |   3 +-
 docs/_docs/monitoring-metrics/metrics.adoc         |   4 -
 docs/_docs/monitoring-metrics/new-metrics.adoc     |  14 +
 docs/_docs/monitoring-metrics/system-views.adoc    |  14 +
 docs/_docs/persistence/change-data-capture.adoc    | 132 ++++++
 docs/_docs/persistence/native-persistence.adoc     |   1 +
 docs/_docs/quick-start/cpp.adoc                    |  42 +-
 docs/_docs/quick-start/java.adoc                   |   2 +-
 docs/_docs/services/services.adoc                  |  29 ++
 docs/_docs/setup.adoc                              |   2 +-
 docs/_docs/thin-clients/cpp-thin-client.adoc       |  27 +-
 docs/_docs/thin-clients/java-thin-client.adoc      |   2 +-
 docs/_docs/tools/control-script.adoc               |  10 +-
 docs/assets/images/integrations/CDC-design.svg     |   4 +
 .../query/calcite/QueryRegistryImpl.java           |   4 +-
 .../processors/query/calcite/exec/IndexScan.java   |   2 +-
 .../ignite/jdbc/thin/JdbcThinMetadataSelfTest.java |   1 +
 .../qa/query/WarningOnBigQueryResultsBaseTest.java |  15 +-
 .../SystemViewRowAttributeWalkerGenerator.java     |   2 +
 modules/compatibility/pom.xml                      |   6 +
 .../compatibility/IgniteReleasedVersion.java       |  98 ++++
 .../clients/AbstractClientCompatibilityTest.java   |  31 +-
 .../clients/JavaThinCompatibilityTest.java         | 113 +++++
 .../IgnitePKIndexesMigrationToUnwrapPkTest.java    |  21 +-
 .../persistence/IndexTypesCompatibilityTest.java   |  10 +-
 .../InlineJavaObjectCompatibilityTest.java         |  33 +-
 .../PersistenceBasicCompatibilityTest.java         | 140 +-----
 .../testframework/util/MavenUtils.java             |  53 ++-
 modules/control-utility/pom.xml                    |   7 +
 .../consistency/ConsistencyCommand.java            |  56 ++-
 .../util/GridCommandHandlerClusterByClassTest.java |  13 +-
 .../util/GridCommandHandlerConsistencyTest.java    |  99 +++-
 .../util/GridCommandHandlerIndexingTest.java       |  14 +-
 .../apache/ignite/util/GridCommandHandlerTest.java | 118 +++--
 .../ignite/util/KillCommandsCommandShTest.java     |  12 +-
 .../apache/ignite/util/SystemViewCommandTest.java  |  14 +
 .../main/java/org/apache/ignite/IgniteCache.java   |   4 +-
 .../java/org/apache/ignite/IgniteServices.java     |  29 +-
 .../org/apache/ignite/IgniteSystemProperties.java  |  12 +
 .../apache/ignite/cache/ReadRepairStrategy.java    |  89 ++++
 .../java/org/apache/ignite/cdc/CdcConsumer.java    |   2 +-
 .../main/java/org/apache/ignite/cdc/CdcLoader.java |  26 +-
 .../apache/ignite/client/ClientOperationType.java  | 217 +++++++++
 .../ignite/client/ClientRetryAllPolicy.java}       |  13 +-
 .../ignite/client/ClientRetryNonePolicy.java}      |  13 +-
 .../apache/ignite/client/ClientRetryPolicy.java}   |  24 +-
 .../ClientRetryPolicyContext.java}                 |  33 +-
 .../ignite/client/ClientRetryReadPolicy.java       |  50 ++
 .../ignite/client/ClientServiceDescriptor.java     |  78 +++
 .../org/apache/ignite/client/ClientServices.java   |  53 +++
 .../ignite/configuration/ClientConfiguration.java  |  31 ++
 .../configuration/DataRegionConfiguration.java     |  23 +
 .../configuration/DataStorageConfiguration.java    |  99 +++-
 .../SystemDataRegionConfiguration.java             |  93 ++++
 .../events/CacheConsistencyViolationEvent.java     |  38 +-
 .../apache/ignite/internal/GridJobResultImpl.java  |  16 +-
 .../ignite/internal/GridTaskSessionImpl.java       |  81 +++-
 .../org/apache/ignite/internal/IgniteKernal.java   |   2 +-
 .../apache/ignite/internal/IgniteServicesEx.java   |   6 +-
 .../apache/ignite/internal/IgniteServicesImpl.java |  19 +-
 .../org/apache/ignite/internal/IgnitionEx.java     |   9 +-
 .../apache/ignite/internal/binary/BinaryArray.java |  38 +-
 .../ignite/internal/binary/BinaryMarshaller.java   |   2 +-
 .../ignite/internal/binary/BinaryObjectImpl.java   |  17 +-
 .../binary/BinarySerializedFieldComparator.java    |  51 +-
 .../apache/ignite/internal/binary/BinaryUtils.java |  21 +-
 .../ignite/internal/binary/BinaryWriterExImpl.java |   2 +-
 .../binary/builder/BinaryBuilderSerializer.java    |   9 -
 .../binary/builder/BinaryObjectBuilderImpl.java    |   4 +-
 .../cache/query/index/IndexQueryProcessor.java     | 260 +++++++---
 .../query/index/sorted/IndexKeyDefinition.java     |  12 -
 .../query/index/sorted/IndexRowComparator.java     |   9 +-
 .../query/index/sorted/IndexRowCompartorImpl.java  |  32 +-
 .../sorted/defragmentation/DefragIndexFactory.java |   4 +
 .../index/sorted/inline/IndexQueryContext.java     |  33 +-
 .../query/index/sorted/inline/InlineIndexImpl.java |   6 +-
 .../index/sorted/inline/InlineIndexKeyType.java    |   8 +-
 .../query/index/sorted/inline/InlineIndexTree.java |  40 +-
 .../sorted/inline/InlineTreeFilterClosure.java     |  39 +-
 .../sorted/inline/io/AbstractInlineInnerIO.java    |   3 +
 .../sorted/inline/io/AbstractInlineLeafIO.java     |   3 +
 .../index/sorted/inline/io/AbstractInnerIO.java    |   3 +
 .../index/sorted/inline/io/AbstractLeafIO.java     |   3 +
 .../query/index/sorted/keys/BytesCompareUtils.java |  59 ---
 .../query/index/sorted/keys/BytesIndexKey.java     |  20 +-
 .../index/sorted/keys/JavaObjectIndexKey.java      |   8 +-
 .../index/sorted/keys/SignedBytesIndexKey.java     |   4 +-
 .../org/apache/ignite/internal/cdc/CdcMain.java    |   8 +-
 .../router/impl/GridRouterCommandLineStartup.java  |  12 +-
 .../internal/client/thin/ClientOperation.java      | 141 +++++-
 .../client/thin/ClientRetryPolicyContextImpl.java  |  76 +++
 .../client/thin/ClientServiceDescriptorImpl.java   | 104 ++++
 .../internal/client/thin/ClientServicesImpl.java   | 120 ++++-
 .../ignite/internal/client/thin/ClientUtils.java   |   4 +-
 .../client/thin/ProtocolBitmaskFeature.java        |   9 +-
 .../internal/client/thin/ReliableChannel.java      |  57 ++-
 .../graph/FullyConnectedComponentSearcher.java     |  14 +-
 .../managers/collision/GridCollisionManager.java   |  14 +-
 .../managers/discovery/GridDiscoveryManager.java   |   2 +-
 .../managers/encryption/CacheGroupPageScanner.java |  31 +-
 .../eventstorage/GridEventStorageManager.java      |  11 +-
 .../managers/systemview/SystemViewMBean.java       |   7 +-
 .../systemview/walker/CacheViewWalker.java         | 196 ++++----
 .../systemview/walker/SnapshotViewWalker.java      |  50 ++
 .../unsafe/UnsafeMemoryAllocator.java}             |  16 +-
 .../internal/mem/unsafe/UnsafeMemoryProvider.java  |  36 +-
 .../ignite/internal/pagemem/wal/WALIterator.java   |   6 +-
 .../internal/pagemem/wal/record/DataRecord.java    |  40 +-
 .../processors/affinity/GridAffinityProcessor.java |  13 +-
 .../IgniteAuthenticationProcessor.java             |   4 +-
 .../processors/bulkload/BulkLoadProcessor.java     |   4 +-
 .../cache/CacheEntryPredicateContainsValue.java    |   4 +
 .../processors/cache/CacheGroupContext.java        |  45 +-
 .../processors/cache/CacheObjectUtils.java         |   6 +-
 .../processors/cache/CacheOperationContext.java    |  39 +-
 .../processors/cache/ClusterCachesInfo.java        |   2 +-
 .../cache/GatewayProtectedCacheProxy.java          |  14 +-
 .../processors/cache/GridCacheAdapter.java         | 128 ++---
 .../processors/cache/GridCacheContext.java         |  10 +-
 .../processors/cache/GridCacheMapEntry.java        |   6 +-
 .../cache/GridCachePartitionExchangeManager.java   |  19 +-
 .../processors/cache/GridCacheProxyImpl.java       |   8 +-
 .../processors/cache/IgniteCacheProxyImpl.java     |   3 +-
 .../binary/CacheObjectBinaryProcessorImpl.java     |   3 +-
 .../cache/distributed/dht/GridDhtCacheAdapter.java |   7 +-
 .../dht/GridDhtTopologyFutureAdapter.java          |   9 +-
 .../distributed/dht/atomic/GridDhtAtomicCache.java |  48 +-
 .../dht/colocated/GridDhtColocatedCache.java       |  15 +-
 .../preloader/GridDhtPartitionsExchangeFuture.java |  13 +
 .../dht/topology/GridDhtPartitionTopologyImpl.java |   4 +-
 .../distributed/near/GridNearAtomicCache.java      |   3 +-
 .../near/GridNearTransactionalCache.java           |   5 +-
 .../cache/distributed/near/GridNearTxLocal.java    |  72 +--
 .../consistency/GridCompoundReadRepairFuture.java  | 106 +++++
 .../GridNearReadRepairAbstractFuture.java          | 137 +++++-
 .../GridNearReadRepairCheckOnlyFuture.java         | 137 ++----
 .../near/consistency/GridNearReadRepairFuture.java | 252 ++++++++--
 .../IgniteConsistencyViolationException.java       |  25 +-
 ...teIrreparableConsistencyViolationException.java |  63 +++
 .../cache/local/atomic/GridLocalAtomicCache.java   |   7 +-
 .../processors/cache/mvcc/MvccProcessorImpl.java   |   4 +-
 .../processors/cache/mvcc/txlog/TxLogInnerIO.java  |  10 +
 .../processors/cache/mvcc/txlog/TxLogLeafIO.java   |  10 +
 .../GridCacheDatabaseSharedManager.java            |  22 +-
 .../IgniteCacheDatabaseSharedManager.java          |  20 +-
 .../cache/persistence/IndexStorageImpl.java        |   4 +
 .../cache/persistence/RecoveryDebug.java           |   7 +-
 .../persistence/checkpoint/CheckpointEntry.java    |  77 ++-
 .../persistence/checkpoint/CheckpointHistory.java  |  87 +++-
 .../persistence/checkpoint/CheckpointManager.java  |  21 +-
 .../checkpoint/CheckpointMarkersStorage.java       | 189 +++++++-
 .../checkpoint/EarliestCheckpointMapSnapshot.java  | 177 +++++++
 .../cache/persistence/defragmentation/LinkMap.java |   4 +
 .../persistence/freelist/io/PagesListMetaIO.java   |   4 +
 .../persistence/freelist/io/PagesListNodeIO.java   |  15 +
 .../metastorage/MetastorageInnerIO.java            |   4 +
 .../persistence/metastorage/MetastorageLeafIO.java |   4 +
 .../cache/persistence/pagemem/PageMemoryImpl.java  |   6 +
 .../snapshot/AbstractSnapshotVerificationTask.java |  42 +-
 .../snapshot/IgniteSnapshotManager.java            |  37 +-
 .../persistence/snapshot/SnapshotMXBeanImpl.java   |  20 +
 .../snapshot/SnapshotRestoreProcess.java           | 243 ++++++----
 .../cache/persistence/tree/BPlusTree.java          |  72 ++-
 .../persistence/tree/io/AbstractDataPageIO.java    |  30 +-
 .../cache/persistence/tree/io/BPlusIO.java         |  56 +++
 .../cache/persistence/tree/io/BPlusInnerIO.java    |   8 +
 .../cache/persistence/tree/io/BPlusLeafIO.java     |   1 +
 .../cache/persistence/tree/io/BPlusMetaIO.java     |  12 +
 .../cache/persistence/tree/io/DataPageIO.java      |  18 +-
 .../cache/persistence/tree/io/PageIO.java          |  18 +
 .../cache/persistence/tree/io/PageMetaIO.java      |  16 +
 .../cache/persistence/tree/io/PageMetaIOV2.java    |   6 +
 .../tree/io/PagePartitionCountersIO.java           |   6 +
 .../persistence/tree/io/PagePartitionMetaIO.java   |  10 +
 .../persistence/tree/io/PagePartitionMetaIOV2.java |   6 +
 .../persistence/tree/io/PagePartitionMetaIOV3.java |   4 +
 .../persistence/tree/io/SimpleDataPageIO.java      |   4 +
 .../cache/persistence/tree/io/TrackingPageIO.java  |  14 +-
 .../wal/AbstractWalRecordsIterator.java            |   8 +-
 .../wal/filehandle/FileWriteHandleImpl.java        |  13 +
 .../wal/reader/StandaloneWalRecordsIterator.java   |   8 +-
 .../wal/serializer/RecordDataV1Serializer.java     |  45 +-
 .../wal/serializer/RecordDataV2Serializer.java     |  34 +-
 .../processors/cache/query/GridCacheSqlQuery.java  |  18 +-
 .../cache/query/reducer/IndexQueryReducer.java     |  25 +-
 .../processors/cache/tree/AbstractDataInnerIO.java |   5 +
 .../processors/cache/tree/AbstractDataLeafIO.java  |   5 +
 .../cache/tree/AbstractPendingEntryInnerIO.java    |   3 +
 .../cache/tree/AbstractPendingEntryLeafIO.java     |   3 +
 .../tree/mvcc/data/MvccCacheIdAwareDataLeafIO.java |   4 +
 .../cache/tree/mvcc/data/MvccDataInnerIO.java      |   2 +
 .../cache/tree/mvcc/data/MvccDataLeafIO.java       |   6 +
 .../processors/cache/version/GridCacheVersion.java |   3 +-
 .../cache/version/GridCacheVersionEx.java          |   1 +
 .../cache/version/GridCacheVersionManager.java     |   5 +
 .../cluster/GridClusterStateProcessor.java         |   2 +-
 .../datastructures/GridCacheQueueAdapter.java      |   2 +-
 .../processors/job/ComputeJobStatusEnum.java}      |  29 +-
 .../processors/job/GridJobEventListener.java       |  11 +-
 .../internal/processors/job/GridJobProcessor.java  | 161 ++++++-
 .../internal/processors/job/GridJobWorker.java     |  89 +++-
 .../processors/odbc/ClientListenerNioListener.java |   5 +-
 .../processors/platform/PlatformContextImpl.java   |   4 +-
 .../processors/platform/cache/PlatformCache.java   |   6 +
 .../platform/client/ClientBitmaskFeature.java      |   9 +-
 .../platform/client/ClientMessageParser.java       |  16 +-
 .../service/ClientServiceDescriptorResponse.java   |  48 ++
 .../service/ClientServiceDescriptorsResponse.java  |  63 +++
 .../service/ClientServiceGetDescriptorRequest.java |  49 ++
 .../ClientServiceGetDescriptorsRequest.java}       |  30 +-
 .../client/service/ClientServiceInvokeRequest.java |  17 +-
 .../platform/services/PlatformServices.java        |   8 +-
 .../platform/utils/PlatformConfigurationUtils.java |  38 ++
 .../internal/processors/pool/PoolProcessor.java    |  30 ++
 .../processors/query/GridQueryProcessor.java       |  14 +-
 .../processors/query/QueryTypeDescriptorImpl.java  |  17 +-
 .../processors/query/RunningQueryManager.java      |  20 +-
 .../query/property/QueryBinaryProperty.java        |   6 +
 .../resource/GridResourceServiceInjector.java      |   7 +-
 .../processors/service/GridServiceAssignments.java | 132 ------
 .../service/GridServiceAssignmentsKey.java         |  66 ---
 .../processors/service/GridServiceDeployment.java  |  97 ----
 .../service/GridServiceDeploymentKey.java          |  66 ---
 .../processors/service/GridServiceProxy.java       | 127 ++---
 .../processors/service/IgniteServiceProcessor.java | 125 +++--
 .../service/LazyServiceConfiguration.java          |   1 +
 .../service/ServiceCallContextHolder.java          |   7 +-
 .../processors/service/ServiceCallContextImpl.java |  27 +-
 .../processors/service/ServiceContextImpl.java     |  35 +-
 .../processors/service/ServiceDescriptorImpl.java  | 120 -----
 .../session/GridTaskSessionProcessor.java          |  16 +-
 .../processors/task/GridTaskEventListener.java     |  19 +-
 .../processors/task/GridTaskProcessor.java         | 154 +++++-
 .../internal/processors/task/GridTaskWorker.java   |  84 +++-
 .../task/monitor/ComputeGridMonitor.java}          |  24 +-
 .../processors/task/monitor/ComputeTaskStatus.java | 227 +++++++++
 .../task/monitor/ComputeTaskStatusEnum.java}       |  20 +-
 .../task/monitor/ComputeTaskStatusSnapshot.java    |  89 ++++
 .../apache/ignite/internal/util/IgniteUtils.java   |  67 ++-
 .../util/distributed/SingleNodeMessage.java        |   8 +-
 .../ignite/internal/util/gridify/GridifyUtils.java |   3 +-
 .../apache/ignite/internal/util/lang/GridFunc.java | 241 ++++++++++
 .../internal/util/nio/ssl/GridNioSslHandler.java   |   3 +-
 .../internal/util/spring/IgniteSpringHelper.java   |  20 +-
 .../consistency/VisorConsistencyRepairTask.java    |  35 +-
 .../consistency/VisorConsistencyRepairTaskArg.java |  16 +-
 .../visor/node/VisorDataStorageConfiguration.java  |   4 +-
 .../visor/node/VisorMemoryConfiguration.java       |   4 +-
 .../visor/snapshot/VisorSnapshotRestoreTask.java   |   2 +-
 .../visor/systemview/VisorSystemViewTask.java      |   2 +-
 .../ignite/internal/visor/tx/TxVerboseId.java      |   2 +-
 .../org/apache/ignite/mem/MemoryAllocator.java}    |  25 +-
 .../org/apache/ignite/mxbean/SnapshotMXBean.java   |  25 +
 .../org/apache/ignite/platform/PlatformType.java}  |  17 +-
 .../plugin/CacheTopologyValidatorProvider.java     |  42 ++
 .../apache/ignite/services/ServiceCallContext.java |   3 +-
 .../ignite/services/ServiceConfiguration.java      |  36 ++
 .../priorityqueue/PriorityQueueCollisionSpi.java   |  92 ++--
 .../ignite/spi/systemview/view/CacheView.java      |  22 +-
 .../ignite/spi/systemview/view/SnapshotView.java   |  93 ++++
 .../view/SystemViewRowAttributeWalker.java         |   3 +-
 .../startup/cmdline/CdcCommandLineStartup.java     |  23 -
 .../main/resources/META-INF/classnames.properties  |   5 -
 .../org/apache/ignite/cdc/CdcCacheVersionTest.java |  31 ++
 .../java/org/apache/ignite/cdc/CdcSelfTest.java    |  46 +-
 .../org/apache/ignite/client/FunctionalTest.java   |  20 +-
 .../org/apache/ignite/client/ReliabilityTest.java  | 129 +++++
 .../GridMultithreadedJobStealingSelfTest.java      |  76 +--
 .../internal/binary/BinaryArraySelfTest.java       | 274 +++++++++--
 .../binary/BinaryFieldExtractionSelfTest.java      |   3 +-
 .../binary/BinaryFieldsAbstractSelfTest.java       |   6 +-
 .../BinaryFooterOffsetsAbstractSelfTest.java       |   3 +-
 .../internal/binary/BinaryMarshallerSelfTest.java  |  12 +-
 .../BinaryObjectBuilderAdditionalSelfTest.java     | 192 +-------
 .../GridBinaryMarshallerCtxDisabledSelfTest.java   |   3 +-
 .../binary/GridBinaryWildcardsSelfTest.java        |   3 +-
 .../binary/mutabletest/GridBinaryTestClasses.java  |  44 --
 .../ignite/internal/client/thin/ServicesTest.java  | 155 ++++--
 .../direct/DirectMarshallingMessagesTest.java      | 109 +++++
 .../events/LifecycleAwareListenerTest.java         |  80 ++++
 .../ignite/internal/metric/JmxExporterSpiTest.java |   6 +-
 .../ignite/internal/metric/SystemViewSelfTest.java |  59 +++
 .../AuthenticationConfigurationClusterTest.java    |  22 +-
 .../cache/CacheAffinityCallSelfTest.java           |  50 +-
 .../cache/CacheTopologyValidatorProviderTest.java  | 205 ++++++++
 .../processors/cache/GridCacheVersionSelfTest.java |   8 +
 .../cache/IgniteCacheManyAsyncOperationsTest.java  |  35 ++
 .../IgniteTopologyValidatorAbstractCacheTest.java  |  98 +++-
 ...TopologyValidatorAbstractTxCacheGroupsTest.java |   2 +
 ...IgniteTopologyValidatorAbstractTxCacheTest.java |   2 +
 ...teTopologyValidatorCacheGroupsAbstractTest.java |  66 ++-
 .../GridBinaryCacheEntryMemorySizeSelfTest.java    |   3 +-
 .../consistency/AbstractFullSetReadRepairTest.java | 237 ++++++---
 .../cache/consistency/AbstractReadRepairTest.java  | 519 ++++++++++++++------
 .../cache/consistency/AtomicReadRepairTest.java    | 207 --------
 .../AtomicReadRepairTest.java}                     |  13 +-
 .../ExplicitTransactionalReadRepairTest.java       | 105 ++--
 .../ImplicitTransactionalReadRepairTest.java       |  50 +-
 ...licatedExplicitTransactionalReadRepairTest.java |   2 +-
 ...licatedImplicitTransactionalReadRepairTest.java |   2 +-
 ...eBackupExplicitTransactionalReadRepairTest.java |   2 +-
 ...eBackupImplicitTransactionalReadRepairTest.java |   2 +-
 .../PdsAtomicReadRepairTest.java}                  |  10 +-
 .../PdsExplicitTransactionalReadRepairTest.java}   |  10 +-
 .../PdsImplicitTransactionalReadRepairTest.java}   |  10 +-
 .../OutOfMemoryVolatileRegionTest.java             |   8 +-
 .../IgnitePdsCheckpointMapSnapshotTest.java        | 222 +++++++++
 .../persistence/IgnitePdsDestroyCacheTest.java     |  84 ++++
 .../IgnitePdsRecoveryAfterFileCorruptionTest.java  |  42 +-
 .../IgnitePdsSporadicDataRecordsOnBackupTest.java  |  14 +-
 ...CheckpointSimulationWithRealCpDisabledTest.java |   4 +-
 .../persistence/db/wal/IgniteWalRebalanceTest.java | 244 +++++++---
 .../db/wal/reader/IgniteWalReaderTest.java         |  27 +-
 .../IgniteClusterSnapshotRestoreSelfTest.java      |  16 +
 .../snapshot/IgniteSnapshotMXBeanTest.java         | 104 +++-
 .../IgniteSnapshotRestoreFromRemoteTest.java       |  41 ++
 .../persistence/tree/io/TrackingPageIOTest.java    |   2 +
 .../reader/StandaloneWalRecordsIteratorTest.java   | 150 +++++-
 .../TxPartitionCounterStateConsistencyTest.java    |   4 +-
 .../cluster/ClusterReadOnlyModeSelfTest.java       |  20 +-
 .../processors/compute/ComputeGridMonitorTest.java | 381 +++++++++++++++
 .../compute/ComputeJobChangePriorityTest.java      | 259 ++++++++++
 .../processors/compute/ComputeJobStatusTest.java   | 457 ++++++++++++++++++
 .../ComputeTaskWithWithoutFullSupportTest.java     | 142 ++++++
 .../NoopJob.java}                                  |  11 +-
 .../database/BPlusTreeReplaceRemoveRaceTest.java   | 144 ++++--
 .../processors/service/GridServiceMetricsTest.java | 323 +++++++++++++
 .../GridServiceProcessorAbstractSelfTest.java      |  23 +-
 .../service/GridServiceProcessorProxySelfTest.java | 184 ++++---
 .../service/IgniteServiceCallContextTest.java      |  15 +
 .../processors/service/inner/MyService.java        |   7 +
 .../apache/ignite/internal/util/EchoServer.java    | 139 ++++++
 .../ignite/internal/util/IgniteUtilsUnitTest.java  |  72 +++
 .../internal/util/nio/GridNioServerTest.java       |  95 ++++
 .../ignite/platform/PlatformDeployServiceTask.java |  10 +-
 .../platform/PlatformServiceCallThinTask.java      |  10 +-
 .../platform/PlatformSetUseBinaryArrayTask.java    |  71 +++
 .../platform/model/{Role.java => AccessLevel.java} |  20 +-
 .../org/apache/ignite/platform/model/Role.java     |  16 +-
 .../session/GridSessionCheckpointSelfTest.java     |   8 +-
 .../collision/GridTestCollisionTaskSession.java    | 140 +++---
 .../cmdline/CommandLinePrintPropertiesTest.java    |   2 +
 .../apache/ignite/testframework/GridTestUtils.java |  33 ++
 .../testframework/junits/GridAbstractTest.java     |   2 +-
 .../junits/GridTestBinaryMarshaller.java           |   3 +-
 .../testframework/junits/IgniteTestResources.java  |   6 +-
 .../junits/common/GridCommonAbstractTest.java      |  16 +
 .../junits/multijvm/IgniteCacheProcessProxy.java   |   3 +-
 .../IgniteCacheConsistencySelfTestSuite.java       |  55 +++
 .../IgniteCacheDataStructuresSelfTestSuite.java    |  17 -
 .../testsuites/IgniteComputeGridTestSuite.java     |  11 +-
 .../testsuites/IgniteKernalSelfTestSuite.java      |   4 +-
 .../testsuites/IgniteMarshallerSelfTestSuite.java  |   4 +-
 .../ignite/testsuites/IgnitePdsTestSuite4.java     |   2 +
 .../testsuites/IgniteServiceGridTestSuite.java     |   2 +
 .../IgniteTopologyValidatorTestSuite.java          |   2 +
 .../ignite/testsuites/IgniteUtilSelfTestSuite.java |   4 +
 ...mandHandlerClusterByClassTest_cache_help.output |   2 +-
 ...ridCommandHandlerClusterByClassTest_help.output |   2 +-
 ...dlerClusterByClassWithSSLTest_cache_help.output |   2 +-
 ...andHandlerClusterByClassWithSSLTest_help.output |   2 +-
 .../development/utils/IgniteWalConverter.java      |   8 +-
 .../utils/IgniteWalConverterArguments.java         |   2 +-
 .../apache/ignite/development/utils/WalStat.java   |  13 +-
 .../utils/IgniteWalConverterArgumentsTest.java     |  18 +-
 modules/ducktests/pom.xml                          |  26 +
 .../tests/ignitetest/services/utils/ignite_spec.py |   4 +-
 .../tests/control_utility/consistency_test.py      |   2 +-
 .../managers/systemview/SystemViewLocal.java       |   2 +-
 .../cache/query/GridCacheTwoStepQuery.java         |   1 +
 .../cache/query/RegisteredQueryCursor.java         |   6 +-
 .../processors/query/h2/CommandProcessor.java      |   4 +-
 .../query/h2/GridSubqueryJoinOptimizer.java        |   3 +
 .../query/h2/H2QueryFetchSizeInterceptor.java      |   4 +-
 .../internal/processors/query/h2/H2QueryInfo.java  |  45 +-
 .../processors/query/h2/IgniteH2Indexing.java      |  81 +++-
 .../processors/query/h2/MapH2QueryInfo.java        |  18 +-
 .../processors/query/h2/ReduceH2QueryInfo.java     |   7 +-
 .../processors/query/h2/database/H2TreeIndex.java  |   2 +-
 .../internal/processors/query/h2/dml/DmlUtils.java |   2 +-
 .../processors/query/h2/index/H2RowComparator.java |  16 +-
 .../query/h2/sql/GridSqlQuerySplitter.java         |   6 +-
 .../processors/query/h2/sql/SqlAstTraverser.java   |  15 +
 .../query/h2/twostep/GridMapQueryExecutor.java     |  27 +-
 .../query/h2/twostep/GridReduceQueryExecutor.java  | 189 ++++----
 .../query/h2/twostep/msg/GridH2QueryRequest.java   |  40 +-
 .../IndexQueryCacheKeyValueEscapedFieldsTest.java} |  20 +-
 .../query/IndexQueryCacheKeyValueFieldsTest.java   | 168 +++++++
 .../cache/query/IndexQueryInlineSizesTest.java     | 206 ++++++++
 .../ignite/cache/query/IndexQueryTestSuite.java    |   3 +
 ...gniteCacheJoinPartitionedAndReplicatedTest.java | 101 ++++
 .../processors/cache/index/BasicIndexTest.java     |  68 +++
 .../cache/index/BasicSqlTypesIndexTest.java        |  24 +-
 .../cache/index/H2DynamicTableSelfTest.java        |  62 +++
 .../cache/index/PojoIndexLocalQueryTest.java       | 521 ++++++++++++++++++++
 .../cache/metric/SqlViewExporterSpiTest.java       |  26 +
 .../persistence/db/wal/IgniteWalRecoveryTest.java  |   7 +-
 .../IgniteClusterSnapshotRestoreMetricsTest.java   | 253 ++++++++++
 ...niteClusterSnapshotRestoreWithIndexingTest.java |   2 +-
 .../processors/query/SqlSystemViewsSelfTest.java   |  62 +++
 .../h2/GridSubqueryJoinOptimizerSelfTest.java      |  47 ++
 .../internal/systemview/JmxExporterSpiTest.java    |  73 +++
 .../apache/ignite/sqltests/SqlByteArrayTest.java   |  79 +++
 .../ignite/sqltests/SqlDataTypesCoverageTests.java |   5 +-
 .../IgniteBinaryCacheQueryTestSuite.java           |   2 +
 .../IgniteBinaryCacheQueryTestSuite2.java          |   2 +
 .../testsuites/IgnitePdsWithIndexingTestSuite.java |   2 -
 .../IgniteSnapshotWithIndexingTestSuite.java       |   6 +-
 .../testsuites/IgniteStatisticsTestSuite.java      |   4 +-
 .../apache/ignite/logger/log4j2/Log4J2Logger.java  |  26 +-
 modules/mesos/pom.xml                              |   2 +-
 .../ignite/mesos/IgniteSchedulerSelfTest.java      |  16 +
 modules/ml/pom.xml                                 |   2 +-
 modules/ml/spark-model-parser/pom.xml              |   6 +
 modules/numa-allocator/README.md                   | 141 ++++++
 modules/numa-allocator/pom.xml                     | 210 ++++++++
 modules/numa-allocator/src/main/cpp/CMakeLists.txt |  45 ++
 .../src/main/cpp/include/numa/numa_alloc.h         | 110 +++++
 .../org_apache_ignite_internal_mem_NumaAllocUtil.h |  38 ++
 .../src/main/cpp/src/numa/numa_alloc.cpp           | 214 +++++++++
 ...rg_apache_ignite_internal_mem_NumaAllocUtil.cpp | 129 +++++
 .../apache/ignite/internal/mem/NumaAllocUtil.java  | 151 ++++++
 .../mem/InterleavedNumaAllocationStrategy.java     |  78 +++
 .../ignite/mem/LocalNumaAllocationStrategy.java}   |  30 +-
 .../apache/ignite/mem/NumaAllocationStrategy.java} |  16 +-
 .../java/org/apache/ignite/mem/NumaAllocator.java  |  53 +++
 .../ignite/mem/SimpleNumaAllocationStrategy.java   |  77 +++
 .../internal/mem/NumaAllocatorBasicTest.java       | 177 +++++++
 .../ignite/internal/mem/NumaAllocatorUnitTest.java | 121 +++++
 .../ignite/testsuites/NumaAllocatorTestSuite.java} |  14 +-
 modules/platforms/cpp/CMakeLists.txt               |  31 +-
 .../include/ignite/impl/binary/binary_utils.h      |   4 +-
 .../ignite/impl/interop/interop_input_stream.h     |  31 +-
 .../include/ignite/impl/interop/interop_memory.h   |   6 +-
 .../ignite/impl/interop/interop_output_stream.h    |  53 ++-
 .../cpp/binary/src/binary/binary_type.cpp          |   1 +
 .../cpp/binary/src/impl/binary/binary_schema.cpp   |   1 +
 .../cpp/binary/src/impl/binary/binary_utils.cpp    |  21 +-
 .../src/impl/interop/interop_input_stream.cpp      | 155 +++---
 .../cpp/binary/src/impl/interop/interop_memory.cpp |   2 +-
 .../src/impl/interop/interop_output_stream.cpp     | 140 +++---
 modules/platforms/cpp/common/CMakeLists.txt        |   1 +
 .../cpp/common/include/ignite/common/bits.h        |  22 +-
 .../cpp/common/include/ignite/common/concurrent.h  |   3 +-
 .../include/ignite/common/factory.h}               |  38 +-
 .../common/include/ignite/common/platform_utils.h  |   7 +
 .../cpp/common/include/ignite/common/promise.h     |  92 ++++
 .../common/include/ignite/common/shared_state.h    | 174 +++++++
 .../cpp/common/include/ignite/common/thread_pool.h | 214 +++++++++
 .../cpp/common/include/ignite/common/utils.h       | 104 +++-
 .../platforms/cpp/common/include/ignite/future.h   | 125 +++++
 .../common/os/linux/include/ignite/common/common.h |  12 +
 .../os/linux/include/ignite/common/concurrent_os.h |  52 ++
 .../common/os/linux/src/common/concurrent_os.cpp   |  42 ++
 .../common/os/linux/src/common/platform_utils.cpp  |  22 +-
 .../common/os/win/include/ignite/common/common.h   |   3 +
 .../os/win/include/ignite/common/concurrent_os.h   |  52 ++
 .../cpp/common/os/win/src/common/concurrent_os.cpp |  41 ++
 .../common/os/win/src/common/platform_utils.cpp    |  23 +-
 .../cpp/common/src/common/big_integer.cpp          |   2 +-
 modules/platforms/cpp/common/src/common/bits.cpp   |  74 +--
 .../cpp/common/src/common/thread_pool.cpp          | 216 +++++++++
 modules/platforms/cpp/common/src/common/utils.cpp  |  62 ++-
 modules/platforms/cpp/common/src/guid.cpp          |  15 +-
 modules/platforms/cpp/core-test/CMakeLists.txt     |  12 +-
 .../cpp/core-test/config/cache-query-schema-32.xml |  52 ++
 .../config/cache-query-schema-default.xml          |  60 +++
 .../cpp/core-test/config/cache-query-schema.xml    |  34 ++
 .../cpp/core-test/src/cache_query_schema_test.cpp  | 312 ++++++++++++
 .../cpp/core-test/src/continuous_query_test.cpp    |  36 +-
 .../include/ignite/cache/event/cache_entry_event.h |  67 ++-
 .../cache/query/continuous/continuous_query_impl.h |   6 +-
 modules/platforms/cpp/examples/CMakeLists.txt      |   6 +
 modules/platforms/cpp/network/CMakeLists.txt       |  32 +-
 .../include/ignite/network/async_client_pool.h     |  81 ++++
 .../network/include/ignite/network/async_handler.h |  87 ++++
 .../cpp/network/include/ignite/network/codec.h     |  79 +++
 .../include/ignite/network/codec_data_filter.h     | 112 +++++
 .../network/include/ignite/network/data_buffer.h   | 139 ++++++
 .../network/include/ignite/network/data_filter.h   | 105 ++++
 .../include/ignite/network/data_filter_adapter.h   | 147 ++++++
 .../cpp/network/include/ignite/network/data_sink.h |  65 +++
 .../cpp/network/include/ignite/network/end_point.h |  15 +
 .../include/ignite/network/length_prefix_codec.h   | 115 +++++
 .../cpp/network/include/ignite/network/network.h   |  30 +-
 .../network/include/ignite/network/socket_client.h |  16 +-
 .../{utils.h => ssl/secure_configuration.h}        |  27 +-
 .../ignite/network/ssl/secure_data_filter.h        | 245 ++++++++++
 .../cpp/network/include/ignite/network/tcp_range.h |  34 +-
 .../cpp/network/include/ignite/network/utils.h     |  11 +
 .../os/linux/src/network/connecting_context.cpp    | 110 +++++
 .../os/linux/src/network/connecting_context.h      |  96 ++++
 .../os/linux/src/network/linux_async_client.cpp    | 198 ++++++++
 .../os/linux/src/network/linux_async_client.h      | 249 ++++++++++
 .../linux/src/network/linux_async_client_pool.cpp  | 212 +++++++++
 .../os/linux/src/network/linux_async_client_pool.h | 205 ++++++++
 .../src/network/linux_async_worker_thread.cpp      | 348 ++++++++++++++
 .../linux/src/network/linux_async_worker_thread.h  | 163 +++++++
 .../cpp/network/os/linux/src/network/sockets.cpp   |  68 ++-
 .../cpp/network/os/linux/src/network/sockets.h     |  21 +-
 .../os/linux/src/network/tcp_socket_client.cpp     |  48 +-
 .../cpp/network/os/win/src/network/sockets.cpp     |  98 +++-
 .../cpp/network/os/win/src/network/sockets.h       |  26 +
 .../os/win/src/network/tcp_socket_client.cpp       |  91 +---
 .../cpp/network/os/win/src/network/utils.cpp       |   1 +
 .../os/win/src/network/win_async_client.cpp        | 185 ++++++++
 .../network/os/win/src/network/win_async_client.h  | 279 +++++++++++
 .../os/win/src/network/win_async_client_pool.cpp   | 239 ++++++++++
 .../os/win/src/network/win_async_client_pool.h     | 211 ++++++++
 .../src/network/win_async_connecting_thread.cpp    | 252 ++++++++++
 .../win/src/network/win_async_connecting_thread.h  | 127 +++++
 .../os/win/src/network/win_async_worker_thread.cpp | 145 ++++++
 .../os/win/src/network/win_async_worker_thread.h   |  76 +++
 .../src/network/async_client_pool_adapter.cpp      |  75 +++
 .../src/network/async_client_pool_adapter.h        | 111 +++++
 .../cpp/network/src/network/codec_data_filter.cpp  | 108 +++++
 .../cpp/network/src/network/data_buffer.cpp        | 126 +++++
 .../network/src/network/error_handling_filter.cpp  |  86 ++++
 .../network/src/network/error_handling_filter.h    |  83 ++++
 .../network/src/network/length_prefix_codec.cpp    |  94 ++++
 .../platforms/cpp/network/src/network/network.cpp  |  35 +-
 .../network/src/network/ssl/secure_data_filter.cpp | 296 ++++++++++++
 .../src/network/ssl/secure_socket_client.cpp       | 180 ++-----
 .../network/src/network/ssl/secure_socket_client.h |  54 +--
 .../cpp/network/src/network/ssl/secure_utils.cpp   | 206 ++++++++
 .../cpp/network/src/network/ssl/secure_utils.h     |  92 ++++
 .../cpp/network/src/network/ssl/ssl_gateway.cpp    | 299 +++++++++---
 .../cpp/network/src/network/ssl/ssl_gateway.h      |  69 ++-
 .../cpp/network/src/network/tcp_socket_client.h    |  11 -
 modules/platforms/cpp/odbc-test/CMakeLists.txt     |  13 +-
 .../cpp/odbc-test/config/queries-schema-32.xml     |  39 +-
 .../odbc-test/config/queries-schema-default.xml    |  68 +++
 .../cpp/odbc-test/config/queries-schema.xml        |  31 +-
 .../cpp/odbc-test/src/sql_schema_test.cpp          | 337 +++++++++++++
 .../platforms/cpp/odbc-test/src/sql_types_test.cpp |   4 +-
 .../platforms/cpp/odbc-test/src/streaming_test.cpp | 116 ++---
 .../cpp/odbc/include/ignite/odbc/connection.h      |   2 +-
 .../include/ignite/odbc/query/internal_query.h     |  10 -
 .../cpp/odbc/include/ignite/odbc/query/query.h     |   7 +-
 .../include/ignite/odbc/query/streaming_query.h    |   7 -
 .../cpp/odbc/include/ignite/odbc/utility.h         |   8 -
 .../cpp/odbc/src/app/application_data_buffer.cpp   |  28 +-
 modules/platforms/cpp/odbc/src/connection.cpp      |  16 +-
 .../cpp/odbc/src/query/streaming_query.cpp         |   5 -
 modules/platforms/cpp/odbc/src/utility.cpp         |  15 -
 .../platforms/cpp/thin-client-test/CMakeLists.txt  |  12 +-
 .../config/cache-query-continuous-32.xml           |  35 +-
 .../config/cache-query-continuous-default.xml      |  98 ++++
 .../config/cache-query-continuous.xml              |  27 +-
 .../config/ssl-no-client-auth-32.xml               |  33 +-
 .../config/ssl-no-client-auth-default.xml          |  84 ++++
 .../thin-client-test/config/ssl-no-client-auth.xml |  24 +-
 .../cpp/thin-client-test/src/cache_client_test.cpp |  40 +-
 .../thin-client-test/src/continuous_query_test.cpp | 528 +++++++++++++++++++++
 .../thin-client-test/src/ignite_client_test.cpp    |  56 ++-
 .../thin-client-test/src/sql_fields_query_test.cpp |   1 +
 .../cpp/thin-client-test/src/ssl_test.cpp          | 208 +++++++-
 .../cpp/thin-client-test/src/test_utils.cpp        |   2 +-
 modules/platforms/cpp/thin-client/CMakeLists.txt   |   1 +
 .../ignite/impl/thin/cache/cache_client_proxy.h    |  11 +
 .../continuous/continuous_query_client_holder.h    | 182 +++++++
 .../thin/cache/query/query_fields_cursor_impl.h    | 147 ------
 .../impl/thin/cache/query/query_fields_row_impl.h  | 197 --------
 .../include/ignite/impl/thin/writable_key.h        |   1 +
 .../include/ignite/thin/cache/cache_client.h       |  21 +-
 .../include/ignite/thin/cache/cache_entry.h        | 168 +++++++
 .../ignite/thin/cache/event/cache_entry_event.h    | 221 +++++++++
 .../thin/cache/event/cache_entry_event_listener.h  |  82 ++++
 .../query/continuous/continuous_query_client.h     | 232 +++++++++
 .../query/continuous/continuous_query_handle.h     |  78 +++
 .../ignite/thin/ignite_client_configuration.h      |  39 +-
 .../src/impl/cache/cache_client_impl.cpp           |  68 ++-
 .../thin-client/src/impl/cache/cache_client_impl.h |  18 +-
 .../src/impl/cache/cache_client_proxy.cpp          |  15 +-
 .../continuous/continuous_query_handle_impl.h      |  90 ++++
 .../continuous_query_notification_handler.cpp      |  63 +++
 .../continuous_query_notification_handler.h        |  96 ++++
 .../thin-client/src/impl/cache/query/cursor_page.h |   5 +-
 .../thin-client/src/impl/channel_state_handler.h   |  68 +++
 .../src/impl/compute/compute_client_impl.cpp       |  86 +++-
 .../cpp/thin-client/src/impl/data_channel.cpp      | 414 ++++++++--------
 .../cpp/thin-client/src/impl/data_channel.h        | 327 +++++--------
 .../cpp/thin-client/src/impl/data_router.cpp       | 386 ++++++++++-----
 .../cpp/thin-client/src/impl/data_router.h         | 288 +++++------
 .../thin-client/src/impl/ignite_client_impl.cpp    |   6 +-
 .../platforms/cpp/thin-client/src/impl/message.cpp | 105 ++--
 .../platforms/cpp/thin-client/src/impl/message.h   | 445 ++++++++++++++---
 .../thin-client/src/impl/notification_handler.h    | 284 +++++++++++
 .../src/impl/transactions/transaction_impl.cpp     |   2 +-
 .../src/impl/transactions/transaction_impl.h       |   2 +-
 .../platforms/cpp/thin-client/src/impl/utility.cpp |   1 +
 .../Apache.Ignite.Core.Tests/Binary/EnumsTest.cs   | 144 ++++++
 .../Platform/PlatformCacheWithPersistenceTest.cs   | 239 ++++++++++
 .../Cache/Query/CacheDmlQueriesTestSchema.cs       | 255 ++++++++++
 .../Client/ClientConnectionTest.cs                 | 211 ++++++++
 .../Client/ClientTestBase.cs                       |  10 +-
 .../ClientProtocolCompatibilityTest.cs             |   2 +-
 .../Client/Compute/ComputeClientTests.cs           |   2 +-
 .../Client/IgniteClientConfigurationTest.cs        |   2 -
 .../Client/Services/ITestService.cs                |   6 +
 .../Client/Services/ServicesClientTest.cs          | 122 ++++-
 .../Client/Services/TestService.cs                 |  24 +-
 .../Client/TestRetryPolicy.cs                      |  57 +++
 .../Compute/ComputeApiTest.cs                      |   9 -
 .../Compute/IgniteExceptionTaskSelfTest.cs         |  48 +-
 .../Config/full-config.xml                         |   4 +-
 .../IgniteConfigurationSerializerTest.cs           |  13 +-
 .../IgniteConfigurationTest.cs                     |  20 +-
 .../Apache.Ignite.Core.Tests/IgnitionStartTest.cs  |   3 +-
 .../PlatformComputeBinarizable.cs}                 |  19 +-
 .../Services/CallPlatformServiceTest.cs            |  32 +-
 .../Services/IJavaService.cs                       |   9 +-
 .../Services/JavaServiceDynamicProxy.cs            |  12 +-
 .../Apache.Ignite.Core.Tests/Services/Model.cs     |  13 +-
 .../Services/PlatformTestService.cs                |  24 +-
 .../Services/ServiceProxyTest.cs                   |   2 +-
 .../Services/ServicesTest.cs                       | 265 +++++++----
 .../Services/ServicesTestAsync.cs                  |  22 +
 .../Services/ServicesTestFullFooter.cs             |  22 +
 .../Services/ServicesTypeAutoResolveTest.cs        | 205 +++++---
 .../dotnet/Apache.Ignite.Core.Tests/TestUtils.cs   |  34 +-
 .../Client/ClientOperationType.cs                  | 219 +++++++++
 .../ClientRetryAllPolicy.cs}                       |  22 +-
 .../Client/ClientRetryReadPolicy.cs                |  55 +++
 .../IClientRetryPolicy.cs}                         |  23 +-
 .../IClientRetryPolicyContext.cs}                  |  28 +-
 .../Client/IgniteClientConfiguration.cs            |  22 +
 .../Client/Services/IClientServiceDescriptor.cs    |  71 +++
 .../Client/Services/IServicesClient.cs             |  30 ++
 .../Configuration/DataStorageConfiguration.cs      |  66 ++-
 .../Configuration/SystemDataRegionConfiguration.cs |  84 ++++
 .../IgniteClientConfigurationSection.xsd           |  17 +
 .../IgniteConfigurationSection.xsd                 |  21 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs     |   8 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheOp.cs       |   3 +-
 .../Impl/Cache/Platform/PlatformCache.cs           |  15 +-
 .../Impl/Client/ClientBitmaskFeature.cs            |   3 +-
 .../Impl/Client/ClientFailoverSocket.cs            | 172 ++++++-
 .../Apache.Ignite.Core/Impl/Client/ClientOp.cs     |   2 +
 .../Impl/Client/ClientOpExtensions.cs              | 158 ++++++
 .../Impl/Client/ClientRetryPolicyContext.cs        |  59 +++
 .../Client/Services/ClientServiceDescriptor.cs     |  68 +++
 .../Impl/Client/Services/ServicesClient.cs         |  65 ++-
 .../Apache.Ignite.Core/Impl/Common/TypeCaster.cs   |  38 +-
 .../Impl/Services/ServiceDescriptor.cs             |   4 +-
 .../Impl/Services/ServiceProxyInvoker.cs           |  25 +-
 .../Impl/Services/ServiceProxySerializer.cs        |  33 +-
 .../Apache.Ignite.Core/Impl/Services/Services.cs   |  28 +-
 .../{Impl/Common => Platform}/PlatformType.cs      |   8 +-
 modules/rest-http/README.txt                       |   3 +
 modules/rest-http/pom.xml                          |   7 +-
 .../util/spring/IgniteSpringHelperImpl.java        |  47 +-
 .../resource/GridServiceInjectionSelfTest.java     |   6 -
 modules/zookeeper/pom.xml                          |  59 +--
 .../ipfinder/zk/TcpDiscoveryZookeeperIpFinder.java | 398 ----------------
 .../discovery/tcp/ipfinder/zk/package-info.java    |  22 -
 .../tcp/ipfinder/zk/ZookeeperIpFinderTest.java     | 409 ----------------
 packaging/deb/changelog                            |   6 +
 packaging/rpm/apache-ignite.spec                   |   5 +-
 parent/pom.xml                                     |  10 +-
 pom.xml                                            |   8 +
 677 files changed, 32037 insertions(+), 7659 deletions(-)

diff --cc modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/QueryRegistryImpl.java
index e11676b,0000000..82e93e5
mode 100644,000000..100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/QueryRegistryImpl.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/QueryRegistryImpl.java
@@@ -1,104 -1,0 +1,104 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one or more
 + * contributor license agreements.  See the NOTICE file distributed with
 + * this work for additional information regarding copyright ownership.
 + * The ASF licenses this file to You under the Apache License, Version 2.0
 + * (the "License"); you may not use this file except in compliance with
 + * the License.  You may obtain a copy of the License at
 + *
 + *      http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +
 +package org.apache.ignite.internal.processors.query.calcite;
 +
 +import java.util.Collection;
 +import java.util.UUID;
 +import java.util.concurrent.ConcurrentHashMap;
 +import java.util.concurrent.ConcurrentMap;
 +import java.util.stream.Collectors;
 +import org.apache.calcite.util.Pair;
 +import org.apache.ignite.cache.query.QueryCancelledException;
 +import org.apache.ignite.internal.GridKernalContext;
 +import org.apache.ignite.internal.processors.cache.query.GridCacheQueryType;
 +import org.apache.ignite.internal.processors.query.GridQueryCancel;
 +import org.apache.ignite.internal.processors.query.RunningQuery;
 +import org.apache.ignite.internal.processors.query.RunningQueryManager;
 +import org.apache.ignite.internal.processors.query.calcite.util.AbstractService;
 +import org.apache.ignite.internal.util.IgniteUtils;
 +
 +/**
 + * Registry of the running queries.
 + */
 +public class QueryRegistryImpl extends AbstractService implements QueryRegistry {
 +    /** */
 +    private final ConcurrentMap<UUID, Pair<Long, RunningQuery>> runningQrys = new ConcurrentHashMap<>();
 +
 +    /** */
 +    protected final GridKernalContext kctx;
 +
 +    /** */
 +    public QueryRegistryImpl(GridKernalContext ctx) {
 +        super(ctx);
 +
 +        kctx = ctx;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public RunningQuery register(RunningQuery qry) {
 +        return runningQrys.computeIfAbsent(qry.id(), k -> {
 +            if (!(qry instanceof RootQuery))
-                 return Pair.of(null, qry);
++                return Pair.of(RunningQueryManager.UNDEFINED_QUERY_ID, qry);
 +
 +            RootQuery<?> rootQry = (RootQuery<?>)qry;
 +
 +            RunningQueryManager qryMgr = kctx.query().runningQueryManager();
 +
-             Long locId = qryMgr.register(rootQry.sql(), GridCacheQueryType.SQL_FIELDS, rootQry.context().schemaName(),
++            long locId = qryMgr.register(rootQry.sql(), GridCacheQueryType.SQL_FIELDS, rootQry.context().schemaName(),
 +                false, createCancelToken(qry), kctx.localNodeId().toString());
 +
 +            return Pair.of(locId, qry);
 +        }).right;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public RunningQuery query(UUID id) {
 +        Pair<Long, RunningQuery> value = runningQrys.get(id);
 +        return value != null ? value.right : null;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public void unregister(UUID id) {
 +        Pair<Long, RunningQuery> value = runningQrys.remove(id);
 +        if (value != null)
 +            kctx.query().runningQueryManager().unregister(value.left, null);
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public Collection<? extends RunningQuery> runningQueries() {
 +        return runningQrys.values().stream().map(Pair::getValue).collect(Collectors.toList());
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public void tearDown() {
 +        runningQrys.values().forEach(q -> IgniteUtils.close(q.right::cancel, log));
 +        runningQrys.clear();
 +    }
 +
 +    /** */
 +    private static GridQueryCancel createCancelToken(RunningQuery qry) {
 +        GridQueryCancel token = new GridQueryCancel();
 +        try {
 +            token.add(qry::cancel);
 +        }
 +        catch (QueryCancelledException ignore) {
 +            // Ignore, since it is impossible;
 +        }
 +        return token;
 +    }
 +}
diff --cc modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/IndexScan.java
index 419ff7b,0000000..012070c
mode 100644,000000..100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/IndexScan.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/IndexScan.java
@@@ -1,318 -1,0 +1,318 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one or more
 + * contributor license agreements.  See the NOTICE file distributed with
 + * this work for additional information regarding copyright ownership.
 + * The ASF licenses this file to You under the Apache License, Version 2.0
 + * (the "License"); you may not use this file except in compliance with
 + * the License.  You may obtain a copy of the License at
 + *
 + *      http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.ignite.internal.processors.query.calcite.exec;
 +
 +import java.lang.reflect.Type;
 +import java.util.ArrayList;
 +import java.util.Collections;
 +import java.util.Iterator;
 +import java.util.List;
 +import java.util.function.Function;
 +import java.util.function.Predicate;
 +import java.util.function.Supplier;
 +import org.apache.calcite.rel.type.RelDataType;
 +import org.apache.calcite.util.ImmutableBitSet;
 +import org.apache.calcite.util.ImmutableIntList;
 +import org.apache.ignite.IgniteCheckedException;
 +import org.apache.ignite.IgniteException;
 +import org.apache.ignite.cluster.ClusterTopologyException;
 +import org.apache.ignite.internal.GridKernalContext;
 +import org.apache.ignite.internal.cache.query.index.sorted.IndexRow;
 +import org.apache.ignite.internal.cache.query.index.sorted.IndexSearchRowImpl;
 +import org.apache.ignite.internal.cache.query.index.sorted.InlineIndexRowHandler;
 +import org.apache.ignite.internal.cache.query.index.sorted.inline.IndexQueryContext;
 +import org.apache.ignite.internal.cache.query.index.sorted.inline.InlineIndex;
 +import org.apache.ignite.internal.cache.query.index.sorted.keys.IndexKey;
 +import org.apache.ignite.internal.cache.query.index.sorted.keys.IndexKeyFactory;
 +import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 +import org.apache.ignite.internal.processors.cache.CacheObjectContext;
 +import org.apache.ignite.internal.processors.cache.GridCacheContext;
 +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTopologyFuture;
 +import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition;
 +import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState;
 +import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopology;
 +import org.apache.ignite.internal.processors.cache.mvcc.MvccSnapshot;
 +import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler.RowFactory;
 +import org.apache.ignite.internal.processors.query.calcite.schema.CacheTableDescriptor;
 +import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
 +import org.apache.ignite.internal.processors.query.calcite.util.TypeUtils;
 +import org.apache.ignite.internal.util.lang.GridCursor;
 +import org.apache.ignite.spi.indexing.IndexingQueryFilter;
 +import org.apache.ignite.spi.indexing.IndexingQueryFilterImpl;
 +import org.jetbrains.annotations.Nullable;
 +
 +/**
 + * Scan on index.
 + */
 +public class IndexScan<Row> extends AbstractIndexScan<Row, IndexRow> {
 +    /** */
 +    private final GridKernalContext kctx;
 +
 +    /** */
 +    private final GridCacheContext<?, ?> cctx;
 +
 +    /** */
 +    private final CacheObjectContext coCtx;
 +
 +    /** */
 +    private final CacheTableDescriptor desc;
 +
 +    /** */
 +    private final RowFactory<Row> factory;
 +
 +    /** */
 +    private final AffinityTopologyVersion topVer;
 +
 +    /** */
 +    private final int[] parts;
 +
 +    /** */
 +    private final MvccSnapshot mvccSnapshot;
 +
 +    /** */
 +    private volatile List<GridDhtLocalPartition> reserved;
 +
 +    /** */
 +    private final ImmutableBitSet requiredColumns;
 +
 +    /** */
 +    private final InlineIndex idx;
 +
 +    /** Mapping from index keys to row fields. */
 +    private final ImmutableIntList idxFieldMapping;
 +
 +    /** Types of key fields stored in index. */
 +    private final Type[] fieldsStoreTypes;
 +
 +    /**
 +     * @param ectx Execution context.
 +     * @param desc Table descriptor.
 +     * @param idxFieldMapping Mapping from index keys to row fields.
 +     * @param idx Phisycal index.
 +     * @param filters Additional filters.
 +     * @param lowerBound Lower index scan bound.
 +     * @param upperBound Upper index scan bound.
 +     */
 +    public IndexScan(
 +        ExecutionContext<Row> ectx,
 +        CacheTableDescriptor desc,
 +        InlineIndex idx,
 +        ImmutableIntList idxFieldMapping,
 +        int[] parts,
 +        Predicate<Row> filters,
 +        Supplier<Row> lowerBound,
 +        Supplier<Row> upperBound,
 +        Function<Row, Row> rowTransformer,
 +        @Nullable ImmutableBitSet requiredColumns
 +    ) {
 +        super(
 +            ectx,
 +            desc.rowType(ectx.getTypeFactory(), requiredColumns),
 +            new TreeIndexWrapper(idx),
 +            filters,
 +            lowerBound,
 +            upperBound,
 +            rowTransformer
 +        );
 +
 +        this.desc = desc;
 +        this.idx = idx;
 +        cctx = desc.cacheContext();
 +        kctx = cctx.kernalContext();
 +        coCtx = cctx.cacheObjectContext();
 +
 +        factory = ectx.rowHandler().factory(ectx.getTypeFactory(), rowType);
 +        topVer = ectx.topologyVersion();
 +        this.parts = parts;
 +        mvccSnapshot = ectx.mvccSnapshot();
 +        this.requiredColumns = requiredColumns;
 +        this.idxFieldMapping = idxFieldMapping;
 +
 +        RelDataType srcRowType = desc.rowType(ectx.getTypeFactory(), null);
 +        IgniteTypeFactory typeFactory = ectx.getTypeFactory();
 +        fieldsStoreTypes = new Type[srcRowType.getFieldCount()];
 +
 +        for (int i = 0; i < srcRowType.getFieldCount(); i++)
 +            fieldsStoreTypes[i] = typeFactory.getResultClass(srcRowType.getFieldList().get(i).getType());
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public synchronized Iterator<Row> iterator() {
 +        reserve();
 +
 +        try {
 +            return super.iterator();
 +        }
 +        catch (Exception e) {
 +            release();
 +
 +            throw e;
 +        }
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override protected IndexRow row2indexRow(Row bound) {
 +        if (bound == null)
 +            return null;
 +
 +        InlineIndexRowHandler idxRowHnd = idx.segment(0).rowHandler();
 +        RowHandler<Row> rowHnd = ectx.rowHandler();
 +
 +        IndexKey[] keys = new IndexKey[idxRowHnd.indexKeyDefinitions().size()];
 +
 +        assert keys.length >= idxFieldMapping.size() : "Unexpected index keys [keys.length=" + keys.length +
 +            ", idxFieldMapping.size()=" + idxFieldMapping.size() + ']';
 +
 +        boolean nullSearchRow = true;
 +
 +        for (int i = 0; i < idxFieldMapping.size(); ++i) {
 +            int fieldIdx = idxFieldMapping.getInt(i);
 +            Object key = rowHnd.get(fieldIdx, bound);
 +
 +            if (key != ectx.unspecifiedValue()) {
 +                key = TypeUtils.fromInternal(ectx, key, fieldsStoreTypes[fieldIdx]);
 +
 +                keys[i] = IndexKeyFactory.wrap(key, idxRowHnd.indexKeyDefinitions().get(i).idxType(),
 +                    cctx.cacheObjectContext(), idxRowHnd.indexKeyTypeSettings());
 +
 +                nullSearchRow = false;
 +            }
 +        }
 +
 +        return nullSearchRow ? null : new IndexSearchRowImpl(keys, idxRowHnd);
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override protected Row indexRow2Row(IndexRow row) throws IgniteCheckedException {
 +        return desc.toRow(ectx, row.cacheDataRow(), factory, requiredColumns);
 +    }
 +
 +    /** */
 +    @Override public void close() {
 +        release();
 +    }
 +
 +    /** */
 +    private synchronized void reserve() {
 +        if (reserved != null)
 +            return;
 +
 +        GridDhtPartitionTopology top = cctx.topology();
 +        top.readLock();
 +
 +        GridDhtTopologyFuture topFut = top.topologyVersionFuture();
 +
 +        boolean done = topFut.isDone();
 +
 +        if (!done || !(topFut.topologyVersion().compareTo(topVer) >= 0
 +            && cctx.shared().exchange().lastAffinityChangedTopologyVersion(topFut.initialVersion()).compareTo(topVer) <= 0)) {
 +            top.readUnlock();
 +
 +            throw new ClusterTopologyException("Topology was changed. Please retry on stable topology.");
 +        }
 +
 +        List<GridDhtLocalPartition> toReserve;
 +
 +        if (cctx.isReplicated()) {
 +            int partsCnt = cctx.affinity().partitions();
 +            toReserve = new ArrayList<>(partsCnt);
 +            for (int i = 0; i < partsCnt; i++)
 +                toReserve.add(top.localPartition(i));
 +        }
 +        else if (cctx.isPartitioned()) {
 +            assert parts != null;
 +
 +            toReserve = new ArrayList<>(parts.length);
 +            for (int i = 0; i < parts.length; i++)
 +                toReserve.add(top.localPartition(parts[i]));
 +        }
 +        else {
 +            assert cctx.isLocal();
 +
 +            toReserve = Collections.emptyList();
 +        }
 +
 +        reserved = new ArrayList<>(toReserve.size());
 +
 +        try {
 +            for (GridDhtLocalPartition part : toReserve) {
 +                if (part == null || !part.reserve()) {
 +                    throw new ClusterTopologyException(
 +                        "Failed to reserve partition for query execution. Retry on stable topology."
 +                    );
 +                }
 +                else if (part.state() != GridDhtPartitionState.OWNING) {
 +                    part.release();
 +
 +                    throw new ClusterTopologyException(
 +                        "Failed to reserve partition for query execution. Retry on stable topology."
 +                    );
 +                }
 +
 +                reserved.add(part);
 +            }
 +        }
 +        catch (Exception e) {
 +            release();
 +
 +            throw e;
 +        }
 +        finally {
 +            top.readUnlock();
 +        }
 +    }
 +
 +    /** */
 +    private synchronized void release() {
 +        if (reserved == null)
 +            return;
 +
 +        for (GridDhtLocalPartition part : reserved)
 +            part.release();
 +
 +        reserved = null;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override protected IndexQueryContext indexQueryContext() {
 +        IndexingQueryFilter filter = new IndexingQueryFilterImpl(kctx, topVer, parts);
-         return new IndexQueryContext(filter, mvccSnapshot);
++        return new IndexQueryContext(filter, null, mvccSnapshot);
 +    }
 +
 +    /** */
 +    private static class TreeIndexWrapper implements TreeIndex<IndexRow> {
 +        /** Underlying index. */
 +        private final InlineIndex idx;
 +
 +        /** */
 +        private TreeIndexWrapper(InlineIndex idx) {
 +            this.idx = idx;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public GridCursor<IndexRow> find(IndexRow lower, IndexRow upper, IndexQueryContext qctx) {
 +            try {
 +                int seg = 0; // TODO segments support
 +
 +                return idx.find(lower, upper, true, true, seg, qctx);
 +            }
 +            catch (IgniteCheckedException e) {
 +                throw new IgniteException("Failed to find index rows", e);
 +            }
 +        }
 +    }
 +}
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java
index 4cbcf6f,8308e1d..27c1d63
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java
@@@ -181,44 -139,8 +184,44 @@@ public class RunningQueryManager 
              "on this node. This metric number included in the general 'failed' metric.");
      }
  
 +    /** */
 +    public void start(GridSpinBusyLock busyLock) {
 +        this.busyLock = busyLock;
 +
 +        ctx.io().addMessageListener(GridTopic.TOPIC_QUERY, (nodeId, msg, plc) -> onMessage(nodeId, msg));
 +
 +        ctx.event().addLocalEventListener(new GridLocalEventListener() {
 +            @Override public void onEvent(final Event evt) {
 +                UUID nodeId = ((DiscoveryEvent)evt).eventNode().id();
 +
 +                List<GridFutureAdapter<String>> futs = new ArrayList<>();
 +
 +                lock.writeLock().lock();
 +
 +                try {
 +                    Iterator<CancelQueryFuture> it = cancellationRuns.values().iterator();
 +
 +                    while (it.hasNext()) {
 +                        CancelQueryFuture fut = it.next();
 +
 +                        if (fut.nodeId().equals(nodeId)) {
 +                            futs.add(fut);
 +
 +                            it.remove();
 +                        }
 +                    }
 +                }
 +                finally {
 +                    lock.writeLock().unlock();
 +                }
 +
 +                futs.forEach(f -> f.onDone("Query node has left the grid: [nodeId=" + nodeId + "]"));
 +            }
 +        }, EventType.EVT_NODE_FAILED, EventType.EVT_NODE_LEFT);
 +    }
 +
      /**
-      * Register running query.
+      * Registers running query and returns an id associated with the query.
       *
       * @param qry Query text.
       * @param qryType Query type.
@@@ -378,7 -300,7 +381,7 @@@
       *
       * @param qryId Query id.
       */
-     public void cancelLocalQuery(Long qryId) {
 -    public void cancel(long qryId) {
++    public void cancelLocalQuery(long qryId) {
          GridRunningQueryInfo run = runs.get(qryId);
  
          if (run != null)
diff --cc modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteStatisticsTestSuite.java
index 312c014,d65e55f..17e8d72
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteStatisticsTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteStatisticsTestSuite.java
@@@ -100,8 -95,7 +101,9 @@@ import org.junit.runners.Suite
      // Views
      StatisticsViewsPersistenceTest.class,
      StatisticsViewsInMemoryTest.class,
 +    StatisticsGlobalViewPersistenceTest.class,
-     StatisticsGlobalViewInMemoryTest.class
++    StatisticsGlobalViewInMemoryTest.class,
+     JmxExporterSpiTest.class
  })
  public class IgniteStatisticsTestSuite {
  }
diff --cc parent/pom.xml
index 4f90ee8,41183ba..4e7c310
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@@ -78,10 -78,9 +78,9 @@@
          <httpclient.version>4.5.13</httpclient.version>
          <httpcore.version>4.4.14</httpcore.version>
          <jackson.version>2.12.4</jackson.version>
-         <jackson1.version>1.9.13</jackson1.version>
          <jaxb.api.version>2.1</jaxb.api.version>
          <jaxb.impl.version>2.1.14</jaxb.impl.version>
 -        <javassist.version>3.20.0-GA</javassist.version>
 +        <javassist.version>3.28.0-GA</javassist.version>
          <javax.cache.bundle.version>1.0.0_1</javax.cache.bundle.version>
          <javax.cache.tck.version>1.1.0</javax.cache.tck.version>
          <javax.cache.version>1.0.0</javax.cache.version>