Megre 2.0

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1748e226
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1748e226
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1748e226

Branch: refs/heads/ignite-3477-merge2.0
Commit: 1748e226d4322b90c7a50d52e53e2e16119c8086
Parents: db548dc 85b08c5
Author: sboikov <sboi...@gridgain.com>
Authored: Wed Feb 15 13:42:00 2017 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Wed Feb 15 13:42:00 2017 +0300

----------------------------------------------------------------------
 .gitignore                                      |   2 +-
 DEVNOTES.txt                                    |   3 +
 NOTICE                                          |   2 +-
 assembly/LICENSE_FABRIC                         |  35 +-
 assembly/LICENSE_HADOOP                         |  17 +-
 assembly/NOTICE_FABRIC                          |   2 +-
 assembly/NOTICE_HADOOP                          |   2 +-
 assembly/dependencies-fabric-lgpl.xml           |   1 +
 assembly/dependencies-fabric.xml                |   1 +
 examples/schema-import/bin/h2-server.bat        |   2 +-
 examples/schema-import/bin/h2-server.sh         |   4 +-
 .../schema-import/bin/schema-import.properties  |   2 +-
 .../src/main/resources/META-INF/licenses.txt.vm |   7 +-
 .../tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java |  37 +-
 .../TcpDiscoveryS3IpFinderAbstractSelfTest.java |  84 +++
 ...3IpFinderAwsCredentialsProviderSelfTest.java |  46 ++
 ...scoveryS3IpFinderAwsCredentialsSelfTest.java |  45 ++
 .../s3/TcpDiscoveryS3IpFinderSelfTest.java      |  79 ---
 .../ignite/testsuites/IgniteS3TestSuite.java    |  26 +-
 .../stream/camel/IgniteCamelStreamerTest.java   |   4 +-
 .../cassandra/persistence/PojoKeyField.java     |   2 +-
 .../ClientAbstractMultiNodeSelfTest.java        |   8 +-
 ...BinaryMarshallerInsertStatementSelfTest.java |   2 -
 ...cBinaryMarshallerMergeStatementSelfTest.java |   2 -
 .../internal/jdbc2/JdbcMetadataSelfTest.java    |   2 +-
 .../ignite/jdbc/JdbcMetadataSelfTest.java       |   4 +-
 .../jdbc/suite/IgniteJdbcDriverTestSuite.java   |   3 +-
 .../ignite/codegen/MessageCodeGenerator.java    |   2 +-
 modules/core/src/main/java/META-INF/NOTICE      |   2 +-
 .../apache/ignite/IgniteSystemProperties.java   |  14 +
 .../apache/ignite/binary/BinaryRawReader.java   |  13 +
 .../apache/ignite/binary/BinaryRawWriter.java   |  13 +
 .../org/apache/ignite/binary/BinaryReader.java  |  15 +
 .../org/apache/ignite/binary/BinaryWriter.java  |  15 +
 .../org/apache/ignite/cache/QueryEntity.java    |  22 +-
 .../org/apache/ignite/cache/query/SqlQuery.java |  25 +
 .../store/jdbc/CacheAbstractJdbcStore.java      |  11 +-
 .../store/jdbc/CacheJdbcBlobStoreFactory.java   |   2 +-
 .../store/jdbc/JdbcTypesDefaultTransformer.java |  19 +
 .../cache/store/jdbc/JdbcTypesTransformer.java  |  17 +
 .../configuration/CacheConfiguration.java       |  20 +-
 .../configuration/IgniteConfiguration.java      |  87 +--
 .../apache/ignite/internal/GridComponent.java   |  48 +-
 .../internal/GridEventConsumeHandler.java       |   5 +
 .../ignite/internal/GridKernalContext.java      |  23 +-
 .../ignite/internal/GridKernalContextImpl.java  |  47 +-
 .../internal/GridMessageListenHandler.java      |   5 +
 .../internal/GridPerformanceSuggestions.java    |  92 ---
 .../ignite/internal/GridPluginComponent.java    |  21 +-
 .../org/apache/ignite/internal/GridTopic.java   |   3 +
 .../ignite/internal/IgniteComputeImpl.java      |   2 +
 .../apache/ignite/internal/IgniteKernal.java    |  40 +-
 .../ignite/internal/IgniteVersionUtils.java     |   2 +-
 .../org/apache/ignite/internal/IgnitionEx.java  |  69 +-
 .../ignite/internal/MappingStoreTask.java       |  59 ++
 .../internal/MarshallerContextAdapter.java      | 211 ------
 .../ignite/internal/MarshallerContextImpl.java  | 690 +++++++++++++------
 .../internal/MarshallerMappingFileStore.java    | 174 +++++
 .../ignite/internal/MarshallerPlatformIds.java  |  30 +
 .../internal/binary/BinaryClassDescriptor.java  |  13 +
 .../ignite/internal/binary/BinaryContext.java   |  11 +-
 .../internal/binary/BinaryEnumObjectImpl.java   |   4 +-
 .../internal/binary/BinaryFieldAccessor.java    |  23 +
 .../internal/binary/BinaryMarshaller.java       |   1 -
 .../binary/BinaryMetadataCollector.java         |  11 +
 .../internal/binary/BinaryObjectImpl.java       |   9 +
 .../binary/BinaryObjectOffheapImpl.java         |   9 +
 .../internal/binary/BinaryReaderExImpl.java     |  58 ++
 .../binary/BinarySerializedFieldComparator.java |   3 +
 .../ignite/internal/binary/BinaryUtils.java     | 130 +++-
 .../ignite/internal/binary/BinaryWriteMode.java |   6 +
 .../internal/binary/BinaryWriterExImpl.java     |  80 ++-
 .../internal/binary/GridBinaryMarshaller.java   |   6 +
 .../binary/builder/BinaryBuilderReader.java     |  37 +
 .../GridClientOptimizedMarshaller.java          |  16 +-
 .../impl/GridRouterCommandLineStartup.java      |   4 +-
 .../cluster/ClusterNodeLocalMapImpl.java        |   1 -
 .../internal/igfs/common/IgfsMarshaller.java    |   4 +-
 .../internal/jdbc2/JdbcSqlFieldsQuery.java      |   1 -
 .../ignite/internal/jdbc2/JdbcStatement.java    |   2 -
 .../internal/managers/GridManagerAdapter.java   |  19 +-
 .../managers/communication/GridIoManager.java   |   6 +-
 .../communication/GridIoMessageFactory.java     |  12 +
 .../managers/communication/GridIoPolicy.java    |  10 +-
 .../discovery/GridDiscoveryManager.java         |  85 ++-
 .../internal/mxbean/IgniteStandardMXBean.java   |  12 +-
 .../processors/GridProcessorAdapter.java        |  21 +-
 .../cache/CacheEvictableEntryImpl.java          |   4 +-
 .../processors/cache/CacheMetricsImpl.java      |   6 +-
 .../internal/processors/cache/CacheType.java    |   8 +-
 .../processors/cache/EntryGetResult.java        |  65 ++
 .../processors/cache/GridCacheAdapter.java      | 195 +++---
 .../cache/GridCacheAffinityManager.java         |  60 +-
 .../processors/cache/GridCacheAtomicFuture.java |   3 +-
 .../processors/cache/GridCacheContext.java      |  21 +-
 .../cache/GridCacheDeploymentManager.java       |   4 +-
 .../processors/cache/GridCacheEntryEx.java      |  40 +-
 .../cache/GridCacheEvictionManager.java         |   6 +-
 .../processors/cache/GridCacheMapEntry.java     | 130 +++-
 .../GridCachePartitionExchangeManager.java      |   2 +-
 .../processors/cache/GridCacheProcessor.java    | 372 ++++++----
 .../processors/cache/GridCacheTtlManager.java   |   3 +-
 .../processors/cache/GridCacheUtils.java        |  36 +-
 .../processors/cache/IgniteCacheProxy.java      |   3 +
 .../processors/cache/QueryCursorImpl.java       |   6 +-
 .../processors/cache/ReaderArguments.java       |  74 ++
 .../cache/affinity/GridCacheAffinityImpl.java   |  16 +-
 .../binary/CacheObjectBinaryProcessorImpl.java  |   2 +-
 .../CacheDataStructuresManager.java             |   2 +-
 .../GridDistributedCacheAdapter.java            |  16 +-
 .../distributed/GridDistributedCacheEntry.java  |   3 -
 .../GridDistributedLockResponse.java            |   1 -
 .../dht/GridClientPartitionTopology.java        |   1 -
 .../dht/GridDhtAssignmentFetchFuture.java       |   3 +-
 .../distributed/dht/GridDhtCacheAdapter.java    |  33 +-
 .../distributed/dht/GridDhtCacheEntry.java      |   2 +-
 .../cache/distributed/dht/GridDhtGetFuture.java |  87 +--
 .../distributed/dht/GridDhtGetSingleFuture.java |  79 +--
 .../distributed/dht/GridDhtLocalPartition.java  | 125 +++-
 .../distributed/dht/GridDhtLockFuture.java      |  35 +-
 .../dht/GridDhtPartitionTopologyImpl.java       |   6 +-
 .../dht/GridDhtTransactionalCacheAdapter.java   |  21 +-
 .../distributed/dht/GridDhtTxFinishFuture.java  |   8 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |   1 -
 .../distributed/dht/GridDhtTxLocalAdapter.java  |  10 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |  13 +-
 .../cache/distributed/dht/GridDhtTxRemote.java  |   2 +-
 .../distributed/dht/GridDhtUnlockRequest.java   |   3 +-
 .../dht/GridPartitionedGetFuture.java           |  13 +-
 .../dht/GridPartitionedSingleGetFuture.java     |  14 +-
 .../GridDhtAtomicAbstractUpdateFuture.java      |   2 +-
 .../dht/atomic/GridDhtAtomicCache.java          |  34 +-
 .../atomic/GridNearAtomicFullUpdateRequest.java |   1 -
 .../GridNearAtomicSingleUpdateFuture.java       |   2 +-
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |   4 +-
 .../dht/colocated/GridDhtColocatedCache.java    |  26 +-
 .../colocated/GridDhtColocatedLockFuture.java   |  64 +-
 .../dht/preloader/GridDhtForceKeysFuture.java   |   8 +-
 .../dht/preloader/GridDhtPartitionDemander.java |  16 +-
 .../dht/preloader/GridDhtPartitionMap2.java     |   3 +-
 .../dht/preloader/GridDhtPartitionSupplier.java |   2 +-
 .../GridDhtPartitionsExchangeFuture.java        |  51 +-
 .../dht/preloader/GridDhtPreloader.java         |   4 +-
 .../distributed/near/GridNearAtomicCache.java   |   3 +-
 .../distributed/near/GridNearCacheEntry.java    |   6 +-
 .../distributed/near/GridNearGetFuture.java     |  31 +-
 .../distributed/near/GridNearGetRequest.java    |  29 +-
 .../distributed/near/GridNearLockFuture.java    |   9 +-
 .../distributed/near/GridNearLockRequest.java   |  81 ++-
 ...arOptimisticSerializableTxPrepareFuture.java |   4 +-
 .../near/GridNearOptimisticTxPrepareFuture.java |  13 +-
 ...ridNearOptimisticTxPrepareFutureAdapter.java |  13 +
 .../GridNearPessimisticTxPrepareFuture.java     |   2 +-
 .../near/GridNearSingleGetRequest.java          |  57 +-
 .../near/GridNearTransactionalCache.java        |   8 +-
 .../near/GridNearTxFinishFuture.java            |  15 +-
 .../cache/distributed/near/GridNearTxLocal.java |  17 +-
 .../processors/cache/local/GridLocalCache.java  |   1 +
 .../local/atomic/GridLocalAtomicCache.java      |  12 +-
 .../processors/cache/query/CacheQuery.java      |   1 -
 .../cache/query/GridCacheQueryAdapter.java      |   8 +
 .../cache/query/GridCacheQueryManager.java      | 105 ++-
 .../cache/query/GridCacheSqlQuery.java          |   1 -
 .../continuous/CacheContinuousQueryHandler.java | 101 ++-
 .../continuous/CacheContinuousQueryManager.java |   2 +-
 .../cache/transactions/IgniteTxAdapter.java     |   4 +-
 .../cache/transactions/IgniteTxEntry.java       |   2 +-
 .../cache/transactions/IgniteTxHandler.java     |  16 +-
 .../transactions/IgniteTxLocalAdapter.java      | 101 ++-
 .../cache/transactions/IgniteTxLocalEx.java     |   3 +
 .../cache/transactions/IgniteTxManager.java     |   3 +-
 .../cache/transactions/TxDeadlockDetection.java |   2 +-
 .../cache/transactions/TxEntryValueHolder.java  |   6 +-
 .../IgniteCacheObjectProcessorImpl.java         |   2 +-
 .../processors/clock/GridClockServer.java       |   4 +-
 .../processors/cluster/ClusterProcessor.java    |  53 +-
 .../cluster/GridClusterStateProcessor.java      |  22 +-
 .../continuous/GridContinuousHandler.java       |   5 +
 .../continuous/GridContinuousProcessor.java     | 147 ++--
 .../datastreamer/DataStreamProcessor.java       |   2 +-
 .../datastreamer/DataStreamerImpl.java          |   6 +-
 .../datastructures/GridCacheSetImpl.java        |   2 +-
 .../datastructures/GridSetQueryPredicate.java   |   2 +-
 .../processors/hadoop/HadoopClasspathUtils.java |   4 +-
 .../processors/hadoop/HadoopDefaultJobInfo.java |   5 +-
 .../processors/hadoop/HadoopTaskContext.java    |  10 +
 .../internal/processors/igfs/IgfsFileImpl.java  |   5 +-
 .../internal/processors/igfs/IgfsProcessor.java |   2 +-
 .../internal/processors/igfs/IgfsUtils.java     | 105 +++
 .../igfs/client/IgfsClientSizeCallable.java     |   1 -
 .../processors/job/GridJobProcessor.java        |   2 +-
 .../internal/processors/job/GridJobWorker.java  |   4 +
 .../marshaller/ClientRequestFuture.java         | 183 +++++
 .../GridMarshallerMappingProcessor.java         | 363 ++++++++++
 .../processors/marshaller/MappedName.java       |  63 ++
 .../marshaller/MappingAcceptedMessage.java      |  71 ++
 .../marshaller/MappingExchangeResult.java       |  96 +++
 .../marshaller/MappingProposedMessage.java      | 137 ++++
 .../marshaller/MappingUpdatedListener.java      |  29 +
 .../marshaller/MarshallerMappingItem.java       |  99 +++
 .../marshaller/MarshallerMappingTransport.java  | 212 ++++++
 .../MissingMappingRequestMessage.java           | 146 ++++
 .../MissingMappingResponseMessage.java          | 169 +++++
 .../internal/processors/odbc/IgniteTypes.java   |  69 ++
 .../processors/odbc/OdbcRequestHandler.java     |   2 +
 .../internal/processors/odbc/OdbcTypes.java     | 131 ++++
 .../internal/processors/odbc/OdbcUtils.java     |  85 +++
 .../processors/odbc/escape/OdbcEscapeUtils.java |  52 +-
 .../platform/PlatformAbstractBootstrap.java     |   3 +-
 .../platform/PlatformConfigurationEx.java       |   3 +-
 .../platform/PlatformNoopProcessor.java         |   5 +
 .../platform/PlatformPluginExtension.java       |  39 ++
 .../processors/platform/PlatformProcessor.java  |   7 +
 .../platform/PlatformProcessorImpl.java         |  71 +-
 .../platform/cache/PlatformCache.java           |  23 +-
 .../cache/PlatformCacheEntryProcessorImpl.java  |   6 +-
 .../callback/PlatformCallbackGateway.java       |  96 +++
 .../platform/callback/PlatformCallbackOp.java   |  18 +
 .../plugin/PlatformPluginProcessor.java         |  46 ++
 .../cache/PlatformCachePluginConfiguration.java |  58 ++
 .../cache/PlatformCachePluginProvider.java      | 123 ++++
 .../transactions/PlatformTransactions.java      |   9 +
 .../utils/PlatformConfigurationUtils.java       |  51 +-
 .../platform/utils/PlatformUtils.java           |  58 +-
 .../processors/plugin/CachePluginManager.java   |  20 +-
 .../plugin/IgnitePluginProcessor.java           |  84 ++-
 .../internal/processors/pool/PoolProcessor.java |  10 +-
 .../processors/query/GridQueryIndexing.java     |   4 +-
 .../processors/query/GridQueryProcessor.java    | 182 ++---
 .../processors/query/GridQueryProperty.java     |  21 +-
 .../query/GridQueryTypeDescriptor.java          |   7 +
 .../resource/GridResourceProcessor.java         |   1 +
 .../handlers/cache/GridCacheCommandHandler.java |   2 -
 .../string/GridRedisSetCommandHandler.java      |   2 +-
 .../service/GridServiceProcessor.java           |  11 +-
 .../processors/task/GridTaskWorker.java         |   2 +-
 .../suggestions/GridPerformanceSuggestions.java | 105 +++
 .../JvmConfigurationSuggestions.java            | 104 +++
 .../suggestions/OsConfigurationSuggestions.java | 127 ++++
 .../internal/suggestions/package-info.java      |  21 +
 .../internal/util/GridStripedSpinBusyLock.java  |   2 +-
 .../ignite/internal/util/HostAndPortRange.java  |   2 +-
 .../ignite/internal/util/IgniteUtils.java       |  85 +--
 .../ignite/internal/util/StripedExecutor.java   |   2 +-
 .../ignite/lang/IgniteProductVersion.java       |   2 +-
 .../ignite/marshaller/MarshallerContext.java    |  23 +-
 .../ignite/marshaller/jdk/JdkMarshaller.java    |   1 -
 .../optimized/OptimizedClassDescriptor.java     |   2 +-
 .../optimized/OptimizedMarshallerUtils.java     |  16 +-
 .../ignite/plugin/CachePluginContext.java       |   5 +
 .../apache/ignite/plugin/PluginProvider.java    |  11 +-
 .../communication/tcp/TcpCommunicationSpi.java  |  18 +-
 .../tcp/TcpCommunicationSpiMBean.java           |   1 -
 .../ignite/spi/discovery/DiscoveryDataBag.java  | 299 ++++++++
 .../spi/discovery/DiscoverySpiDataExchange.java |  15 +-
 .../ignite/spi/discovery/tcp/ClientImpl.java    | 120 +++-
 .../ignite/spi/discovery/tcp/ServerImpl.java    | 167 ++---
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  70 +-
 .../tcp/internal/DiscoveryDataPacket.java       | 345 ++++++++++
 .../tcp/internal/TcpDiscoveryStatistics.java    |   8 +-
 .../messages/TcpDiscoveryAbstractMessage.java   |  21 +
 .../TcpDiscoveryJoinRequestMessage.java         |  18 +-
 .../TcpDiscoveryNodeAddFinishedMessage.java     |  10 +-
 .../messages/TcpDiscoveryNodeAddedMessage.java  |  78 +--
 modules/core/src/test/config/log4j-test.xml     |   6 +
 .../org.apache.ignite.plugin.PluginProvider     |   1 +
 .../CacheJdbcPojoStoreAbstractSelfTest.java     |  21 +-
 ...eJdbcStoreAbstractMultithreadedSelfTest.java |  17 +-
 .../ignite/cache/store/jdbc/model/Gender.java   |  41 ++
 .../ignite/cache/store/jdbc/model/Person.java   |  31 +-
 .../internal/ClusterGroupHostsSelfTest.java     |   6 +-
 .../ComputeJobCancelWithServiceSelfTest.java    |   2 +-
 .../ignite/internal/GridAffinitySelfTest.java   |   2 +-
 .../internal/GridContinuousTaskSelfTest.java    |  83 ++-
 .../GridEventStorageCheckAllEventsSelfTest.java |   2 +-
 .../IgniteClientReconnectApiExceptionTest.java  |   6 +-
 ...niteClientReconnectFailoverAbstractTest.java |   4 +-
 .../MarshallerContextLockingSelfTest.java       |  67 +-
 .../binary/BinaryMarshallerSelfTest.java        | 109 ++-
 ...GridBinaryMarshallerCtxDisabledSelfTest.java |  42 +-
 .../GridDiscoveryManagerAliveCacheSelfTest.java |   3 +-
 .../GridDiscoveryManagerAttributesSelfTest.java |   4 +-
 .../cache/CacheAffinityCallSelfTest.java        |   8 +-
 .../cache/CacheConcurrentReadThroughTest.java   | 184 +++++
 .../cache/CacheDeferredDeleteQueueTest.java     | 134 ++++
 .../cache/CacheGetEntryAbstractTest.java        |   2 +-
 .../CacheSerializableTransactionsTest.java      |   6 +-
 .../CacheStartupInDeploymentModesTest.java      |   7 +-
 .../cache/CacheStopAndDestroySelfTest.java      |   6 +-
 .../cache/GridCacheAbstractFullApiSelfTest.java |   6 +-
 .../cache/GridCacheEntryMemorySizeSelfTest.java |   8 +-
 .../cache/GridCacheMvccPartitionedSelfTest.java |  48 +-
 .../processors/cache/GridCacheMvccSelfTest.java | 208 +++---
 .../processors/cache/GridCacheStopSelfTest.java |   4 +-
 .../processors/cache/GridCacheTestEntryEx.java  |  32 +-
 .../cache/GridCacheUtilsSelfTest.java           |   2 +-
 ...ProjectionForCachesOnDaemonNodeSelfTest.java |   8 +-
 .../IgniteCacheConfigVariationsFullApiTest.java |   8 +-
 .../cache/IgniteCachePeekModesAbstractTest.java |   4 +-
 .../cache/IgniteCacheStoreCollectionTest.java   |   1 -
 .../cache/IgniteInternalCacheTypesTest.java     |  11 -
 ...iteMarshallerCacheClassNameConflictTest.java | 277 ++++++++
 ...lerCacheClientRequestsMappingOnMissTest.java | 341 +++++++++
 .../cache/IgniteSystemCacheOnClientTest.java    |  23 +-
 ...gniteTopologyValidatorAbstractCacheTest.java |   6 +-
 .../processors/cache/IgniteTxAbstractTest.java  |   3 +-
 .../cache/IgniteTxConfigCacheSelfTest.java      |   2 +-
 .../IgniteTxExceptionAbstractSelfTest.java      |   3 +-
 .../IgniteTxMultiThreadedAbstractTest.java      |   4 +-
 .../CacheKeepBinaryWithInterceptorTest.java     |   1 -
 .../GridBinaryCacheEntryMemorySizeSelfTest.java |  21 +-
 ...yAtomicEntryProcessorDeploymentSelfTest.java |   4 +-
 ...IgniteCacheAbstractExecutionContextTest.java |   2 -
 ...eAbstractDataStructuresFailoverSelfTest.java |  16 +-
 ...actQueueFailoverDataConsistencySelfTest.java |   2 +-
 ...CacheAtomicReferenceApiSelfAbstractTest.java |  60 +-
 ...idCacheAtomicStampedApiSelfAbstractTest.java |  59 ++
 .../GridCacheQueueApiSelfAbstractTest.java      |  58 ++
 .../GridCacheSetAbstractSelfTest.java           |  53 ++
 .../IgniteAtomicLongApiAbstractSelfTest.java    |  27 +
 .../IgniteCountDownLatchAbstractSelfTest.java   |  43 ++
 .../IgniteLockAbstractSelfTest.java             |  78 ++-
 .../IgniteSemaphoreAbstractSelfTest.java        |  52 +-
 .../CacheGetFutureHangsSelfTest.java            |   6 +-
 .../CacheLateAffinityAssignmentTest.java        |   2 +-
 ...ridCachePartitionNotLoadedEventSelfTest.java |   4 +-
 ...niteCacheClientNodeChangingTopologyTest.java |  20 +-
 .../IgniteCacheSystemTransactionsSelfTest.java  |  18 +-
 ...teSynchronizationModesMultithreadedTest.java |   8 +-
 .../IgniteCacheCrossCacheTxFailoverTest.java    |   6 +-
 ...ePrimaryNodeFailureRecoveryAbstractTest.java |   4 +-
 ...gniteCachePutRetryTransactionalSelfTest.java |   4 +-
 ...eAtomicInvalidPartitionHandlingSelfTest.java |  11 +-
 ...idCacheNearOnlyMultiNodeFullApiSelfTest.java |   4 +-
 ...achePartitionedMultiNodeFullApiSelfTest.java |   8 +-
 .../near/GridNearCacheStoreUpdateTest.java      | 466 +++++++++++++
 .../GridNearOffheapCacheStoreUpdateTest.java    |  35 +
 .../GridCacheReplicatedNodeRestartSelfTest.java |   3 +-
 .../GridCacheReplicatedPreloadSelfTest.java     |   1 -
 .../IgniteCacheExpiryPolicyAbstractTest.java    |   2 +-
 ...eCacheExpiryPolicyWithStoreAbstractTest.java | 100 ++-
 .../IgniteCacheTxExpiryPolicyWithStoreTest.java |  21 +
 .../IgniteCacheQueryCacheDestroySelfTest.java   | 142 ++++
 .../cache/query/IndexingSpiQuerySelfTest.java   |  69 +-
 .../IndexingSpiQueryWithH2IndexingSelfTest.java |  36 +
 ...ContinuousQueryFailoverAbstractSelfTest.java |   6 +-
 .../ClientReconnectContinuousQueryTest.java     | 201 ++++++
 ...ridCacheContinuousQueryAbstractSelfTest.java |   2 +-
 ...dCacheContinuousQueryNodesFilteringTest.java |   2 +-
 ...IgniteCacheContinuousQueryReconnectTest.java |  12 +-
 .../TxDeadlockDetectionNoHangsTest.java         |   2 +-
 .../transactions/TxDeadlockDetectionTest.java   |   2 +-
 .../TxOptimisticDeadlockDetectionTest.java      |   2 +-
 .../TxPessimisticDeadlockDetectionTest.java     |   2 +-
 ...ComputeJobExecutionErrorToLogManualTest.java |   4 +-
 .../datastreamer/DataStreamerImplSelfTest.java  |   8 +-
 .../datastreamer/DataStreamerTimeoutTest.java   |   6 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   |  32 +-
 .../processors/igfs/IgfsFileInfoSelfTest.java   |   4 +-
 .../igfs/IgfsMetaManagerSelfTest.java           |   3 +-
 .../igfs/IgfsModeResolverSelfTest.java          |  10 +-
 .../processors/igfs/IgfsTaskSelfTest.java       |  87 +--
 .../igfs/benchmark/IgfsBenchmark.java           |   4 +-
 .../odbc/OdbcEscapeSequenceSelfTest.java        | 131 ++++
 .../cache/GridCacheCommandHandlerSelfTest.java  |   1 -
 ...rviceDeploymentExceptionPropagationTest.java |   2 +-
 .../GridServiceProcessorStopSelfTest.java       |   2 +-
 .../service/IgniteServiceReassignmentTest.java  |   2 +-
 .../internal/util/IgniteUtilsSelfTest.java      |  71 +-
 .../unsafe/GridOffheapSnapTreeSelfTest.java     |   7 +-
 .../lang/GridMetadataAwareAdapterSelfTest.java  |   4 +-
 .../marshaller/MarshallerContextSelfTest.java   | 150 +++-
 .../marshaller/MarshallerContextTestImpl.java   |  33 +-
 .../OptimizedMarshallerEnumSelfTest.java        |  25 +-
 .../p2p/GridP2PSameClassLoaderSelfTest.java     |  14 +-
 .../platform/PlatformComputeEchoTask.java       |  12 +
 .../platform/PlatformEventsWriteEventTask.java  |   9 -
 .../ignite/platform/PlatformExceptionTask.java  |  78 +++
 .../platform/plugin/PlatformTestPlugin.java     |  27 +
 .../plugin/PlatformTestPluginExtension.java     |  51 ++
 .../plugin/PlatformTestPluginProvider.java      |  97 +++
 .../plugin/PlatformTestPluginTarget.java        |  90 +++
 .../tcp/TcpCommunicationSpiDropNodesTest.java   | 322 +++++++++
 .../TcpCommunicationSpiFaultyClientTest.java    | 265 +++++++
 .../local/GridLocalDeploymentSpiSelfTest.java   |   6 +-
 .../discovery/AbstractDiscoverySelfTest.java    |   7 +-
 ...lientDiscoverySpiFailureTimeoutSelfTest.java |   4 +-
 .../spi/discovery/tcp/TcpDiscoverySelfTest.java | 111 ++-
 .../TcpDiscoverySpiFailureTimeoutSelfTest.java  |  14 +-
 .../tcp/TcpDiscoverySpiStartStopSelfTest.java   |  11 +-
 .../startup/GridRandomCommandLineLoader.java    |   2 +-
 .../testframework/GridSpiTestContext.java       |   5 +-
 .../ignite/testframework/GridTestNode.java      |   1 +
 .../ignite/testframework/IgniteTestSuite.java   |   2 +-
 .../testframework/junits/GridAbstractTest.java  |  15 +-
 .../junits/spi/GridSpiAbstractTest.java         |   9 +-
 .../testsuites/IgniteBinaryBasicTestSuite.java  |   5 +
 .../IgniteCacheDataStructuresSelfTestSuite.java |   2 -
 .../ignite/testsuites/IgniteCacheTestSuite.java |   2 +
 .../testsuites/IgniteCacheTestSuite2.java       |   7 +
 ...essagingConfigVariationFullApiTestSuite.java |   4 +-
 .../IgniteSpiCommunicationSelfTestSuite.java    |   5 +
 .../IgniteSpiDiscoverySelfTestSuite.java        |   2 +-
 .../ignite/thread/IgniteThreadPoolSizeTest.java |   8 -
 .../ignite/util/mbeans/GridMBeanSelfTest.java   |  10 +-
 .../CacheNoValueClassOnServerTestClient.java    |   3 +-
 .../CacheConfigurationP2PTestClient.java        |   3 +-
 .../gce/TcpDiscoveryGoogleStorageIpFinder.java  |   4 +-
 .../io/BytesWritablePartiallyRawComparator.java |  51 ++
 .../hadoop/io/TextPartiallyRawComparator.java   |  68 +-
 .../hadoop/igfs/HadoopIgfsEndpoint.java         |   4 +-
 .../processors/hadoop/impl/HadoopUtils.java     |  66 ++
 .../HadoopBasicFileSystemFactoryDelegate.java   |   2 +-
 .../hadoop/impl/igfs/HadoopIgfsInProc.java      |  40 +-
 .../hadoop/impl/v1/HadoopV1MapTask.java         |  89 ++-
 .../hadoop/impl/v1/HadoopV1ReduceTask.java      |  69 +-
 .../hadoop/impl/v2/HadoopV2Context.java         |  12 +-
 .../hadoop/impl/v2/HadoopV2MapTask.java         |  18 +-
 .../hadoop/impl/v2/HadoopV2ReduceTask.java      |  14 +
 .../hadoop/impl/v2/HadoopV2TaskContext.java     |  12 +-
 .../hadoop/shuffle/HadoopShuffleJob.java        |   7 -
 .../shuffle/direct/HadoopDirectDataInput.java   |   2 +-
 .../taskexecutor/HadoopExecutorService.java     |   6 +-
 .../hadoop/taskexecutor/HadoopRunnableTask.java |  12 +-
 .../child/HadoopChildProcessRunner.java         |  10 +-
 .../impl/HadoopAbstractMapReduceTest.java       |   2 +
 .../hadoop/impl/HadoopErrorSimulator.java       |  12 +-
 .../impl/HadoopMapReduceEmbeddedSelfTest.java   |   6 +-
 .../HadoopIgfs20FileSystemAbstractSelfTest.java |   3 +-
 .../IgniteHadoopFileSystemClientSelfTest.java   |   6 +-
 .../query/h2/DmlStatementsProcessor.java        |  69 +-
 .../query/h2/GridH2ResultSetIterator.java       |   3 +-
 .../processors/query/h2/IgniteH2Indexing.java   |  44 +-
 .../query/h2/dml/UpdatePlanBuilder.java         | 105 ++-
 .../query/h2/opt/GridH2IndexBase.java           |  23 +-
 .../processors/query/h2/sql/DmlAstUtils.java    |   2 +-
 .../query/h2/twostep/GridMapQueryExecutor.java  |   8 +-
 .../h2/twostep/GridReduceQueryExecutor.java     |   9 +-
 .../query/h2/twostep/msg/GridH2Geometry.java    |   2 +-
 .../cache/BinarySerializationQuerySelfTest.java |   2 -
 .../CacheRandomOperationsMultithreadedTest.java |   4 +-
 ...CacheScanPartitionQueryFallbackSelfTest.java |   2 +-
 .../ClientReconnectAfterClusterRestartTest.java |   4 +-
 .../GridCacheQueryIndexDisabledSelfTest.java    |  20 +-
 ...niteCacheAbstractInsertSqlQuerySelfTest.java |   4 +
 .../cache/IgniteCacheAbstractQuerySelfTest.java | 271 +++++++-
 .../IgniteCacheAbstractSqlDmlQuerySelfTest.java |   2 +-
 .../IgniteCacheInsertSqlQuerySelfTest.java      |  22 +
 ...eLockPartitionOnAffinityRunAbstractTest.java |   1 -
 ...PartitionOnAffinityRunAtomicCacheOpTest.java |  11 +-
 ...niteCacheLockPartitionOnAffinityRunTest.java |  50 +-
 ...titionOnAffinityRunWithCollisionSpiTest.java |  10 +-
 .../cache/IgniteCacheMergeSqlQuerySelfTest.java |  25 +-
 .../cache/IgniteCacheOffheapEvictQueryTest.java |   4 +-
 ...niteCacheP2pUnmarshallingQueryErrorTest.java |   4 +-
 .../IgniteCacheUpdateSqlQuerySelfTest.java      |  63 +-
 .../cache/QueryEntityCaseMismatchTest.java      | 107 +++
 ...niteCacheDistributedQueryCancelSelfTest.java |   4 +-
 .../IgniteCachePartitionedQuerySelfTest.java    |  85 +++
 .../IgniteCacheQueryNodeRestartSelfTest2.java   |   4 +-
 .../IgniteSqlEntryCacheModeAgnosticTest.java    | 140 ++++
 .../query/IgniteSqlQueryDedicatedPoolTest.java  | 110 +++
 .../query/IgniteSqlSchemaIndexingTest.java      |  17 +-
 .../query/IgniteSqlSplitterSelfTest.java        |   4 +-
 .../h2/GridIndexingSpiAbstractSelfTest.java     |  38 +-
 .../query/h2/sql/GridQueryParsingTest.java      |   4 -
 .../IgniteCacheQuerySelfTestSuite.java          |   8 +
 .../IgniteCacheQuerySelfTestSuite3.java         |   2 +
 .../apache/ignite/stream/jms11/JmsStreamer.java |   4 +-
 .../ignite/stream/kafka/KafkaStreamer.java      |   6 +-
 .../ignite/stream/kafka/TestKafkaBroker.java    |   2 +-
 .../connect/IgniteSourceConnectorTest.java      |   2 +-
 .../stream/mqtt/IgniteMqttStreamerTest.java     |   4 +-
 .../BundleDelegatingClassLoader.java            |   4 +-
 .../classloaders/ContainerSweepClassLoader.java |   4 +-
 modules/platforms/cpp/binary/Makefile.am        |   3 +
 .../platforms/cpp/binary/include/Makefile.am    |   6 +
 .../cpp/binary/include/ignite/binary/binary.h   |  15 +-
 .../binary/binary_array_identity_resolver.h     |  64 ++
 .../ignite/binary/binary_identity_resolver.h    |  61 ++
 .../include/ignite/binary/binary_object.h       |  92 +++
 .../binary/include/ignite/binary/binary_type.h  |  24 +-
 .../include/ignite/impl/binary/binary_common.h  |   6 +
 .../ignite/impl/binary/binary_object_header.h   | 257 +++++++
 .../ignite/impl/binary/binary_object_impl.h     | 162 +++++
 .../ignite/impl/binary/binary_reader_impl.h     |  29 +-
 .../include/ignite/impl/binary/binary_schema.h  |   2 +-
 .../ignite/impl/binary/binary_type_impl.h       | 149 ++++
 .../ignite/impl/binary/binary_type_snapshot.h   |  18 +-
 .../ignite/impl/binary/binary_type_updater.h    |   2 +-
 .../include/ignite/impl/binary/binary_utils.h   | 236 ++-----
 .../ignite/impl/binary/binary_writer_impl.h     |  11 +-
 .../ignite/impl/interop/interop_output_stream.h |  10 +-
 .../cpp/binary/project/vs/binary.vcxproj        |   9 +
 .../binary/project/vs/binary.vcxproj.filters    |  27 +
 .../binary/binary_array_identity_resolver.cpp   |  42 ++
 .../cpp/binary/src/binary/binary_type.cpp       |   4 +-
 .../src/impl/binary/binary_object_header.cpp    |  63 ++
 .../src/impl/binary/binary_object_impl.cpp      | 107 +++
 .../src/impl/binary/binary_type_manager.cpp     |  14 +-
 .../cpp/binary/src/impl/binary/binary_utils.cpp | 169 +++--
 .../src/impl/binary/binary_writer_impl.cpp      |   4 +-
 .../src/impl/interop/interop_output_stream.cpp  |   5 +
 modules/platforms/cpp/common/Makefile.am        |   6 +-
 .../platforms/cpp/common/include/Makefile.am    |   1 +
 .../common/include/ignite/common/concurrent.h   |  29 +-
 .../include/ignite/common/platform_utils.h      |  79 +++
 .../cpp/common/include/ignite/common/utils.h    | 249 +++++--
 .../cpp/common/include/ignite/ignite_error.h    |   2 +-
 .../include/ignite/common/dynamic_load_os.h     | 131 ++++
 .../os/linux/src/common/dynamic_load_os.cpp     |  90 +++
 .../os/linux/src/common/platform_utils.cpp      |  75 ++
 .../cpp/common/os/linux/src/common/utils.cpp    | 136 ----
 .../win/include/ignite/common/dynamic_load_os.h | 133 ++++
 .../os/win/src/common/dynamic_load_os.cpp       | 115 ++++
 .../common/os/win/src/common/platform_utils.cpp |  80 +++
 .../cpp/common/os/win/src/common/utils.cpp      | 142 ----
 .../cpp/common/project/vs/common.vcxproj        |   6 +-
 .../common/project/vs/common.vcxproj.filters    |  18 +-
 .../platforms/cpp/common/src/common/utils.cpp   | 154 +++++
 .../platforms/cpp/common/src/ignite_error.cpp   |  68 +-
 modules/platforms/cpp/core-test/Makefile.am     |  10 +-
 .../cpp/core-test/config/cache-identity.xml     | 121 ++++
 .../cpp/core-test/config/cache-query.xml        |  10 -
 .../core-test/include/ignite/binary_test_defs.h | 131 +++-
 .../cpp/core-test/include/ignite/complex_type.h | 135 ++++
 .../cpp/core-test/include/ignite/test_type.h    | 186 +++++
 .../cpp/core-test/include/ignite/test_utils.h   |  63 ++
 .../cpp/core-test/project/vs/core-test.vcxproj  |   9 +
 .../project/vs/core-test.vcxproj.filters        |  35 +-
 .../src/binary_identity_resolver_test.cpp       | 522 ++++++++++++++
 .../cpp/core-test/src/binary_object_test.cpp    | 282 ++++++++
 .../src/binary_reader_writer_raw_test.cpp       |  23 +-
 .../cpp/core-test/src/binary_session_test.cpp   |   4 +-
 .../cpp/core-test/src/cache_invoke_test.cpp     | 553 +++++++++++++++
 .../cpp/core-test/src/cache_query_test.cpp      | 149 ++--
 .../platforms/cpp/core-test/src/cache_test.cpp  |  48 +-
 .../cpp/core-test/src/cluster_test.cpp          |  98 +++
 .../cpp/core-test/src/continuous_query_test.cpp |  31 +-
 .../cpp/core-test/src/ignition_test.cpp         |  19 +-
 .../cpp/core-test/src/interop_memory_test.cpp   |   3 +-
 .../cpp/core-test/src/interop_test.cpp          |  42 +-
 .../platforms/cpp/core-test/src/test_utils.cpp  |  79 +++
 .../cpp/core-test/src/transactions_test.cpp     |  23 +-
 modules/platforms/cpp/core/Makefile.am          |   1 +
 modules/platforms/cpp/core/include/Makefile.am  |   8 +
 .../cpp/core/include/ignite/cache/cache.h       | 217 ++++--
 .../ignite/cache/cache_entry_processor.h        | 111 +++
 .../include/ignite/cache/mutable_cache_entry.h  | 176 +++++
 .../include/ignite/cache/query/query_cursor.h   |   2 +-
 .../platforms/cpp/core/include/ignite/ignite.h  |  18 +
 .../cpp/core/include/ignite/ignite_binding.h    | 119 ++++
 .../include/ignite/ignite_binding_context.h     |  88 +++
 .../core/include/ignite/ignite_configuration.h  |   2 -
 .../impl/binary/binary_type_updater_impl.h      |   2 +-
 .../impl/cache/cache_entry_processor_holder.h   | 282 ++++++++
 .../core/include/ignite/impl/cache/cache_impl.h |  71 +-
 .../ignite/impl/cluster/cluster_group_impl.h    |  77 +++
 .../include/ignite/impl/ignite_binding_impl.h   | 121 ++++
 .../include/ignite/impl/ignite_environment.h    |  61 +-
 .../cpp/core/include/ignite/impl/ignite_impl.h  |  50 +-
 .../ignite/impl/interop/interop_target.h        |  37 +-
 .../core/include/ignite/impl/module_manager.h   | 131 ++++
 .../cpp/core/include/ignite/impl/operations.h   |  62 +-
 .../platforms/cpp/core/project/vs/core.vcxproj  |   9 +
 .../cpp/core/project/vs/core.vcxproj.filters    |  30 +
 modules/platforms/cpp/core/src/ignite.cpp       |  12 +-
 modules/platforms/cpp/core/src/ignition.cpp     | 343 +++++----
 .../impl/binary/binary_type_updater_impl.cpp    |   2 +-
 .../cpp/core/src/impl/cache/cache_impl.cpp      |  66 +-
 .../continuous/continuous_query_handle_impl.cpp |   2 +-
 .../core/src/impl/cache/query/query_impl.cpp    |   8 +-
 .../src/impl/cluster/cluster_group_impl.cpp     |  64 ++
 .../cpp/core/src/impl/ignite_environment.cpp    |  92 ++-
 .../platforms/cpp/core/src/impl/ignite_impl.cpp |  36 +-
 .../core/src/impl/interop/interop_target.cpp    |  49 +-
 .../src/impl/transactions/transactions_impl.cpp |  14 +-
 .../cpp/jni/include/ignite/jni/exports.h        |   1 +
 .../platforms/cpp/jni/include/ignite/jni/java.h |   4 +-
 .../cpp/jni/include/ignite/jni/utils.h          |  69 +-
 .../platforms/cpp/jni/os/linux/src/utils.cpp    | 221 +++---
 modules/platforms/cpp/jni/os/win/src/utils.cpp  | 227 +++---
 modules/platforms/cpp/jni/project/vs/module.def |   1 +
 modules/platforms/cpp/jni/src/exports.cpp       |   4 +
 modules/platforms/cpp/jni/src/java.cpp          |  66 +-
 modules/platforms/cpp/odbc-test/Makefile.am     |   1 +
 .../odbc-test/include/sql_test_suite_fixture.h  |  13 +
 .../cpp/odbc-test/include/test_utils.h          |  51 +-
 .../cpp/odbc-test/project/vs/odbc-test.vcxproj  |   1 +
 .../project/vs/odbc-test.vcxproj.filters        |   3 +
 .../cpp/odbc-test/src/api_robustness_test.cpp   |  37 +-
 .../src/application_data_buffer_test.cpp        |  24 +-
 .../cpp/odbc-test/src/queries_test.cpp          |  71 +-
 .../src/sql_aggregate_functions_test.cpp        |   5 +-
 .../src/sql_date_time_functions_test.cpp        |  26 +-
 .../src/sql_esc_convert_function_test.cpp       | 160 +++++
 .../src/sql_numeric_functions_test.cpp          |   1 +
 .../cpp/odbc-test/src/sql_outer_join_test.cpp   |   1 +
 .../odbc-test/src/sql_string_functions_test.cpp |   1 +
 .../odbc-test/src/sql_test_suite_fixture.cpp    |  88 ++-
 .../cpp/odbc-test/src/sql_types_test.cpp        | 131 +++-
 .../platforms/cpp/odbc-test/src/test_utils.cpp  |  60 +-
 .../odbc/src/app/application_data_buffer.cpp    |  66 +-
 .../platforms/cpp/odbc/src/app/parameter.cpp    |   4 +-
 .../cpp/odbc/src/config/connection_info.cpp     | 260 ++++++-
 modules/platforms/cpp/odbc/src/utility.cpp      |  17 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Apache.Ignite.AspNet.nuspec                 |   2 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Apache.Ignite.Core.Tests.csproj             |   9 +
 .../Binary/BinaryBuilderSelfTest.cs             |  20 +-
 .../Binary/BinaryStructureTest.cs               | 122 ++++
 .../Cache/CacheAbstractTest.cs                  |  21 +
 .../Cache/CacheAbstractTransactionalTest.cs     | 339 +++++++++
 .../Cache/CacheConfigurationTest.cs             |  13 +-
 .../Cache/Query/CacheLinqTest.cs                |  96 +++
 .../Cache/Store/CacheParallelLoadStoreTest.cs   |   9 +-
 .../Cache/Store/CacheStoreSessionTest.cs        |  22 +-
 .../Cache/Store/CacheStoreTest.cs               | 363 ++++++----
 .../Cache/Store/CacheTestStore.cs               |  14 +
 .../Cache/Store/NamedNodeCacheStoreTest.cs      |  34 +
 .../Compute/ComputeApiTest.cs                   |  66 +-
 .../Apache.Ignite.Core.Tests/ExceptionsTest.cs  |  66 ++
 .../IgniteConfigurationSerializerTest.cs        |  25 +-
 .../IgniteConfigurationTest.cs                  |  13 +-
 .../Plugin/Cache/CachePlugin.cs                 | 127 ++++
 .../Plugin/Cache/CachePluginConfiguration.cs    |  40 ++
 .../Plugin/Cache/CachePluginTest.cs             | 215 ++++++
 .../Plugin/PluginTest.cs                        | 254 +++++++
 .../Plugin/TestIgnitePlugin.cs                  |  39 ++
 .../Plugin/TestIgnitePluginConfiguration.cs     |  33 +
 .../Plugin/TestIgnitePluginProvider.cs          | 132 ++++
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Apache.Ignite.Core.Schema.nuspec            |   2 +-
 .../Apache.Ignite.Core.csproj                   |  20 +
 .../Apache.Ignite.Core.nuspec                   |   2 +-
 .../Cache/Configuration/CacheConfiguration.cs   |  34 +
 .../Cache/Configuration/QueryEntity.cs          |   2 +-
 .../dotnet/Apache.Ignite.Core/Cache/ICache.cs   |   4 +-
 .../Apache.Ignite.Core/Common/JavaException.cs  |  62 +-
 .../Communication/Tcp/TcpCommunicationSpi.cs    |   2 +-
 .../Discovery/Tcp/TcpDiscoverySpi.cs            |   2 +-
 .../dotnet/Apache.Ignite.Core/IIgnite.cs        |  10 +
 .../Apache.Ignite.Core/IgniteConfiguration.cs   |  26 +-
 .../IgniteConfigurationSection.xsd              |  42 ++
 .../Impl/Binary/BinaryObjectBuilder.cs          |   2 +-
 .../Impl/Binary/BinaryReader.cs                 | 137 ++--
 .../Impl/Binary/BinarySystemHandlers.cs         |  14 +-
 .../Impl/Binary/BinaryUtils.cs                  |  44 +-
 .../Impl/Binary/BinaryWriter.cs                 |   6 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs  | 104 ++-
 .../Common/IgniteConfigurationXmlSerializer.cs  |   3 +
 .../Apache.Ignite.Core/Impl/ExceptionUtils.cs   |  10 +-
 .../dotnet/Apache.Ignite.Core/Impl/Ignite.cs    |  26 +-
 .../Apache.Ignite.Core/Impl/IgniteProxy.cs      |   6 +
 .../Apache.Ignite.Core/Impl/PlatformTarget.cs   |  70 +-
 .../Impl/Plugin/Cache/CachePluginContext.cs     |  82 +++
 .../Impl/Plugin/Cache/CachePluginProcessor.cs   |  77 +++
 .../Plugin/Cache/CachePluginProviderProxy.cs    |  75 ++
 .../Plugin/Cache/ICachePluginProviderProxy.cs   |  52 ++
 .../Impl/Plugin/IPluginProviderProxy.cs         |  74 ++
 .../Impl/Plugin/PluginContext.cs                |  72 ++
 .../Impl/Plugin/PluginProcessor.cs              | 235 +++++++
 .../Impl/Plugin/PluginProviderProxy.cs          |  90 +++
 .../Transactions/CacheTransactionManager.cs     | 161 +++++
 .../Impl/Transactions/Transaction.cs            |   8 +
 .../Impl/Transactions/TransactionImpl.cs        |  13 +
 .../Impl/Transactions/TransactionsImpl.cs       |  10 +
 .../Impl/Unmanaged/IgniteJniNativeMethods.cs    |   3 +
 .../Impl/Unmanaged/UnmanagedCallbackOp.cs       |   8 +-
 .../Impl/Unmanaged/UnmanagedCallbacks.cs        |  88 ++-
 .../Impl/Unmanaged/UnmanagedUtils.cs            |   7 +
 .../Interop/IPlatformTarget.cs                  |  91 +++
 .../Cache/CachePluginProviderTypeAttribute.cs   |  52 ++
 .../Plugin/Cache/ICachePluginConfiguration.cs   |  50 ++
 .../Plugin/Cache/ICachePluginContext.cs         |  47 ++
 .../Plugin/Cache/ICachePluginProvider.cs        |  52 ++
 .../Plugin/IPluginConfiguration.cs              |  48 ++
 .../Apache.Ignite.Core/Plugin/IPluginContext.cs |  52 ++
 .../Plugin/IPluginProvider.cs                   |  69 ++
 .../Plugin/PluginNotFoundException.cs           |  65 ++
 .../Plugin/PluginProviderTypeAttribute.cs       |  52 ++
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Apache.Ignite.EntityFramework.nuspec        |   2 +-
 .../Apache.Ignite.Linq.nuspec                   |   2 +-
 .../Impl/CacheQueryExpressionVisitor.cs         | 127 +++-
 .../Impl/CacheQueryModelVisitor.cs              |   3 +
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Apache.Ignite.Log4Net.nuspec                |   2 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Apache.Ignite.NLog.nuspec                   |   2 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 .../Apache.Ignite/Properties/AssemblyInfo.cs    |   2 +-
 .../Apache.Ignite.Examples.csproj               |   2 +
 .../Datagrid/QueryDmlExample.cs                 | 162 +++++
 .../Datagrid/TransactionExample.cs              |  75 +-
 .../Properties/AssemblyInfo.cs                  |   2 +-
 modules/scalar-2.10/pom.xml                     |   2 +-
 modules/scalar/pom.xml                          |   2 +-
 .../spark/JavaStandaloneIgniteRDDSelfTest.java  |   3 +-
 .../util/spring/IgniteSpringHelperImpl.java     |   8 +-
 .../src/test/config/jdbc-pojo-store-builtin.xml |   8 +
 .../src/test/config/jdbc-pojo-store-obj.xml     |   8 +
 .../ignite/internal/GridFactorySelfTest.java    |   2 +-
 .../internal/IgniteDynamicCacheConfigTest.java  |   4 +-
 .../GridSpringTransactionManagerSelfTest.java   |   2 +-
 .../ignite/tools/classgen/ClassesGenerator.java |   2 +-
 .../twitter/IgniteTwitterStreamerTest.java      |   4 +-
 .../GridUriDeploymentFileProcessorSelfTest.java |   3 +-
 .../scala/org/apache/ignite/visor/visor.scala   | 115 ++--
 .../commands/mem/VisorMemoryCommandSpec.scala   |  33 +
 modules/web-console/backend/app/agent.js        |  56 +-
 modules/web-console/backend/app/browser.js      |  26 +
 modules/web-console/backend/app/mongo.js        |  49 +-
 modules/web-console/backend/app/routes.js       |   5 +-
 .../web-console/backend/routes/activities.js    |  52 ++
 modules/web-console/backend/routes/admin.js     |   2 +-
 modules/web-console/backend/routes/agent.js     |  10 +-
 modules/web-console/backend/routes/public.js    |   1 -
 .../web-console/backend/services/activities.js  | 136 ++++
 modules/web-console/backend/services/users.js   |  13 +-
 modules/web-console/frontend/app/app.config.js  |   9 +
 modules/web-console/frontend/app/app.js         |  29 +-
 .../activities-user-dialog.controller.js        |  60 ++
 .../activities-user-dialog.jade                 |  36 +
 .../components/activities-user-dialog/index.js  |  36 +
 .../form-field-datepicker.jade                  |  55 ++
 .../form-field-datepicker.scss                  |  20 +
 .../list-of-registered-users/index.js           |  28 +
 .../list-of-registered-users.categories.js      |  30 +
 .../list-of-registered-users.column-defs.js     |  80 +++
 .../list-of-registered-users.controller.js      | 207 ++++++
 .../list-of-registered-users.jade               |  54 ++
 .../ui-grid-header/ui-grid-header.jade          |  27 +
 .../ui-grid-header/ui-grid-header.scss          |  84 +++
 .../ui-grid-settings/ui-grid-settings.jade      |  33 +
 .../ui-grid-settings/ui-grid-settings.scss      |  70 ++
 .../app/core/activities/Activities.data.js      |  39 ++
 .../frontend/app/core/admin/Admin.data.js       |  77 +++
 modules/web-console/frontend/app/core/index.js  |  25 +
 modules/web-console/frontend/app/data/i18n.js   |  38 +
 .../ui-grid-settings/ui-grid-settings.jade      |  33 -
 .../ui-grid-settings/ui-grid-settings.scss      |  38 -
 .../app/filters/uiGridSubcategories.filter.js   |  24 +
 .../frontend/app/modules/Demo/Demo.module.js    | 166 -----
 .../app/modules/branding/branding.provider.js   |   2 +-
 .../generator/ConfigurationGenerator.js         |   9 +-
 .../frontend/app/modules/demo/Demo.module.js    | 172 +++++
 .../frontend/app/modules/sql/sql.controller.js  |  14 +-
 .../frontend/app/modules/sql/sql.module.js      |   2 +-
 .../frontend/app/modules/states/admin.state.js  |   2 +-
 .../configuration/summary/summary.controller.js |   6 +-
 .../app/modules/user/AclRoute.provider.js       |  31 +-
 .../frontend/app/modules/user/Auth.service.js   |   2 +-
 .../frontend/app/modules/user/permissions.js    |   2 +-
 .../frontend/app/modules/user/user.module.js    |   6 +-
 modules/web-console/frontend/app/vendor.js      |   1 +
 .../frontend/controllers/admin-controller.js    | 234 -------
 .../frontend/controllers/domains-controller.js  |  12 +-
 modules/web-console/frontend/package.json       |   3 +-
 .../stylesheets/_font-awesome-custom.scss       |  28 +
 .../frontend/public/stylesheets/style.scss      |  39 +-
 .../frontend/public/stylesheets/variables.scss  |   1 +
 .../frontend/views/settings/admin.jade          |  32 +-
 modules/web-console/frontend/views/sql/sql.jade |   4 +-
 .../views/templates/agent-download.jade         |   2 +-
 modules/web-console/web-agent/README.txt        |   2 +-
 .../ignite/console/agent/AgentLauncher.java     | 259 ++++---
 .../apache/ignite/console/agent/AgentUtils.java |  80 +++
 .../console/agent/handlers/AbstractHandler.java | 110 ---
 .../agent/handlers/AbstractListener.java        | 104 +++
 .../console/agent/handlers/DatabaseHandler.java | 298 --------
 .../agent/handlers/DatabaseListener.java        | 316 +++++++++
 .../console/agent/handlers/RestHandler.java     | 276 --------
 .../console/agent/handlers/RestListener.java    | 280 ++++++++
 .../ignite/console/demo/AgentClusterDemo.java   | 472 +------------
 .../ignite/console/demo/AgentDemoUtils.java     |  79 +++
 .../demo/service/DemoCachesLoadService.java     | 456 ++++++++++++
 .../service/DemoRandomCacheLoadService.java     | 120 ++++
 .../service/DemoServiceClusterSingleton.java    |  41 ++
 .../demo/service/DemoServiceKeyAffinity.java    |  41 ++
 .../service/DemoServiceMultipleInstances.java   |  41 ++
 .../demo/service/DemoServiceNodeSingleton.java  |  41 ++
 .../ignite/cache/websession/WebSessionV2.java   |   2 +-
 .../internal/websession/WebSessionSelfTest.java |   6 +-
 modules/yardstick/DEVNOTES-standalone.txt       |  15 +
 modules/yardstick/DEVNOTES.txt                  |  20 +
 modules/yardstick/README.txt                    | 117 +++-
 .../config/benchmark-sample.properties          |  62 ++
 modules/yardstick/pom-standalone.xml            | 209 ++++++
 modules/yardstick/pom.xml                       |  14 +-
 .../cache/IgnitePutRemoveBenchmark.java         |  42 ++
 .../cache/IgnitePutRemoveTxBenchmark.java       |  30 +
 .../cache/IgnitePutValue8Benchmark.java         |  42 ++
 .../apache/ignite/yarn/ApplicationMaster.java   |   4 +-
 .../org/apache/ignite/yarn/IgniteProvider.java  |   4 +-
 .../tcp/ipfinder/zk/ZookeeperIpFinderTest.java  |   2 +-
 parent/pom.xml                                  |   2 +-
 pom.xml                                         |  96 ++-
 802 files changed, 30200 insertions(+), 7567 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/clients/src/test/java/org/apache/ignite/jdbc/JdbcMetadataSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index b229729,3f8b89f..ee665de
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@@ -279,13 -282,9 +282,16 @@@ public final class IgniteSystemProperti
      /** Maximum size for atomic cache queue delete history (default is 200 
000 entries per partition). */
      public static final String IGNITE_ATOMIC_CACHE_DELETE_HISTORY_SIZE = 
"IGNITE_ATOMIC_CACHE_DELETE_HISTORY_SIZE";
  
+     /** Ttl of removed cache entries (ms). */
+     public static final String IGNITE_CACHE_REMOVED_ENTRIES_TTL = 
"IGNITE_CACHE_REMOVED_ENTRIES_TTL";
+ 
 +    /** Maximum amount of concurrent updates per system thread in atomic 
caches in case of PRIMARY_SYNC or FULL_ASYNC
 +     * write synchronization mode. If this limit is exceeded then update will 
be performed with FULL_SYNC
 +     * synchronization mode. If value is {@code 0} then limit is unbounded.
 +     */
 +    public static final String IGNITE_ATOMIC_CACHE_MAX_CONCURRENT_DHT_UPDATES 
=
 +        "IGNITE_ATOMIC_CACHE_MAX_CONCURRENT_DHT_UPDATES";
 +
      /**
       * Comma separated list of addresses in format 
"10.100.22.100:45000,10.100.22.101:45000".
       * Makes sense only for {@link 
org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder}.

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java
index 7bbe9e2,560d7f6..c91daae
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java
@@@ -49,7 -49,7 +52,10 @@@ public interface GridComponent 
          CLUSTER_PROC,
  
          /** */
-         DISCOVERY_PROC
++        DISCOVERY_PROC,
++
++        /** */
+         MARSHALLER_PROC
      }
  
      /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
index 3c5b158,937a6f9..074496c
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
@@@ -49,7 -49,9 +49,8 @@@ import org.apache.ignite.internal.proce
  import org.apache.ignite.internal.processors.igfs.IgfsProcessorAdapter;
  import org.apache.ignite.internal.processors.job.GridJobProcessor;
  import 
org.apache.ignite.internal.processors.jobmetrics.GridJobMetricsProcessor;
+ import 
org.apache.ignite.internal.processors.marshaller.GridMarshallerMappingProcessor;
  import org.apache.ignite.internal.processors.odbc.OdbcProcessor;
 -import org.apache.ignite.internal.processors.offheap.GridOffHeapProcessor;
  import org.apache.ignite.internal.processors.platform.PlatformProcessor;
  import org.apache.ignite.internal.processors.plugin.IgnitePluginProcessor;
  import org.apache.ignite.internal.processors.pool.PoolProcessor;

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index fae9d9a,d80d53c..29b6ff9
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@@ -65,9 -65,12 +65,11 @@@ import org.apache.ignite.internal.proce
  import org.apache.ignite.internal.processors.igfs.IgfsProcessorAdapter;
  import org.apache.ignite.internal.processors.job.GridJobProcessor;
  import 
org.apache.ignite.internal.processors.jobmetrics.GridJobMetricsProcessor;
+ import 
org.apache.ignite.internal.processors.marshaller.GridMarshallerMappingProcessor;
  import 
org.apache.ignite.internal.processors.nodevalidation.DiscoveryNodeValidationProcessor;
  import org.apache.ignite.internal.processors.odbc.OdbcProcessor;
 -import org.apache.ignite.internal.processors.offheap.GridOffHeapProcessor;
  import org.apache.ignite.internal.processors.platform.PlatformProcessor;
+ import 
org.apache.ignite.internal.processors.platform.plugin.PlatformPluginProcessor;
  import org.apache.ignite.internal.processors.plugin.IgnitePluginProcessor;
  import org.apache.ignite.internal.processors.pool.PoolProcessor;
  import org.apache.ignite.internal.processors.port.GridPortProcessor;

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/GridMessageListenHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/GridTopic.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index c71ab2c,750c316..ec17bb9
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@@ -122,8 -122,10 +123,9 @@@ import org.apache.ignite.internal.proce
  import 
org.apache.ignite.internal.processors.nodevalidation.DiscoveryNodeValidationProcessor;
  import 
org.apache.ignite.internal.processors.nodevalidation.OsDiscoveryNodeValidationProcessor;
  import org.apache.ignite.internal.processors.odbc.OdbcProcessor;
 -import org.apache.ignite.internal.processors.offheap.GridOffHeapProcessor;
  import org.apache.ignite.internal.processors.platform.PlatformNoopProcessor;
  import org.apache.ignite.internal.processors.platform.PlatformProcessor;
+ import 
org.apache.ignite.internal.processors.platform.plugin.PlatformPluginProcessor;
  import org.apache.ignite.internal.processors.plugin.IgnitePluginProcessor;
  import org.apache.ignite.internal.processors.pool.PoolProcessor;
  import org.apache.ignite.internal.processors.port.GridPortProcessor;
@@@ -881,44 -896,40 +892,49 @@@ public class IgniteKernal implements Ig
  
              // Start processors before discovery manager, so they will
              // be able to start receiving messages once discovery completes.
 -            
startProcessor(createComponent(DiscoveryNodeValidationProcessor.class, ctx));
 -            startProcessor(new GridClockSyncProcessor(ctx));
 -            startProcessor(new GridAffinityProcessor(ctx));
 -            startProcessor(createComponent(GridSegmentationProcessor.class, 
ctx));
 -            startProcessor(createComponent(IgniteCacheObjectProcessor.class, 
ctx));
 -            startProcessor(new GridCacheProcessor(ctx));
 -            startProcessor(new GridQueryProcessor(ctx));
 -            startProcessor(new OdbcProcessor(ctx));
 -            startProcessor(new GridServiceProcessor(ctx));
 -            startProcessor(new GridTaskSessionProcessor(ctx));
 -            startProcessor(new GridJobProcessor(ctx));
 -            startProcessor(new GridTaskProcessor(ctx));
 -            startProcessor((GridProcessor)SCHEDULE.createOptional(ctx));
 -            startProcessor(new GridRestProcessor(ctx));
 -            startProcessor(new DataStreamProcessor(ctx));
 -            startProcessor((GridProcessor)IGFS.create(ctx, 
F.isEmpty(cfg.getFileSystemConfiguration())));
 -            startProcessor(new GridContinuousProcessor(ctx));
 -            startProcessor(createHadoopComponent());
 -            startProcessor(new DataStructuresProcessor(ctx));
 -            startProcessor(createComponent(PlatformProcessor.class, ctx));
 -            startProcessor(new GridMarshallerMappingProcessor(ctx));
 +            try {
 +                
startProcessor(createComponent(DiscoveryNodeValidationProcessor.class, ctx));
 +                startProcessor(new GridClockSyncProcessor(ctx));
 +                startProcessor(new GridAffinityProcessor(ctx));
 +                
startProcessor(createComponent(GridSegmentationProcessor.class, ctx));
 +                
startProcessor(createComponent(IgniteCacheObjectProcessor.class, ctx));
 +                startProcessor(new GridCacheProcessor(ctx));
 +                startProcessor(new GridClusterStateProcessor(ctx));
 +                startProcessor(new GridQueryProcessor(ctx));
 +                startProcessor(new OdbcProcessor(ctx));
 +                startProcessor(new GridServiceProcessor(ctx));
 +                startProcessor(new GridTaskSessionProcessor(ctx));
 +                startProcessor(new GridJobProcessor(ctx));
 +                startProcessor(new GridTaskProcessor(ctx));
 +                startProcessor((GridProcessor)SCHEDULE.createOptional(ctx));
 +                startProcessor(new GridRestProcessor(ctx));
 +                startProcessor(new DataStreamProcessor(ctx));
 +                startProcessor((GridProcessor)IGFS.create(ctx, 
F.isEmpty(cfg.getFileSystemConfiguration())));
 +                startProcessor(new GridContinuousProcessor(ctx));
 +                startProcessor(createHadoopComponent());
 +                startProcessor(new DataStructuresProcessor(ctx));
 +                startProcessor(createComponent(PlatformProcessor.class, ctx));
++                startProcessor(new GridMarshallerMappingProcessor(ctx));
 +
 +                // Start plugins.
 +                for (PluginProvider provider : ctx.plugins().allProviders()) {
 +                    ctx.add(new GridPluginComponent(provider));
 +
 +                    
provider.start(ctx.plugins().pluginContextForProvider(provider));
 +                }
  
 -            // Start plugins.
 -            for (PluginProvider provider : ctx.plugins().allProviders()) {
 -                ctx.add(new GridPluginComponent(provider));
++                // Start platform plugins.
++                if (ctx.config().getPlatformConfiguration() != null)
++                    startProcessor(new PlatformPluginProcessor(ctx));
+ 
 -                
provider.start(ctx.plugins().pluginContextForProvider(provider));
 +                fillNodeAttributes(clusterProc.updateNotifierEnabled());
              }
 +            catch (Throwable e) {
 +                // Stop discovery spi to close tcp socket.
 +                ctx.discovery().stop(true);
  
 -            // Start platform plugins.
 -            if (ctx.config().getPlatformConfiguration() != null)
 -                startProcessor(new PlatformPluginProcessor(ctx));
 -
 -            fillNodeAttributes(clusterProc.updateNotifierEnabled());
 +                throw e;
 +            }
  
              gw.writeLock();
  
@@@ -938,15 -949,17 +954,21 @@@
              // Suggest configuration optimizations.
              suggestOptimizations(cfg);
  
+             // Suggest JVM optimizations.
+             
ctx.performance().addAll(JvmConfigurationSuggestions.getSuggestions());
+ 
+             // Suggest Operation System optimizations.
+             
ctx.performance().addAll(OsConfigurationSuggestions.getSuggestions());
+ 
              // Notify discovery manager the first to make sure that topology 
is discovered.
 -            ctx.discovery().onKernalStart();
 +            ctx.discovery().onKernalStart(activeOnStart);
  
              // Notify IO manager the second so further components can send 
and receive messages.
 -            ctx.io().onKernalStart();
 +            ctx.io().onKernalStart(activeOnStart);
 +
 +            // Start plugins.
 +            for (PluginProvider provider : ctx.plugins().allProviders())
 +                provider.onIgniteStart();
  
              // Callbacks.
              for (GridComponent comp : ctx) {
@@@ -1983,11 -1988,9 +2004,9 @@@
  
              List<GridComponent> comps = ctx.components();
  
-             ctx.marshallerContext().onKernalStop();
- 
              // Callback component in reverse order while kernal is still 
functional
              // if called in the same thread, at least.
 -            for (ListIterator<GridComponent> it = 
comps.listIterator(comps.size()); it.hasPrevious();) {
 +            for (ListIterator<GridComponent> it = 
comps.listIterator(comps.size()); it.hasPrevious(); ) {
                  GridComponent comp = it.previous();
  
                  try {

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/GridProcessorAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheEvictableEntryImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
index 60d42ea,753cca1..1613af7
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
@@@ -215,9 -222,9 +215,9 @@@ public class CacheMetricsImpl implement
      /** {@inheritDoc} */
      @Override public long getOffHeapPrimaryEntriesCount() {
          try {
 -            return cctx.swap().offheapEntriesCount(true, false, 
cctx.affinity().affinityTopologyVersion());
 +            return cctx.offheap().entriesCount(true, false, 
cctx.affinity().affinityTopologyVersion());
          }
-         catch (IgniteCheckedException e) {
+         catch (IgniteCheckedException ignored) {
              return 0;
          }
      }
@@@ -225,9 -232,9 +225,9 @@@
      /** {@inheritDoc} */
      @Override public long getOffHeapBackupEntriesCount() {
          try {
 -            return cctx.swap().offheapEntriesCount(false, true, 
cctx.affinity().affinityTopologyVersion());
 +            return cctx.offheap().entriesCount(false, true, 
cctx.affinity().affinityTopologyVersion());
          }
-         catch (IgniteCheckedException e) {
+         catch (IgniteCheckedException ignored) {
              return 0;
          }
      }

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 1937a5f,4507c53..d094366
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@@ -506,9 -501,8 +506,8 @@@ public abstract class GridCacheAdapter<
      @Override public final GridCacheProxyImpl<K, V> 
withExpiryPolicy(ExpiryPolicy plc) {
          assert !CU.isUtilityCache(ctx.name());
          assert !CU.isAtomicsCache(ctx.name());
-         assert !CU.isMarshallerCache(ctx.name());
  
 -        CacheOperationContext opCtx = new CacheOperationContext(false, null, 
false, plc, false, null);
 +        CacheOperationContext opCtx = new CacheOperationContext(false, null, 
false, plc, false, null, false);
  
          return new GridCacheProxyImpl<>(ctx, this, opCtx);
      }
@@@ -650,10 -646,10 +651,9 @@@
              /*subj id*/null,
              /*task name*/null,
              /*deserialize binary*/false,
-             /*skip values*/
+             /*skip values*/true,
              /*can remap*/true,
-             true,
-             false);
 -            false
 -        );
++            /*needVer*/false);
      }
  
      /** {@inheritDoc} */
@@@ -679,11 -673,10 +679,10 @@@
              /*subj id*/null,
              /*task name*/null,
              /*deserialize binary*/false,
 +            opCtx != null && opCtx.recovery(),
-             /*skip values*/
+             /*skip values*/true,
              /*can remap*/true,
-             true,
-             false).chain(new CX1<IgniteInternalFuture<Map<K, V>>, Boolean>() {
 -            false
 -        ).chain(new CX1<IgniteInternalFuture<Map<K, V>>, Boolean>() {
++            /*need ver*/false).chain(new CX1<IgniteInternalFuture<Map<K, V>>, 
Boolean>() {
              @Override public Boolean applyx(IgniteInternalFuture<Map<K, V>> 
fut) throws IgniteCheckedException {
                  Map<K, V> kvMap = fut.get();
  
@@@ -768,108 -764,92 +767,108 @@@
  
          PeekModes modes = parsePeekModes(peekModes, false);
  
 -        try {
 -            KeyCacheObject cacheKey = ctx.toCacheKeyObject(key);
 +        KeyCacheObject cacheKey = ctx.toCacheKeyObject(key);
 +
 +        CacheObject cacheVal = null;
 +
 +        if (!ctx.isLocal()) {
 +            AffinityTopologyVersion topVer = 
ctx.affinity().affinityTopologyVersion();
  
 -            CacheObject cacheVal = null;
 +            int part = ctx.affinity().partition(cacheKey);
  
 -            if (!ctx.isLocal()) {
 -                AffinityTopologyVersion topVer = 
ctx.affinity().affinityTopologyVersion();
 +            boolean nearKey;
  
 -                int part = ctx.affinity().partition(cacheKey);
 +            if (!(modes.near && modes.primary && modes.backup)) {
-                 boolean keyPrimary = ctx.affinity().primary(ctx.localNode(), 
part, topVer);
++                boolean keyPrimary = 
ctx.affinity().primaryByPartition(ctx.localNode(), part, topVer);
  
 -                boolean nearKey;
 +                if (keyPrimary) {
 +                    if (!modes.primary)
 +                        return null;
  
 -                if (!(modes.near && modes.primary && modes.backup)) {
 -                    boolean keyPrimary = 
ctx.affinity().primaryByPartition(ctx.localNode(), part, topVer);
 +                    nearKey = false;
 +                }
 +                else {
-                     boolean keyBackup = 
ctx.affinity().belongs(ctx.localNode(), part, topVer);
++                    boolean keyBackup = 
ctx.affinity().partitionBelongs(ctx.localNode(), part, topVer);
  
 -                    if (keyPrimary) {
 -                        if (!modes.primary)
 +                    if (keyBackup) {
 +                        if (!modes.backup)
                              return null;
  
                          nearKey = false;
                      }
                      else {
 -                        boolean keyBackup = 
ctx.affinity().partitionBelongs(ctx.localNode(), part, topVer);
 -
 -                        if (keyBackup) {
 -                            if (!modes.backup)
 -                                return null;
 -
 -                            nearKey = false;
 -                        }
 -                        else {
 -                            if (!modes.near)
 -                                return null;
 +                        if (!modes.near)
 +                            return null;
  
 -                            nearKey = true;
 +                        nearKey = true;
  
 -                            // Swap and offheap are disabled for near cache.
 -                            modes.offheap = false;
 -                            modes.swap = false;
 -                        }
 -                    }
 -                }
 -                else {
 -                    nearKey = 
!ctx.affinity().partitionBelongs(ctx.localNode(), part, topVer);
 -
 -                    if (nearKey) {
                          // Swap and offheap are disabled for near cache.
                          modes.offheap = false;
 -                        modes.swap = false;
                      }
                  }
 +            }
 +            else {
-                 nearKey = !ctx.affinity().belongs(ctx.localNode(), part, 
topVer);
++                nearKey = !ctx.affinity().partitionBelongs(ctx.localNode(), 
part, topVer);
  
 -                if (nearKey && !ctx.isNear())
 -                    return null;
 +                if (nearKey) {
 +                    // Swap and offheap are disabled for near cache.
 +                    modes.offheap = false;
 +                }
 +            }
  
 -                if (modes.heap) {
 -                    GridCacheEntryEx e = nearKey ? peekEx(cacheKey) :
 -                        (ctx.isNear() ? ctx.near().dht().peekEx(cacheKey) : 
peekEx(cacheKey));
 +            if (nearKey && !ctx.isNear())
 +                return null;
  
 -                    if (e != null) {
 -                        cacheVal = e.peek(modes.heap, modes.offheap, 
modes.swap, topVer, plc);
 +            GridCacheEntryEx e;
 +            GridCacheContext ctx0;
  
 -                        modes.offheap = false;
 -                        modes.swap = false;
 -                    }
 +            while (true) {
 +                if (nearKey) {
 +                    ctx0 = context();
 +                    e = peekEx(key);
 +                }
 +                else {
 +                    ctx0 = ctx.isNear() ? ctx.near().dht().context() : ctx;
 +                    e = modes.offheap ? ctx0.cache().entryEx(key) : 
ctx0.cache().peekEx(key);
                  }
  
 -                if (modes.offheap || modes.swap) {
 -                    GridCacheSwapManager swapMgr = ctx.isNear() ? 
ctx.near().dht().context().swap() : ctx.swap();
 +                if (e != null) {
 +                    try {
 +                        cacheVal = e.peek(modes.heap, modes.offheap, topVer, 
plc);
 +                    }
 +                    catch (GridCacheEntryRemovedException ignore) {
 +                        if (log.isDebugEnabled())
 +                            log.debug("Got removed entry during 'peek': " + 
key);
  
 -                    cacheVal = swapMgr.readValue(cacheKey, modes.offheap, 
modes.swap);
 +                        continue;
 +                    }
 +                    finally {
 +                        ctx0.evicts().touch(e, null);
 +                    }
                  }
 +
 +                break;
              }
 -            else
 -                cacheVal = localCachePeek0(cacheKey, modes.heap, 
modes.offheap, modes.swap, plc);
 +        }
 +        else {
 +            while (true) {
 +                try {
 +                    cacheVal = localCachePeek0(cacheKey, modes.heap, 
modes.offheap, plc);
  
 -            Object val = ctx.unwrapBinaryIfNeeded(cacheVal, ctx.keepBinary(), 
false);
 +                    break;
 +                }
 +                catch (GridCacheEntryRemovedException ignore) {
 +                    if (log.isDebugEnabled())
 +                        log.debug("Got removed entry during 'peek': " + key);
  
 -            return (V)val;
 +                    // continue
 +                }
 +            }
          }
 -        catch (GridCacheEntryRemovedException ignore) {
 -            if (log.isDebugEnabled())
 -                log.debug("Got removed entry during 'peek': " + key);
  
 -            return null;
 -        }
 +        Object val = ctx.unwrapBinaryIfNeeded(cacheVal, ctx.keepBinary(), 
false);
 +
 +        return (V)val;
      }
  
      /**
@@@ -1338,11 -1307,10 +1337,10 @@@
              /*subject id*/null,
              taskName,
              /*deserialize cache objects*/true,
 +            opCtx != null && opCtx.recovery(),
-             /*skip values*/
-             /*can remap*/false,
-             true,
+             /*skip values*/false,
+             /*can remap*/true,
 -            false
 -        ).get().get(key);
 +            false).get().get(key);
      }
  
      /** {@inheritDoc} */
@@@ -1357,11 -1323,11 +1355,11 @@@
              /*skip tx*/false,
              null,
              taskName,
--            true,
 -            false,
++            /*deserialize cache objects*/true,
 +            opCtx != null && opCtx.recovery(),
-             /*can remap*/false,
-             true,
-             false).chain(new CX1<IgniteInternalFuture<Map<K, V>>, V>() {
++            /*skip values*/false,
+             /*can remap*/true,
 -            false
 -        ).chain(new CX1<IgniteInternalFuture<Map<K, V>>, V>() {
++            /*need ver*/false).chain(new CX1<IgniteInternalFuture<Map<K, V>>, 
V>() {
              @Override public V applyx(IgniteInternalFuture<Map<K, V>> e) 
throws IgniteCheckedException {
                  return e.get().get(key);
              }
@@@ -1381,11 -1345,10 +1379,10 @@@
              /*subject id*/null,
              taskName,
              /*deserialize cache objects*/true,
 +            opCtx != null && opCtx.recovery(),
-             /*skip values*/
+             /*skip values*/false,
              /*can remap*/false,
-             false,
-             false).get().get(key);
 -            false
 -        ).get().get(key);
++            /*need ver*/false).get().get(key);
      }
  
      /** {@inheritDoc} */
@@@ -1404,11 -1365,10 +1401,11 @@@
              /*skip tx*/true,
              null,
              taskName,
 -            !ctx.keepBinary(),
 +            !(opCtx != null && opCtx.isKeepBinary()),
 +            opCtx != null && opCtx.recovery(),
-             /*skip values*/
-             /*can remap*/false,
-             true, false);
+             /*skip values*/false,
+             /*can remap*/true,
+             false);
      }
  
      /** {@inheritDoc} */
@@@ -1957,23 -1888,14 +1960,23 @@@
          }
  
          if (tx == null || tx.implicit()) {
-             Map<KeyCacheObject, GridCacheVersion> misses = null;
 -            try {
 -                final AffinityTopologyVersion topVer = tx == null ?
 -                    (canRemap ?
 -                        ctx.affinity().affinityTopologyVersion() : 
ctx.shared().exchange().readyAffinityVersion()) :
 -                    tx.topologyVersion();
++            Map<KeyCacheObject, EntryGetResult> misses = null;
 +
 +            final AffinityTopologyVersion topVer = tx == null ?
 +                (canRemap ?
 +                    ctx.affinity().affinityTopologyVersion() : 
ctx.shared().exchange().readyAffinityVersion()) :
 +                tx.topologyVersion();
  
 +            try {
                  int keysSize = keys.size();
  
 +                GridDhtTopologyFuture topFut = 
ctx.shared().exchange().lastFinishedFuture();
 +
 +                Throwable ex = topFut != null ? topFut.validateCache(ctx, 
recovery, /*read*/true, null, keys) : null;
 +
 +                if (ex != null)
 +                    return new GridFinishedFuture<>(ex);
 +
                  final Map<K1, V1> map = keysSize == 1 ?
                      (Map<K1, V1>)new IgniteBiTuple<>() :
                      U.<K1, V1>newHashMap(keysSize);
@@@ -1992,33 -1918,55 +1995,52 @@@
                          }
  
                          try {
-                             T2<CacheObject, GridCacheVersion> res = 
entry.innerGetVersioned(
-                                 null,
-                                 null,
-                                 /*update-metrics*/!skipVals,
-                                 /*event*/!skipVals,
-                                 subjId,
-                                 null,
-                                 taskName,
-                                 expiry,
-                                 !deserializeBinary);
- 
-                             if (res == null) {
-                                 if (storeEnabled) {
-                                     GridCacheVersion ver = entry.version();
+                             EntryGetResult res;
+ 
+                             boolean evt = !skipVals;
+                             boolean updateMetrics = !skipVals;
+ 
+                             if (storeEnabled) {
 -                                res = 
entry.innerGetAndReserveForLoad(ctx.isSwapOrOffheapEnabled(),
 -                                    updateMetrics,
++                                res = 
entry.innerGetAndReserveForLoad(updateMetrics,
+                                     evt,
+                                     subjId,
+                                     taskName,
+                                     expiry,
+                                     !deserializeBinary,
+                                     readerArgs);
  
+                                 assert res != null;
+ 
+                                 if (res.value() == null) {
                                      if (misses == null)
                                          misses = new HashMap<>();
  
-                                     misses.put(key, ver);
+                                     misses.put(key, res);
+ 
+                                     res = null;
                                  }
-                                 else
-                                     ctx.evicts().touch(entry, topVer);
                              }
                              else {
+                                 res = entry.innerGetVersioned(
+                                     null,
+                                     null,
 -                                    ctx.isSwapOrOffheapEnabled(),
 -                                    /*unmarshal*/true,
+                                     updateMetrics,
+                                     evt,
+                                     subjId,
+                                     null,
+                                     taskName,
+                                     expiry,
+                                     !deserializeBinary,
+                                     readerArgs);
+ 
+                                 if (res == null)
+                                     ctx.evicts().touch(entry, topVer);
+                             }
+ 
+                             if (res != null) {
                                  ctx.addResult(map,
                                      key,
-                                     res.get1(),
+                                     res.value(),
                                      skipVals,
                                      keepCacheObjects,
                                      deserializeBinary,

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
index 26e4ed3,f26288f..5dffe6e
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
@@@ -305,9 -324,11 +306,9 @@@ public interface GridCacheEntryEx 
       * @throws IgniteCheckedException If loading value failed.
       * @throws GridCacheEntryRemovedException If entry was removed.
       */
-     @Nullable public T2<CacheObject, GridCacheVersion> innerGetVersioned(
+     public EntryGetResult innerGetVersioned(
          @Nullable GridCacheVersion ver,
          IgniteInternalTx tx,
 -        boolean readSwap,
 -        boolean unmarshal,
          boolean updateMetrics,
          boolean evt,
          UUID subjId,
@@@ -318,6 -340,34 +320,32 @@@
          throws IgniteCheckedException, GridCacheEntryRemovedException;
  
      /**
 -     * @param readSwap Flag indicating whether to check swap memory.
+      * @param updateMetrics If {@code true} then metrics should be updated.
+      * @param evt Flag to signal event notification.
+      * @param subjId Subject ID initiated this read.
+      * @param taskName Task name.
+      * @param expiryPlc Expiry policy.
+      * @param keepBinary Keep binary flag.
+      * @param readerArgs Reader will be added if not null.
+      * @throws IgniteCheckedException If loading value failed.
+      * @throws GridCacheEntryRemovedException If entry was removed.
+      * @return Cached value, entry version and flag indicating if entry was 
reserved.
+      */
 -    public EntryGetResult innerGetAndReserveForLoad(boolean readSwap,
 -        boolean updateMetrics,
++    public EntryGetResult innerGetAndReserveForLoad(boolean updateMetrics,
+         boolean evt,
+         UUID subjId,
+         String taskName,
+         @Nullable IgniteCacheExpiryPolicy expiryPlc,
+         boolean keepBinary,
+         @Nullable ReaderArguments readerArgs) throws IgniteCheckedException, 
GridCacheEntryRemovedException;
+ 
+     /**
+      * @param ver Expected entry version.
+      * @throws IgniteCheckedException If failed.
+      */
+     public void clearReserveForLoad(GridCacheVersion ver) throws 
IgniteCheckedException;
+ 
+     /**
       * Reloads entry from underlying storage.
       *
       * @return Reloaded value.

http://git-wip-us.apache.org/repos/asf/ignite/blob/1748e226/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
----------------------------------------------------------------------

Reply via email to