Merge branches 'ignite-394' and 'sprint-2' of 
https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-394

Conflicts:
        
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
        
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
        
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerCacheUpdaters.java
        
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerFuture.java
        
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerImpl.java
        
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerProcessor.java
        
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerUpdateJob.java
        
modules/core/src/main/java/org/apache/ignite/internal/processors/dr/IgniteDrDataStreamerCacheUpdater.java
        
modules/core/src/test/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerImplSelfTest.java


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

Branch: refs/heads/sprint-2
Commit: 00fd3c3c5804a960b64ba2464a3fc0cc733caee8
Parents: 1941625 efed98d
Author: Yakov Zhdanov <yzhda...@gridgain.com>
Authored: Wed Mar 11 17:19:34 2015 +0300
Committer: Yakov Zhdanov <yzhda...@gridgain.com>
Committed: Wed Mar 11 17:19:34 2015 +0300

----------------------------------------------------------------------
 DEVNOTES.txt                                    |    7 +
 examples/pom-standalone.xml                     |    2 +-
 license/header-customisation.xml                |   51 -
 license/header.txt                              |   14 -
 .../apache/ignite/gridify/AbstractAopTest.java  |    4 +-
 .../spi/checkpoint/s3/S3CheckpointData.java     |   62 +-
 .../spi/checkpoint/s3/S3CheckpointSpi.java      |    8 +-
 .../checkpoint/s3/S3CheckpointSpiSelfTest.java  |    2 +-
 .../s3/S3CheckpointSpiStartStopSelfTest.java    |    2 +-
 .../ClientAbstractMultiNodeSelfTest.java        |   12 +-
 .../rest/protocols/tcp/MockNioSession.java      |    7 +-
 modules/clients/src/test/keystore/generate.sh   |   26 +-
 .../ignite/codegen/MessageCodeGenerator.java    |    6 +-
 modules/core/pom.xml                            |   56 +-
 .../org/apache/ignite/IgniteTransactions.java   |    2 +-
 .../apache/ignite/cache/CacheInterceptor.java   |   34 +-
 .../ignite/cache/CacheInterceptorAdapter.java   |   12 +-
 .../org/apache/ignite/cache/CacheManager.java   |    1 -
 .../cache/CachePartialUpdateException.java      |    3 +
 .../java/org/apache/ignite/cache/GridCache.java |    2 -
 .../apache/ignite/cache/IgniteImmutable.java    |   45 +
 .../CacheRendezvousAffinityFunction.java        |   13 +-
 .../eviction/fifo/CacheFifoEvictionPolicy.java  |    3 -
 .../eviction/lru/CacheLruEvictionPolicy.java    |    1 -
 .../ignite/compute/ComputeJobContext.java       |    1 -
 .../configuration/CacheConfiguration.java       |   62 +-
 .../configuration/HadoopConfiguration.java      |   17 +-
 .../configuration/IgniteConfiguration.java      |   10 +-
 .../org/apache/ignite/events/EventType.java     |    2 -
 .../IgfsConcurrentModificationException.java    |   29 +-
 .../ignite/igfs/IgfsCorruptedFileException.java |   16 +-
 .../igfs/IgfsDirectoryNotEmptyException.java    |   20 +-
 .../org/apache/ignite/igfs/IgfsException.java   |   16 +-
 .../org/apache/ignite/igfs/IgfsInputStream.java |    2 -
 .../igfs/IgfsInvalidHdfsVersionException.java   |   23 +-
 .../ignite/igfs/IgfsInvalidPathException.java   |   16 +-
 .../ignite/igfs/IgfsOutOfSpaceException.java    |   16 +-
 .../igfs/IgfsParentNotDirectoryException.java   |   20 +-
 .../igfs/IgfsPathAlreadyExistsException.java    |   19 +-
 .../igfs/IgfsPathIsDirectoryException.java      |   56 +
 .../igfs/IgfsPathIsNotDirectoryException.java   |   56 +
 .../ignite/igfs/IgfsPathNotFoundException.java  |   22 +-
 .../ignite/internal/AsyncSupportAdapter.java    |    1 -
 .../ignite/internal/ClusterMetricsSnapshot.java |    1 -
 .../internal/ComputeTaskInternalFuture.java     |    3 +
 .../internal/GridEventConsumeHandler.java       |   13 +-
 .../ignite/internal/GridKernalContext.java      |   24 +-
 .../ignite/internal/GridKernalContextImpl.java  |   62 +-
 .../internal/GridMessageListenHandler.java      |   11 +-
 .../org/apache/ignite/internal/GridTopic.java   |   89 +-
 .../ignite/internal/GridUpdateNotifier.java     |   15 -
 .../internal/IgniteCodeGeneratingFail.java      |   29 +
 .../apache/ignite/internal/IgniteKernal.java    |   11 +-
 .../ignite/internal/IgniteTransactionsEx.java   |   16 -
 .../org/apache/ignite/internal/IgnitionEx.java  |   74 +-
 .../internal/MarshallerContextAdapter.java      |  130 ++
 .../ignite/internal/MarshallerContextImpl.java  |   81 +
 .../balancer/GridClientBalancerAdapter.java     |    2 +-
 .../client/impl/GridClientComputeImpl.java      |    2 +-
 .../client/impl/GridClientFutureAdapter.java    |    3 +
 .../GridClientConnectionManagerAdapter.java     |    2 +-
 .../GridClientOptimizedMarshaller.java          |   42 +-
 .../impl/GridRouterCommandLineStartup.java      |    2 +-
 .../internal/direct/DirectByteBufferStream.java |   62 +-
 .../internal/direct/DirectMessageWriter.java    |    7 +
 .../direct/DirectMessageWriterState.java        |    3 +
 .../internal/igfs/common/IgfsMarshaller.java    |    1 -
 .../internal/managers/GridManagerAdapter.java   |   35 +-
 .../managers/communication/GridIoManager.java   |  102 +-
 .../communication/GridIoMessageFactory.java     |   89 +-
 .../managers/communication/GridIoPolicy.java    |    5 +-
 .../loadbalancer/GridLoadBalancerManager.java   |    3 -
 .../affinity/GridAffinityAssignmentCache.java   |   20 +-
 .../affinity/GridAffinityMessage.java           |   13 +-
 .../affinity/GridAffinityProcessor.java         |   35 +-
 .../cache/CacheEntryInfoCollection.java         |  111 ++
 .../processors/cache/CacheEntryPredicate.java   |   45 +
 .../cache/CacheEntryPredicateAdapter.java       |   88 +
 .../cache/CacheEntryPredicateContainsValue.java |  132 ++
 .../cache/CacheEntryPredicateHasValue.java      |   31 +
 .../cache/CacheEntryPredicateNoValue.java       |   31 +
 .../cache/CacheEntrySerializablePredicate.java  |  152 ++
 .../processors/cache/CacheEvictionEntry.java    |  182 ++
 .../cache/CacheInvokeDirectResult.java          |  213 +++
 .../processors/cache/CacheInvokeEntry.java      |   79 +-
 .../processors/cache/CacheInvokeResult.java     |   12 +-
 .../processors/cache/CacheLazyEntry.java        |  133 ++
 .../internal/processors/cache/CacheObject.java  |   73 +
 .../processors/cache/CacheObjectAdapter.java    |  118 ++
 .../cache/CacheObjectByteArrayImpl.java         |  156 ++
 .../processors/cache/CacheObjectContext.java    |  130 ++
 .../processors/cache/CacheObjectImpl.java       |  120 ++
 .../processors/cache/CacheProjection.java       |  140 +-
 .../cache/CacheStoreBalancingWrapper.java       |    2 +
 .../processors/cache/EvictableEntryImpl.java    |   33 +-
 .../processors/cache/GridCacheAdapter.java      | 1518 +++++++---------
 .../cache/GridCacheAffinityManager.java         |   20 +-
 .../processors/cache/GridCacheAtomicFuture.java |    4 +-
 .../processors/cache/GridCacheAttributes.java   |   15 +-
 .../cache/GridCacheBatchSwapEntry.java          |   27 +-
 .../cache/GridCacheClearAllRunnable.java        |   28 +-
 .../cache/GridCacheConcurrentMap.java           |  355 ++--
 .../processors/cache/GridCacheContext.java      |  482 +++---
 .../GridCacheDefaultAffinityKeyMapper.java      |   47 +-
 .../cache/GridCacheDeploymentManager.java       |  124 +-
 .../processors/cache/GridCacheEntryEx.java      |  201 +--
 .../processors/cache/GridCacheEntryInfo.java    |  337 ++--
 .../GridCacheEntryInfoCollectSwapListener.java  |   56 +-
 .../processors/cache/GridCacheEventManager.java |  121 +-
 .../cache/GridCacheEvictionManager.java         |  234 +--
 .../cache/GridCacheEvictionRequest.java         |   46 +-
 .../cache/GridCacheEvictionResponse.java        |   27 +-
 .../cache/GridCacheExplicitLockSpan.java        |   40 +-
 .../cache/GridCacheFilterFailedException.java   |    8 +-
 .../processors/cache/GridCacheIoManager.java    |   48 +-
 .../processors/cache/GridCacheKeySet.java       |    4 +-
 .../cache/GridCacheManagerAdapter.java          |    2 +-
 .../processors/cache/GridCacheMapEntry.java     | 1524 ++++++++---------
 .../cache/GridCacheMapEntryFactory.java         |   12 +-
 .../processors/cache/GridCacheMessage.java      |  235 ++-
 .../cache/GridCacheMultiTxFuture.java           |    9 +-
 .../processors/cache/GridCacheMvcc.java         |  214 +--
 .../processors/cache/GridCacheMvccCallback.java |   12 +-
 .../cache/GridCacheMvccCandidate.java           |   50 +-
 .../processors/cache/GridCacheMvccFuture.java   |    4 +-
 .../processors/cache/GridCacheMvccManager.java  |  201 +--
 .../cache/GridCacheOffheapSwapEntry.java        |   20 +-
 .../GridCachePartitionExchangeManager.java      |  104 +-
 .../processors/cache/GridCachePreloader.java    |   10 +-
 .../cache/GridCachePreloaderAdapter.java        |   12 +-
 .../processors/cache/GridCacheProcessor.java    |   59 +-
 .../processors/cache/GridCacheProjectionEx.java |   59 +-
 .../cache/GridCacheProjectionImpl.java          |  606 ++-----
 .../processors/cache/GridCacheProxyImpl.java    |  203 +--
 .../processors/cache/GridCacheReturn.java       |  317 +++-
 .../cache/GridCacheSharedContext.java           |   42 +-
 .../processors/cache/GridCacheStoreManager.java |  210 +--
 .../processors/cache/GridCacheSwapEntry.java    |   16 +-
 .../cache/GridCacheSwapEntryImpl.java           |   60 +-
 .../processors/cache/GridCacheSwapListener.java |    5 +-
 .../processors/cache/GridCacheSwapManager.java  |  733 +++++---
 .../processors/cache/GridCacheTtlManager.java   |   26 +-
 .../cache/GridCacheUpdateAtomicResult.java      |   27 +-
 .../cache/GridCacheUpdateTxResult.java          |    8 +-
 .../processors/cache/GridCacheUtils.java        |  218 ++-
 .../processors/cache/GridCacheValueBytes.java   |  194 ---
 .../cache/GridCacheValueCollection.java         |    4 +-
 .../cache/IgniteCacheExpiryPolicy.java          |    8 +-
 .../IgniteCacheOsSerializationManager.java      |   48 -
 .../processors/cache/IgniteCacheProxy.java      |    4 +-
 .../processors/cache/KeyCacheObject.java        |   33 +
 .../processors/cache/KeyCacheObjectImpl.java    |  132 ++
 .../cache/affinity/GridCacheAffinityImpl.java   |   10 +-
 .../CacheDataStructuresManager.java             |   14 +-
 .../distributed/GridCacheCommittedTxInfo.java   |   10 +-
 ...ridCacheOptimisticCheckPreparedTxFuture.java |   23 +-
 ...idCacheOptimisticCheckPreparedTxRequest.java |    4 +-
 ...dCacheOptimisticCheckPreparedTxResponse.java |    2 +-
 .../distributed/GridCacheTtlUpdateRequest.java  |   75 +-
 .../distributed/GridDistributedBaseMessage.java |   28 +-
 .../GridDistributedCacheAdapter.java            |   52 +-
 .../distributed/GridDistributedCacheEntry.java  |  154 +-
 .../distributed/GridDistributedLockRequest.java |   73 +-
 .../GridDistributedLockResponse.java            |   93 +-
 .../GridDistributedTxFinishRequest.java         |   83 +-
 .../GridDistributedTxFinishResponse.java        |    2 +-
 .../distributed/GridDistributedTxMapping.java   |   38 +-
 .../GridDistributedTxPrepareRequest.java        |  273 ++-
 .../GridDistributedTxPrepareResponse.java       |   14 +-
 .../GridDistributedTxRemoteAdapter.java         |  162 +-
 .../GridDistributedUnlockRequest.java           |   52 +-
 .../IgniteExternalizableExpiryPolicy.java       |   12 +-
 .../dht/GridClientPartitionTopology.java        |   24 +-
 .../dht/GridDhtAffinityAssignmentRequest.java   |    2 +-
 .../dht/GridDhtAffinityAssignmentResponse.java  |    6 +-
 .../dht/GridDhtAssignmentFetchFuture.java       |   17 +-
 .../cache/distributed/dht/GridDhtCache.java     |    2 +-
 .../distributed/dht/GridDhtCacheAdapter.java    |  184 +-
 .../distributed/dht/GridDhtCacheEntry.java      |  120 +-
 .../distributed/dht/GridDhtEmbeddedFuture.java  |    3 +
 .../cache/distributed/dht/GridDhtGetFuture.java |   96 +-
 .../distributed/dht/GridDhtLocalPartition.java  |   52 +-
 .../distributed/dht/GridDhtLockFuture.java      |  104 +-
 .../distributed/dht/GridDhtLockRequest.java     |   69 +-
 .../distributed/dht/GridDhtLockResponse.java    |   77 +-
 .../dht/GridDhtPartitionTopology.java           |   20 +-
 .../dht/GridDhtPartitionTopologyImpl.java       |   48 +-
 .../dht/GridDhtTransactionalCacheAdapter.java   |  274 ++-
 .../distributed/dht/GridDhtTxFinishFuture.java  |   40 +-
 .../distributed/dht/GridDhtTxFinishRequest.java |   48 +-
 .../dht/GridDhtTxFinishResponse.java            |    2 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |   67 +-
 .../distributed/dht/GridDhtTxLocalAdapter.java  |  187 +-
 .../cache/distributed/dht/GridDhtTxMapping.java |    4 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |  265 ++-
 .../dht/GridDhtTxPrepareRequest.java            |  152 +-
 .../dht/GridDhtTxPrepareResponse.java           |   84 +-
 .../cache/distributed/dht/GridDhtTxRemote.java  |   53 +-
 .../distributed/dht/GridDhtUnlockRequest.java   |   46 +-
 .../distributed/dht/GridNoStorageCacheMap.java  |   28 +-
 .../dht/GridPartitionedGetFuture.java           |  128 +-
 .../dht/atomic/GridDhtAtomicCache.java          |  687 ++++----
 .../dht/atomic/GridDhtAtomicCacheEntry.java     |   13 +-
 .../GridDhtAtomicDeferredUpdateResponse.java    |    2 +-
 .../dht/atomic/GridDhtAtomicUpdateFuture.java   |   74 +-
 .../dht/atomic/GridDhtAtomicUpdateRequest.java  |  222 +--
 .../dht/atomic/GridDhtAtomicUpdateResponse.java |   66 +-
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |  170 +-
 .../dht/atomic/GridNearAtomicUpdateRequest.java |  238 +--
 .../atomic/GridNearAtomicUpdateResponse.java    |  142 +-
 .../dht/colocated/GridDhtColocatedCache.java    |  179 +-
 .../colocated/GridDhtColocatedCacheEntry.java   |   13 +-
 .../colocated/GridDhtColocatedLockFuture.java   |  141 +-
 .../colocated/GridDhtDetachedCacheEntry.java    |   30 +-
 .../dht/preloader/GridDhtForceKeysFuture.java   |   54 +-
 .../dht/preloader/GridDhtForceKeysRequest.java  |   43 +-
 .../dht/preloader/GridDhtForceKeysResponse.java |   63 +-
 .../GridDhtPartitionDemandMessage.java          |    8 +-
 .../preloader/GridDhtPartitionDemandPool.java   |  103 +-
 .../GridDhtPartitionSupplyMessage.java          |   93 +-
 .../preloader/GridDhtPartitionSupplyPool.java   |   81 +-
 .../GridDhtPartitionsAbstractMessage.java       |    2 +-
 .../GridDhtPartitionsExchangeFuture.java        |   80 +-
 .../preloader/GridDhtPartitionsFullMessage.java |    6 +-
 .../GridDhtPartitionsSingleMessage.java         |    6 +-
 .../GridDhtPartitionsSingleRequest.java         |    2 +-
 .../dht/preloader/GridDhtPreloader.java         |   62 +-
 .../preloader/GridDhtPreloaderAssignments.java  |    8 +-
 .../distributed/near/CacheVersionedValue.java   |  169 ++
 .../distributed/near/GridNearAtomicCache.java   |  149 +-
 .../distributed/near/GridNearCacheAdapter.java  |  176 +-
 .../distributed/near/GridNearCacheEntry.java    |  143 +-
 .../distributed/near/GridNearGetFuture.java     |  134 +-
 .../distributed/near/GridNearGetRequest.java    |  106 +-
 .../distributed/near/GridNearGetResponse.java   |   37 +-
 .../distributed/near/GridNearLockFuture.java    |  165 +-
 .../distributed/near/GridNearLockMapping.java   |   23 +-
 .../distributed/near/GridNearLockRequest.java   |   50 +-
 .../distributed/near/GridNearLockResponse.java  |   12 +-
 .../near/GridNearTransactionalCache.java        |  139 +-
 .../near/GridNearTxFinishFuture.java            |   39 +-
 .../near/GridNearTxFinishRequest.java           |   34 +-
 .../near/GridNearTxFinishResponse.java          |    6 +-
 .../cache/distributed/near/GridNearTxLocal.java |  212 +--
 .../near/GridNearTxPrepareFuture.java           |  163 +-
 .../near/GridNearTxPrepareRequest.java          |   58 +-
 .../near/GridNearTxPrepareResponse.java         |  177 +-
 .../distributed/near/GridNearTxRemote.java      |   66 +-
 .../distributed/near/GridNearUnlockRequest.java |    2 +-
 .../cache/dr/GridCacheDrExpirationInfo.java     |   23 +-
 .../processors/cache/dr/GridCacheDrInfo.java    |   28 +-
 .../processors/cache/dr/GridCacheDrManager.java |   10 +-
 .../cache/dr/os/GridOsCacheDrManager.java       |   10 +-
 .../extras/GridCacheAttributesEntryExtras.java  |   24 +-
 .../GridCacheAttributesMvccEntryExtras.java     |   30 +-
 ...dCacheAttributesMvccObsoleteEntryExtras.java |   30 +-
 ...cheAttributesMvccObsoleteTtlEntryExtras.java |   30 +-
 .../GridCacheAttributesMvccTtlEntryExtras.java  |   30 +-
 .../GridCacheAttributesObsoleteEntryExtras.java |   26 +-
 ...idCacheAttributesObsoleteTtlEntryExtras.java |   26 +-
 .../GridCacheAttributesTtlEntryExtras.java      |   26 +-
 .../cache/extras/GridCacheEntryExtras.java      |   16 +-
 .../extras/GridCacheEntryExtrasAdapter.java     |    8 +-
 .../cache/extras/GridCacheMvccEntryExtras.java  |   24 +-
 .../GridCacheMvccObsoleteEntryExtras.java       |   26 +-
 .../GridCacheMvccObsoleteTtlEntryExtras.java    |   26 +-
 .../extras/GridCacheMvccTtlEntryExtras.java     |   26 +-
 .../extras/GridCacheObsoleteEntryExtras.java    |   18 +-
 .../extras/GridCacheObsoleteTtlEntryExtras.java |   20 +-
 .../cache/extras/GridCacheTtlEntryExtras.java   |   18 +-
 .../cache/jta/CacheJtaManagerAdapter.java       |    2 +-
 .../cache/jta/CacheNoopJtaManager.java          |    2 +-
 .../processors/cache/local/GridLocalCache.java  |   55 +-
 .../cache/local/GridLocalCacheEntry.java        |   85 +-
 .../cache/local/GridLocalLockCallback.java      |    9 +-
 .../cache/local/GridLocalLockFuture.java        |   40 +-
 .../processors/cache/local/GridLocalTx.java     |  206 ---
 .../cache/local/GridLocalTxFuture.java          |  302 ----
 .../local/atomic/GridLocalAtomicCache.java      |  342 ++--
 .../GridCacheDistributedFieldsQueryFuture.java  |    3 +
 .../query/GridCacheDistributedQueryFuture.java  |    5 +-
 .../query/GridCacheDistributedQueryManager.java |   38 +-
 .../query/GridCacheLocalFieldsQueryFuture.java  |    3 +
 .../cache/query/GridCacheLocalQueryFuture.java  |    9 +-
 .../cache/query/GridCacheQueriesImpl.java       |   17 -
 .../cache/query/GridCacheQueryAdapter.java      |   16 -
 .../cache/query/GridCacheQueryInfo.java         |   14 -
 .../cache/query/GridCacheQueryManager.java      |  130 +-
 .../cache/query/GridCacheQueryRequest.java      |   66 +-
 .../cache/query/GridCacheQueryResponse.java     |    6 +-
 .../continuous/CacheContinuousQueryEntry.java   |  273 +--
 .../continuous/CacheContinuousQueryEvent.java   |   41 +-
 .../continuous/CacheContinuousQueryHandler.java |   77 +-
 .../continuous/CacheContinuousQueryManager.java |  158 +-
 .../jdbc/GridCacheQueryJdbcMetadataTask.java    |   12 +-
 .../query/jdbc/GridCacheQueryJdbcTask.java      |   12 +-
 .../IgniteCacheSerializationManager.java        |   51 -
 .../cache/transactions/IgniteInternalTx.java    |   56 +-
 .../transactions/IgniteTransactionsImpl.java    |   36 +-
 .../cache/transactions/IgniteTxAdapter.java     |  158 +-
 .../cache/transactions/IgniteTxEntry.java       |  700 +++-----
 .../cache/transactions/IgniteTxHandler.java     |  242 +--
 .../cache/transactions/IgniteTxKey.java         |   99 +-
 .../transactions/IgniteTxLocalAdapter.java      |  859 +++++-----
 .../cache/transactions/IgniteTxLocalEx.java     |   56 +-
 .../cache/transactions/IgniteTxManager.java     |  372 ++--
 .../cache/transactions/IgniteTxMap.java         |   40 +-
 .../cache/transactions/IgniteTxRemoteEx.java    |    4 +-
 .../transactions/TransactionProxyImpl.java      |   14 +-
 .../cache/transactions/TxEntryValueHolder.java  |  237 +++
 .../version/GridCacheRawVersionedEntry.java     |  245 ++-
 .../cache/version/GridCacheVersion.java         |   12 +-
 .../cache/version/GridCacheVersionEx.java       |   66 +-
 .../cache/version/GridCacheVersionManager.java  |    2 +-
 .../cacheobject/IgniteCacheObjectProcessor.java |  160 ++
 .../IgniteCacheObjectProcessorImpl.java         |  347 ++++
 .../processors/cacheobject/package.html         |   24 +
 .../processors/clock/GridClockMessage.java      |    1 -
 .../clock/GridClockSyncProcessor.java           |    2 +-
 .../closure/GridClosureProcessor.java           |  128 +-
 .../continuous/GridContinuousHandler.java       |    9 +-
 .../continuous/GridContinuousMessage.java       |   43 +-
 .../continuous/GridContinuousProcessor.java     |   54 +-
 .../datastream/GridDataLoadRequest.java         |   33 +-
 .../datastream/IgniteDataLoaderEntry.java       |  170 ++
 .../IgniteDataStreamerCacheUpdaters.java        |   13 +-
 .../datastream/IgniteDataStreamerFuture.java    |    3 +
 .../datastream/IgniteDataStreamerImpl.java      |  342 ++--
 .../datastream/IgniteDataStreamerProcessor.java |   22 +-
 .../datastream/IgniteDataStreamerUpdateJob.java |   48 +-
 .../datastructures/DataStructuresProcessor.java |   43 +-
 .../datastructures/GridCacheSetImpl.java        |    4 +-
 .../dr/IgniteDrDataStreamerCacheUpdater.java    |   28 +-
 .../processors/igfs/IgfsDataManager.java        |    3 +
 .../internal/processors/igfs/IgfsFileImpl.java  |    7 +
 .../internal/processors/igfs/IgfsFileInfo.java  |    3 +-
 .../internal/processors/igfs/IgfsImpl.java      |  583 +++----
 .../processors/igfs/IgfsMetaManager.java        |   25 +-
 .../internal/processors/igfs/IgfsServer.java    |    3 +-
 .../internal/processors/igfs/IgfsUtils.java     |   86 +
 .../offheap/GridOffHeapProcessor.java           |    9 +-
 .../portable/GridPortableProcessor.java         |  142 --
 .../portable/os/GridOsPortableProcessor.java    |  120 --
 .../processors/portable/os/package.html         |   24 -
 .../processors/query/GridQueryProcessor.java    |   24 +-
 .../resource/GridResourceProcessor.java         |    2 +-
 .../resource/GridResourceServiceInjector.java   |    2 +-
 .../processors/rest/GridRestResponse.java       |    1 -
 .../message/GridClientAbstractMessage.java      |    1 -
 .../message/GridClientHandshakeRequest.java     |    1 -
 .../handlers/cache/GridCacheCommandHandler.java |   46 +-
 .../handlers/task/GridTaskCommandHandler.java   |    3 +-
 .../protocols/tcp/GridMemcachedMessage.java     |    1 -
 .../protocols/tcp/GridTcpRestNioListener.java   |    3 -
 .../rest/protocols/tcp/GridTcpRestParser.java   |    6 +-
 .../rest/protocols/tcp/GridTcpRestProtocol.java |    9 -
 .../rest/request/GridRestRequest.java           |   17 -
 .../rest/request/GridRestTaskRequest.java       |   17 -
 .../service/GridServiceDeploymentFuture.java    |    3 +
 .../processors/service/GridServiceProxy.java    |    2 +-
 .../streamer/GridStreamerExecutionBatch.java    |   12 +-
 .../GridStreamerStageExecutionFuture.java       |    3 +
 .../processors/task/GridTaskProcessor.java      |   31 +-
 .../org/apache/ignite/internal/util/F0.java     |  147 ++
 .../ignite/internal/util/IgniteUtils.java       |   55 +-
 .../util/future/GridCompoundFuture.java         |    3 +
 .../util/future/GridCompoundIdentityFuture.java |    3 +
 .../util/future/GridEmbeddedFuture.java         |    3 +
 .../internal/util/future/GridFutureAdapter.java |    9 +
 .../internal/util/lang/GridAbsClosure.java      |    2 -
 .../ignite/internal/util/lang/GridFunc.java     |   52 -
 .../ignite/internal/util/lang/GridMapEntry.java |    2 +-
 .../util/lang/GridMetadataAwareAdapter.java     |   71 +-
 .../nio/GridConnectionBytesVerifyFilter.java    |    1 -
 .../util/nio/GridNioEmbeddedFuture.java         |    3 +
 .../internal/util/nio/GridNioFutureImpl.java    |    3 +
 .../ignite/internal/util/nio/GridNioServer.java |    3 +
 .../util/nio/GridTcpCommunicationClient.java    |    1 -
 .../util/offheap/unsafe/GridUnsafeMemory.java   |   26 +-
 .../internal/util/worker/GridWorkerFuture.java  |    3 +
 .../visor/cache/VisorCacheClearTask.java        |    6 +
 .../visor/cache/VisorCacheCompactTask.java      |   29 +-
 .../visor/cache/VisorCacheConfiguration.java    |   11 -
 .../visor/node/VisorIgfsConfiguration.java      |    2 +-
 .../lang/IgniteFutureCancelledException.java    |    3 +
 .../lang/IgniteFutureTimeoutException.java      |    3 +
 .../ignite/lang/IgniteProductVersion.java       |    1 -
 .../java/org/apache/ignite/lang/IgniteUuid.java |   13 +-
 .../ignite/marshaller/AbstractMarshaller.java   |    8 +
 .../apache/ignite/marshaller/Marshaller.java    |    7 +
 .../ignite/marshaller/MarshallerContext.java    |   42 +
 .../optimized/OptimizedClassDescriptor.java     |  463 ++---
 .../optimized/OptimizedClassResolver.java       |  477 ------
 .../optimized/OptimizedMarshallable.java        |   65 -
 .../optimized/OptimizedMarshaller.java          |  148 +-
 .../optimized/OptimizedMarshallerIdMapper.java  |   33 +
 .../optimized/OptimizedMarshallerUtils.java     |  298 ++--
 .../optimized/OptimizedObjectInputStream.java   |  152 +-
 .../optimized/OptimizedObjectOutputStream.java  |   99 +-
 .../optimized-classnames.previous.properties    |   15 -
 .../optimized/optimized-classnames.properties   |  116 --
 .../extensions/communication/MessageWriter.java |   11 +
 .../security/GridSecurityCredentials.java       |    1 -
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |   18 -
 .../org/apache/ignite/spi/IgniteSpiContext.java |   43 -
 .../communication/tcp/TcpCommunicationSpi.java  |    3 +
 .../tcp/internal/TcpDiscoveryNode.java          |    1 -
 .../TcpDiscoveryMulticastIpFinder.java          |    1 -
 .../messages/TcpDiscoveryAuthFailedMessage.java |    1 -
 .../messages/TcpDiscoveryHeartbeatMessage.java  |    1 -
 .../apache/ignite/transactions/Transaction.java |    6 +-
 .../META-INF/classnames-jdk.properties          |  371 ++++
 .../resources/META-INF/classnames.properties    | 1619 ++++++++++++++++++
 .../src/test/config/io-manager-benchmark.xml    |   12 -
 modules/core/src/test/config/jobs-load-base.xml |   11 -
 .../core/src/test/config/load/dsi-load-base.xml |   16 -
 .../IgniteExternalizableAbstractTest.java       |    9 +-
 ...eJdbcStoreAbstractMultithreadedSelfTest.java |   11 +-
 .../ignite/internal/GridAffinitySelfTest.java   |    3 +-
 .../GridCommunicationSendMessageSelfTest.java   |    2 +-
 .../cache/GridCacheAbstractFullApiSelfTest.java |   62 +-
 .../cache/GridCacheAbstractMetricsSelfTest.java |    8 +-
 .../cache/GridCacheAffinityRoutingSelfTest.java |    6 -
 .../GridCacheConcurrentTxMultiNodeTest.java     |    8 +-
 .../cache/GridCacheDeploymentSelfTest.java      |    5 +-
 .../cache/GridCacheEntryMemorySizeSelfTest.java |   12 +-
 .../cache/GridCacheEntryVersionSelfTest.java    |    4 +-
 .../GridCacheExAbstractFullApiSelfTest.java     |    2 +-
 .../GridCacheFinishPartitionsSelfTest.java      |    7 +-
 .../GridCacheInterceptorAbstractSelfTest.java   |  186 +-
 .../processors/cache/GridCacheLeakTest.java     |    2 +-
 .../cache/GridCacheLifecycleAwareSelfTest.java  |   10 +-
 .../cache/GridCacheMemoryModeSelfTest.java      |    8 +-
 .../cache/GridCacheMvccFlagsTest.java           |    8 +-
 .../cache/GridCacheMvccPartitionedSelfTest.java |  128 +-
 .../processors/cache/GridCacheMvccSelfTest.java |  232 +--
 .../cache/GridCacheObjectToStringSelfTest.java  |    2 +-
 .../cache/GridCacheOffHeapSelfTest.java         |    6 +-
 .../GridCacheOnCopyFlagAbstractSelfTest.java    |  688 ++++++++
 .../GridCacheOnCopyFlagAtomicSelfTest.java      |   38 +
 .../cache/GridCacheOnCopyFlagLocalSelfTest.java |   38 +
 .../GridCacheOnCopyFlagReplicatedSelfTest.java  |   38 +
 ...ridCacheOnCopyFlagTxPartitionedSelfTest.java |   38 +
 .../cache/GridCachePutAllFailoverSelfTest.java  |    1 -
 .../GridCacheReturnValueTransferSelfTest.java   |    1 +
 .../cache/GridCacheStoreValueBytesSelfTest.java |   24 +-
 .../cache/GridCacheSwapPreloadSelfTest.java     |    6 +-
 .../processors/cache/GridCacheTestEntryEx.java  |  276 +--
 .../cache/GridCacheTtlManagerLoadTest.java      |    2 +-
 .../GridCacheValueBytesPreloadingSelfTest.java  |    2 +-
 .../cache/GridCacheVersionMultinodeTest.java    |    2 +-
 .../cache/GridCacheVersionSelfTest.java         |    3 +
 ...IgniteCacheAtomicCopyOnReadDisabledTest.java |   32 +
 .../IgniteCacheContainsKeyAbstractSelfTest.java |    4 +-
 ...niteCacheCopyOnReadDisabledAbstractTest.java |  123 ++
 .../IgniteCacheInterceptorSelfTestSuite.java    |    5 +
 .../IgniteCacheTxCopyOnReadDisabledTest.java    |   32 +
 .../cache/IgnitePutAllLargeBatchSelfTest.java   |    6 +-
 ...tAllUpdateNonPreloadedPartitionSelfTest.java |    6 +-
 .../IgniteTxConcurrentGetAbstractTest.java      |    4 +-
 .../cache/IgniteTxMultiNodeAbstractTest.java    |    4 +-
 ...actQueueFailoverDataConsistencySelfTest.java |    2 +-
 .../GridCacheQueueCleanupSelfTest.java          |    2 +-
 .../GridCacheSetAbstractSelfTest.java           |    4 +-
 .../GridCacheSetFailoverAbstractSelfTest.java   |    4 +-
 .../IgnitePartitionedSetNoBackupsSelfTest.java  |    2 +-
 .../GridCacheAbstractJobExecutionTest.java      |    2 +-
 .../distributed/GridCacheEventAbstractTest.java |   12 +-
 ...chePartitionedReloadAllAbstractSelfTest.java |   61 +-
 .../IgniteCacheSystemTransactionsSelfTest.java  |  188 ++
 .../dht/GridCacheAtomicNearCacheSelfTest.java   |   12 +-
 .../dht/GridCacheColocatedDebugTest.java        |    6 +-
 .../dht/GridCacheDhtEntrySelfTest.java          |   12 +-
 ...GridCacheDhtEvictionNearReadersSelfTest.java |   12 +-
 .../dht/GridCacheDhtEvictionSelfTest.java       |   20 +-
 .../dht/GridCacheDhtInternalEntrySelfTest.java  |    4 +-
 .../dht/GridCacheDhtPreloadDelayedSelfTest.java |    4 +-
 .../GridCacheDhtPreloadDisabledSelfTest.java    |    4 +-
 .../dht/GridCacheDhtPreloadSelfTest.java        |    8 +-
 .../GridCacheDhtPreloadStartStopSelfTest.java   |    4 +-
 .../distributed/dht/GridCacheDhtTestUtils.java  |   25 +-
 ...ridCachePartitionedUnloadEventsSelfTest.java |    6 +-
 ...eAtomicInvalidPartitionHandlingSelfTest.java |    7 +-
 .../atomic/GridCacheAtomicPreloadSelfTest.java  |    2 +-
 ...yOnReadDisabledMultiNodeFullApiSelfTest.java |   36 +
 .../near/GridCacheNearMultiNodeSelfTest.java    |   12 +-
 .../near/GridCacheNearOneNodeSelfTest.java      |    2 +-
 ...idCacheNearOnlyMultiNodeFullApiSelfTest.java |   14 +-
 .../near/GridCacheNearReadersSelfTest.java      |   21 +-
 ...yOnReadDisabledMultiNodeFullApiSelfTest.java |   37 +
 ...achePartitionedMultiNodeCounterSelfTest.java |   18 +-
 ...achePartitionedMultiNodeFullApiSelfTest.java |   15 +-
 .../GridCachePartitionedTxSalvageSelfTest.java  |    2 +-
 .../GridCacheReplicatedFullApiSelfTest.java     |    1 +
 .../GridCacheReplicatedPreloadSelfTest.java     |    4 +-
 .../cache/eviction/GridCacheMockEntry.java      |    5 +-
 .../IgniteCacheExpiryPolicyAbstractTest.java    |    4 +-
 ...eCacheExpiryPolicyWithStoreAbstractTest.java |    2 +-
 .../query/GridCacheSwapScanQuerySelfTest.java   |    1 +
 ...dCacheAbstractReduceFieldsQuerySelfTest.java |   21 +-
 .../continuous/GridEventConsumeSelfTest.java    |    3 +-
 .../IgniteDataStreamerImplSelfTest.java         |    9 +-
 .../IgniteDataStreamerPerformanceTest.java      |    2 -
 .../IgniteDataStreamerProcessorSelfTest.java    |   52 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   |   31 +-
 .../igfs/IgfsDataManagerSelfTest.java           |    6 +-
 .../processors/igfs/IgfsFileInfoSelfTest.java   |    2 +
 .../processors/igfs/IgfsSizeSelfTest.java       |   17 -
 .../streamer/GridStreamerEvictionSelfTest.java  |    1 -
 .../streamer/GridStreamerFailoverSelfTest.java  |    2 +-
 .../internal/util/nio/GridNioSelfTest.java      |   18 +-
 .../nio/impl/GridNioFilterChainSelfTest.java    |    7 +-
 .../lang/GridMetadataAwareAdapterSelfTest.java  |   80 +-
 .../loadtests/hashmap/GridCacheTestContext.java |   29 +-
 .../loadtests/hashmap/GridHashMapLoadTest.java  |   10 +-
 .../marshaller/GridMarshallerAbstractTest.java  |   15 +-
 .../GridMarshallerPerformanceTest.java          |    2 -
 .../marshaller/MarshallerContextTestImpl.java   |   43 +
 .../jdk/GridJdkMarshallerSelfTest.java          |    2 +-
 .../OptimizedMarshallerEnumSelfTest.java        |    4 +-
 .../optimized/OptimizedMarshallerSelfTest.java  |  186 +-
 .../optimized/OptimizedMarshallerTest.java      |  102 +-
 .../OptimizedObjectStreamSelfTest.java          |   43 +-
 .../ignite/messaging/GridMessagingSelfTest.java |    3 +
 .../communication/GridCacheMessageSelfTest.java |  546 ++++++
 .../discovery/AbstractDiscoverySelfTest.java    |    1 -
 .../GridCacheStoreValueBytesNode.java           |    2 -
 .../testframework/GridSpiTestContext.java       |   18 -
 .../ignite/testframework/GridTestUtils.java     |    6 +-
 .../testframework/junits/GridAbstractTest.java  |    6 +-
 .../junits/GridTestKernalContext.java           |   14 +-
 .../junits/IgniteTestResources.java             |   46 +-
 .../junits/common/GridCommonAbstractTest.java   |    2 +-
 .../IgniteCacheFullApiSelfTestSuite.java        |    2 +
 .../ignite/testsuites/IgniteCacheTestSuite.java |   10 +-
 .../ignite/testsuites/IgniteIgfsTestSuite.java  |    2 +
 .../testsuites/IgniteKernalSelfTestSuite.java   |    2 +
 .../fs/IgniteHadoopIgfsSecondaryFileSystem.java |    5 +-
 .../hadoop/fs/v1/IgniteHadoopFileSystem.java    |   16 +-
 .../hadoop/fs/v2/IgniteHadoopFileSystem.java    |    8 +-
 .../IgniteHadoopClientProtocolProvider.java     |    7 +-
 .../processors/hadoop/HadoopProcessor.java      |    4 +-
 .../internal/processors/hadoop/HadoopSetup.java |    2 +-
 .../hadoop/igfs/HadoopIgfsFuture.java           |    3 +
 .../hadoop/proto/HadoopClientProtocol.java      |    3 -
 .../external/HadoopExternalTaskExecutor.java    |    3 +
 .../child/HadoopExternalProcessStarter.java     |    4 +-
 .../HadoopClientProtocolEmbeddedSelfTest.java   |    3 +-
 .../hadoop/HadoopClientProtocolSelfTest.java    |    2 +-
 .../processors/hadoop/HadoopGroupingTest.java   |    3 +-
 .../hadoop/HadoopJobTrackerSelfTest.java        |    4 +-
 .../hadoop/HadoopMapReduceEmbeddedSelfTest.java |    3 +-
 .../hadoop/HadoopSortingExternalTest.java       |   13 +-
 .../processors/hadoop/HadoopSortingTest.java    |    3 +-
 .../hadoop/HadoopTaskExecutionSelfTest.java     |    6 +-
 .../HadoopExternalTaskExecutionSelfTest.java    |   13 +-
 .../HadoopExternalCommunicationSelfTest.java    |    4 +-
 .../testsuites/IgniteHadoopTestSuite.java       |    6 +-
 .../processors/query/h2/IgniteH2Indexing.java   |    8 +-
 .../GridCacheAbstractFieldsQuerySelfTest.java   |   34 -
 .../cache/GridCacheAbstractQuerySelfTest.java   |   46 +-
 .../cache/GridCacheCrossCacheQuerySelfTest.java |   17 -
 .../cache/GridCacheOffHeapAndSwapSelfTest.java  |   10 +-
 .../cache/GridCacheQueryLoadSelfTest.java       |   54 +-
 .../processors/cache/GridCacheSwapSelfTest.java |    7 +-
 .../processors/cache/jta/CacheJtaManager.java   |    6 +-
 modules/scalar/pom.xml                          |    8 +
 .../scalar/testsuites/ScalarSelfTestSuite.scala |    6 +
 .../cache/spring/SpringDynamicCacheManager.java |   36 +-
 .../GridSpringBeanSerializationSelfTest.java    |    2 +
 .../ignite/spring/GridSpringCacheTestKey.java   |    4 +-
 ...gniteProjectionStartStopRestartSelfTest.java |   42 +-
 .../ignite/tools/classgen/ClassesGenerator.java |  214 +++
 .../optimized/OptimizedClassNamesGenerator.java |  325 ----
 .../commands/cache/VisorCacheCommand.scala      |    1 -
 .../commands/tasks/VisorTasksCommandSpec.scala  |    5 +-
 .../IgniteWebSessionSelfTestSuite.java          |    6 +
 modules/yardstick/config/ignite-base-config.xml |   17 -
 .../yardstick/config/ignite-store-config.xml    |   18 -
 pom.xml                                         |   38 +-
 580 files changed, 21876 insertions(+), 16898 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------

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

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/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 87bb9f1,a966a86..eec6f80
--- 
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
@@@ -3883,10 -3732,10 +3732,10 @@@ public abstract class GridCacheAdapter<
          final ExpiryPolicy plc = plc0 != null ? plc0 : ctx.expiry();
  
          if (ctx.store().isLocalStore()) {
-             IgniteDataStreamerImpl<K, V> ldr = ctx.kernalContext().<K, 
V>dataStream().dataStreamer(ctx.namex(), false);
 -            IgniteDataLoaderImpl ldr = ctx.kernalContext().<K, 
V>dataLoad().dataLoader(ctx.namex());
++            IgniteDataStreamerImpl<K, V> ldr = ctx.kernalContext().<K, 
V>dataStream().dataLoader(ctx.namex());
  
              try {
 -                ldr.updater(new GridDrDataLoadCacheUpdater());
 +                ldr.updater(new IgniteDrDataStreamerCacheUpdater<K, V>());
  
                  LocalStoreLoadClosure c = new LocalStoreLoadClosure(p, ldr, 
plc);
  
@@@ -4049,7 -3883,8 +3883,7 @@@
       * @throws IgniteCheckedException If failed.
       */
      private void localLoadAndUpdate(final Collection<? extends K> keys) 
throws IgniteCheckedException {
-         try (final IgniteDataStreamer<K, V> ldr = ctx.kernalContext().<K, 
V>dataStream().dataStreamer(ctx.namex(), false)) {
 -        try (final IgniteDataLoaderImpl<KeyCacheObject, CacheObject> ldr =
 -                 ctx.kernalContext().<KeyCacheObject, 
CacheObject>dataLoad().dataLoader(ctx.namex())) {
++        try (final IgniteDataLoader<K, V> ldr = ctx.kernalContext().<K, 
V>dataLoad().dataLoader(ctx.namex(), false)) {
              ldr.allowOverwrite(true);
              ldr.skipStore(true);
  
@@@ -4091,11 -3923,13 +3922,13 @@@
  
          final ExpiryPolicy plc0 = plc != null ? plc : ctx.expiry();
  
+         Collection<KeyCacheObject> keys0 = ctx.cacheKeysView(keys);
+ 
          if (ctx.store().isLocalStore()) {
-             IgniteDataStreamerImpl<K, V> ldr = ctx.kernalContext().<K, 
V>dataStream().dataStreamer(ctx.namex(), false);
 -            IgniteDataLoaderImpl ldr = ctx.kernalContext().<K, 
V>dataLoad().dataLoader(ctx.namex());
++            IgniteDataLoaderImpl<K, V> ldr = ctx.kernalContext().<K, 
V>dataLoad().dataLoader(ctx.namex(), false);
  
              try {
-                 ldr.updater(new IgniteDrDataStreamerCacheUpdater<K, V>());
 -                ldr.updater(new GridDrDataLoadCacheUpdater());
++                ldr.updater(new GridDrDataLoadCacheUpdater<K, V>());
  
                  LocalStoreLoadClosure c = new LocalStoreLoadClosure(null, 
ldr, plc0);
  
@@@ -6137,10 -5879,10 +5878,10 @@@
          final IgniteBiPredicate<K, V> p;
  
          /** */
-         final Collection<Map.Entry<K, V>> col;
+         final Collection<GridCacheRawVersionedEntry> col;
  
          /** */
 -        final IgniteDataLoaderImpl<K, V> ldr;
 +        final IgniteDataStreamerImpl<K, V> ldr;
  
          /** */
          final ExpiryPolicy plc;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
index 658aed8,22d3278..099bb24
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
@@@ -276,16 -283,17 +283,17 @@@ public abstract class GridDistributedCa
                  else
                      dht = (GridDhtCacheAdapter<K, V>)cacheAdapter;
  
-                 try (IgniteDataStreamer<K, V> dataLdr = 
ignite.dataStreamer(cacheName)) {
 -                try (IgniteDataLoaderImpl<KeyCacheObject, Object> dataLdr =
 -                         (IgniteDataLoaderImpl)ignite.dataLoader(cacheName)) {
 -                    ((IgniteDataLoaderImpl)dataLdr).maxRemapCount(0);
++                try (IgniteDataStreamerImpl<KeyCacheObject, Object> dataLdr =
++                         
(IgniteDataStreamerImpl)ignite.dataStreamer(cacheName)) {
 +                    ((IgniteDataStreamerImpl)dataLdr).maxRemapCount(0);
  
-                     dataLdr.updater(IgniteDataStreamerCacheUpdaters.<K, 
V>batched());
 -                    
dataLdr.updater(GridDataLoadCacheUpdaters.<KeyCacheObject, Object>batched());
++                    
dataLdr.updater(IgniteDataStreamerCacheUpdaters.<KeyCacheObject, 
Object>batched());
  
-                     for (GridDhtLocalPartition<K, V> locPart : 
dht.topology().currentLocalPartitions()) {
+                     for (GridDhtLocalPartition locPart : 
dht.topology().currentLocalPartitions()) {
                          if (!locPart.isEmpty() && locPart.primary(topVer)) {
-                             for (GridDhtCacheEntry<K, V> o : 
locPart.entries()) {
+                             for (GridDhtCacheEntry o : locPart.entries()) {
                                  if (!o.obsoleteOrDeleted())
-                                     dataLdr.removeData(o.key());
+                                     dataLdr.removeDataInternal(o.key());
                              }
                          }
                      }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/GridDataLoadRequest.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/GridDataLoadRequest.java
index d77b52e,0000000..8c66812
mode 100644,000000..100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/GridDataLoadRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/GridDataLoadRequest.java
@@@ -1,450 -1,0 +1,451 @@@
 +/*
 + * 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.datastream;
 +
 +import org.apache.ignite.configuration.*;
 +import org.apache.ignite.internal.*;
 +import org.apache.ignite.internal.util.tostring.*;
 +import org.apache.ignite.internal.util.typedef.internal.*;
 +import org.apache.ignite.lang.*;
 +import org.apache.ignite.plugin.extensions.communication.*;
 +import org.jetbrains.annotations.*;
 +
 +import java.nio.*;
 +import java.util.*;
 +
 +/**
 + *
 + */
 +public class GridDataLoadRequest implements Message {
 +    /** */
 +    private static final long serialVersionUID = 0L;
 +
 +    /** */
 +    private long reqId;
 +
 +    /** */
 +    private byte[] resTopicBytes;
 +
 +    /** Cache name. */
 +    private String cacheName;
 +
 +    /** */
 +    private byte[] updaterBytes;
 +
-     /** Entries to put. */
-     private byte[] colBytes;
++    /** Entries to update. */
++    @GridDirectCollection(IgniteDataLoaderEntry.class)
++    private Collection<IgniteDataLoaderEntry> entries;
 +
 +    /** {@code True} to ignore deployment ownership. */
 +    private boolean ignoreDepOwnership;
 +
 +    /** */
 +    private boolean skipStore;
 +
 +    /** */
 +    private DeploymentMode depMode;
 +
 +    /** */
 +    private String sampleClsName;
 +
 +    /** */
 +    private String userVer;
 +
 +    /** Node class loader participants. */
 +    @GridToStringInclude
 +    @GridDirectMap(keyType = UUID.class, valueType = IgniteUuid.class)
 +    private Map<UUID, IgniteUuid> ldrParticipants;
 +
 +    /** */
 +    private IgniteUuid clsLdrId;
 +
 +    /** */
 +    private boolean forceLocDep;
 +
 +    /**
 +     * {@code Externalizable} support.
 +     */
 +    public GridDataLoadRequest() {
 +        // No-op.
 +    }
 +
 +    /**
 +     * @param reqId Request ID.
 +     * @param resTopicBytes Response topic.
 +     * @param cacheName Cache name.
 +     * @param updaterBytes Cache updater.
-      * @param colBytes Collection bytes.
++     * @param entries Entries to put.
 +     * @param ignoreDepOwnership Ignore ownership.
 +     * @param skipStore Skip store flag.
 +     * @param depMode Deployment mode.
 +     * @param sampleClsName Sample class name.
 +     * @param userVer User version.
 +     * @param ldrParticipants Loader participants.
 +     * @param clsLdrId Class loader ID.
 +     * @param forceLocDep Force local deployment.
 +     */
 +    public GridDataLoadRequest(long reqId,
 +        byte[] resTopicBytes,
 +        @Nullable String cacheName,
 +        byte[] updaterBytes,
-         byte[] colBytes,
++        Collection<IgniteDataLoaderEntry> entries,
 +        boolean ignoreDepOwnership,
 +        boolean skipStore,
 +        DeploymentMode depMode,
 +        String sampleClsName,
 +        String userVer,
 +        Map<UUID, IgniteUuid> ldrParticipants,
 +        IgniteUuid clsLdrId,
 +        boolean forceLocDep) {
 +        this.reqId = reqId;
 +        this.resTopicBytes = resTopicBytes;
 +        this.cacheName = cacheName;
 +        this.updaterBytes = updaterBytes;
-         this.colBytes = colBytes;
++        this.entries = entries;
 +        this.ignoreDepOwnership = ignoreDepOwnership;
 +        this.skipStore = skipStore;
 +        this.depMode = depMode;
 +        this.sampleClsName = sampleClsName;
 +        this.userVer = userVer;
 +        this.ldrParticipants = ldrParticipants;
 +        this.clsLdrId = clsLdrId;
 +        this.forceLocDep = forceLocDep;
 +    }
 +
 +    /**
 +     * @return Request ID.
 +     */
 +    public long requestId() {
 +        return reqId;
 +    }
 +
 +    /**
 +     * @return Response topic.
 +     */
 +    public byte[] responseTopicBytes() {
 +        return resTopicBytes;
 +    }
 +
 +    /**
 +     * @return Cache name.
 +     */
 +    public String cacheName() {
 +        return cacheName;
 +    }
 +
 +    /**
 +     * @return Updater.
 +     */
 +    public byte[] updaterBytes() {
 +        return updaterBytes;
 +    }
 +
 +    /**
-      * @return Collection bytes.
++     * @return Entries to update.
 +     */
-     public byte[] collectionBytes() {
-         return colBytes;
++    public Collection<IgniteDataLoaderEntry> entries() {
++        return entries;
 +    }
 +
 +    /**
 +     * @return {@code True} to ignore ownership.
 +     */
 +    public boolean ignoreDeploymentOwnership() {
 +        return ignoreDepOwnership;
 +    }
 +
 +    /**
 +     * @return Skip store flag.
 +     */
 +    public boolean skipStore() {
 +        return skipStore;
 +    }
 +
 +    /**
 +     * @return Deployment mode.
 +     */
 +    public DeploymentMode deploymentMode() {
 +        return depMode;
 +    }
 +
 +    /**
 +     * @return Sample class name.
 +     */
 +    public String sampleClassName() {
 +        return sampleClsName;
 +    }
 +
 +    /**
 +     * @return User version.
 +     */
 +    public String userVersion() {
 +        return userVer;
 +    }
 +
 +    /**
 +     * @return Participants.
 +     */
 +    public Map<UUID, IgniteUuid> participants() {
 +        return ldrParticipants;
 +    }
 +
 +    /**
 +     * @return Class loader ID.
 +     */
 +    public IgniteUuid classLoaderId() {
 +        return clsLdrId;
 +    }
 +
 +    /**
 +     * @return {@code True} to force local deployment.
 +     */
 +    public boolean forceLocalDeployment() {
 +        return forceLocDep;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public String toString() {
 +        return S.toString(GridDataLoadRequest.class, this);
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
 +        writer.setBuffer(buf);
 +
 +        if (!writer.isHeaderWritten()) {
 +            if (!writer.writeHeader(directType(), fieldsCount()))
 +                return false;
 +
 +            writer.onHeaderWritten();
 +        }
 +
 +        switch (writer.state()) {
 +            case 0:
 +                if (!writer.writeString("cacheName", cacheName))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 1:
 +                if (!writer.writeIgniteUuid("clsLdrId", clsLdrId))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 2:
-                 if (!writer.writeByteArray("colBytes", colBytes))
++                if (!writer.writeByte("depMode", depMode != null ? 
(byte)depMode.ordinal() : -1))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 3:
-                 if (!writer.writeByte("depMode", depMode != null ? 
(byte)depMode.ordinal() : -1))
++                if (!writer.writeCollection("entries", entries, 
MessageCollectionItemType.MSG))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 4:
 +                if (!writer.writeBoolean("forceLocDep", forceLocDep))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 5:
 +                if (!writer.writeBoolean("ignoreDepOwnership", 
ignoreDepOwnership))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 6:
 +                if (!writer.writeMap("ldrParticipants", ldrParticipants, 
MessageCollectionItemType.UUID, MessageCollectionItemType.IGNITE_UUID))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 7:
 +                if (!writer.writeLong("reqId", reqId))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 8:
 +                if (!writer.writeByteArray("resTopicBytes", resTopicBytes))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 9:
 +                if (!writer.writeString("sampleClsName", sampleClsName))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 10:
 +                if (!writer.writeBoolean("skipStore", skipStore))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 11:
 +                if (!writer.writeByteArray("updaterBytes", updaterBytes))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +            case 12:
 +                if (!writer.writeString("userVer", userVer))
 +                    return false;
 +
 +                writer.incrementState();
 +
 +        }
 +
 +        return true;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
 +        reader.setBuffer(buf);
 +
 +        if (!reader.beforeMessageRead())
 +            return false;
 +
 +        switch (reader.state()) {
 +            case 0:
 +                cacheName = reader.readString("cacheName");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 1:
 +                clsLdrId = reader.readIgniteUuid("clsLdrId");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 2:
-                 colBytes = reader.readByteArray("colBytes");
++                byte depModeOrd;
++
++                depModeOrd = reader.readByte("depMode");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
++                depMode = DeploymentMode.fromOrdinal(depModeOrd);
++
 +                reader.incrementState();
 +
 +            case 3:
-                 byte depModeOrd;
- 
-                 depModeOrd = reader.readByte("depMode");
++                entries = reader.readCollection("entries", 
MessageCollectionItemType.MSG);
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
-                 depMode = DeploymentMode.fromOrdinal(depModeOrd);
- 
 +                reader.incrementState();
 +
 +            case 4:
 +                forceLocDep = reader.readBoolean("forceLocDep");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 5:
 +                ignoreDepOwnership = reader.readBoolean("ignoreDepOwnership");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 6:
 +                ldrParticipants = reader.readMap("ldrParticipants", 
MessageCollectionItemType.UUID, MessageCollectionItemType.IGNITE_UUID, false);
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 7:
 +                reqId = reader.readLong("reqId");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 8:
 +                resTopicBytes = reader.readByteArray("resTopicBytes");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 9:
 +                sampleClsName = reader.readString("sampleClsName");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 10:
 +                skipStore = reader.readBoolean("skipStore");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 11:
 +                updaterBytes = reader.readByteArray("updaterBytes");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +            case 12:
 +                userVer = reader.readString("userVer");
 +
 +                if (!reader.isLastRead())
 +                    return false;
 +
 +                reader.incrementState();
 +
 +        }
 +
 +        return true;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public byte directType() {
 +        return 62;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public byte fieldsCount() {
 +        return 13;
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataLoaderEntry.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataLoaderEntry.java
index 0000000,0000000..94f908b
new file mode 100644
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataLoaderEntry.java
@@@ -1,0 -1,0 +1,170 @@@
++/*
++ * 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.datastream;
++
++import org.apache.ignite.internal.processors.cache.*;
++import org.apache.ignite.internal.util.tostring.*;
++import org.apache.ignite.internal.util.typedef.internal.*;
++import org.apache.ignite.plugin.extensions.communication.*;
++
++import java.nio.*;
++import java.util.*;
++
++/**
++ *
++ */
++public class IgniteDataLoaderEntry implements Map.Entry<KeyCacheObject, 
CacheObject>, Message {
++    /** */
++    private static final long serialVersionUID = 0L;
++
++    /** */
++    @GridToStringInclude
++    protected KeyCacheObject key;
++
++    /** */
++    @GridToStringInclude
++    protected CacheObject val;
++
++    /**
++     *
++     */
++    public IgniteDataLoaderEntry() {
++        // No-op.
++    }
++
++    /**
++     * @param key Key.
++     * @param val Value.
++     */
++    public IgniteDataLoaderEntry(KeyCacheObject key, CacheObject val) {
++        this.key = key;
++        this.val = val;
++    }
++
++    /** {@inheritDoc} */
++    @Override public KeyCacheObject getKey() {
++        return key;
++    }
++
++    /** {@inheritDoc} */
++    @Override public CacheObject getValue() {
++        return val;
++    }
++
++    /** {@inheritDoc} */
++    @Override public CacheObject setValue(CacheObject val) {
++        CacheObject old = this.val;
++
++        this.val = val;
++
++        return old;
++    }
++
++    /**
++     * @param ctx Cache context.
++     * @return Map entry unwrapping internal key and value.
++     */
++    public <K, V> Map.Entry<K, V> toEntry(final GridCacheContext ctx) {
++        return new Map.Entry<K, V>() {
++            @Override public K getKey() {
++                return key.value(ctx.cacheObjectContext(), false);
++            }
++
++            @Override public V setValue(V val) {
++                throw new UnsupportedOperationException();
++            }
++
++            @Override public V getValue() {
++                return val != null ? val.<V>value(ctx.cacheObjectContext(), 
false) : null;
++            }
++        };
++    }
++
++    /** {@inheritDoc} */
++    @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
++        writer.setBuffer(buf);
++
++        if (!writer.isHeaderWritten()) {
++            if (!writer.writeHeader(directType(), fieldsCount()))
++                return false;
++
++            writer.onHeaderWritten();
++        }
++
++        switch (writer.state()) {
++            case 0:
++                if (!writer.writeMessage("key", key))
++                    return false;
++
++                writer.incrementState();
++
++            case 1:
++                if (!writer.writeMessage("val", val))
++                    return false;
++
++                writer.incrementState();
++
++        }
++
++        return true;
++    }
++
++    /** {@inheritDoc} */
++    @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) {
++        reader.setBuffer(buf);
++
++        if (!reader.beforeMessageRead())
++            return false;
++
++        switch (reader.state()) {
++            case 0:
++                key = reader.readMessage("key");
++
++                if (!reader.isLastRead())
++                    return false;
++
++                reader.incrementState();
++
++            case 1:
++                val = reader.readMessage("val");
++
++                if (!reader.isLastRead())
++                    return false;
++
++                reader.incrementState();
++
++        }
++
++        return true;
++    }
++
++    /** {@inheritDoc} */
++    @Override public byte directType() {
++        return 95;
++    }
++
++    /** {@inheritDoc} */
++    @Override public byte fieldsCount() {
++        return 2;
++    }
++
++    /** {@inheritDoc} */
++    @Override public String toString() {
++        return S.toString(IgniteDataLoaderEntry.class, this);
++    }
++}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerCacheUpdaters.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerCacheUpdaters.java
index 629c7b1,0000000..af3f358
mode 100644,000000..100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerCacheUpdaters.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerCacheUpdaters.java
@@@ -1,199 -1,0 +1,206 @@@
 +/*
 + * 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.datastream;
 +
 +import org.apache.ignite.*;
 +import org.apache.ignite.internal.processors.cache.*;
 +import org.apache.ignite.internal.util.typedef.*;
 +import org.jetbrains.annotations.*;
 +
 +import java.util.*;
 +
 +/**
 + * Bundled factory for cache updaters.
 + */
 +public class IgniteDataStreamerCacheUpdaters {
 +    /** */
 +    private static final IgniteDataStreamer.Updater INDIVIDUAL = new 
Individual();
 +
 +    /** */
 +    private static final IgniteDataStreamer.Updater BATCHED = new Batched();
 +
 +    /** */
 +    private static final IgniteDataStreamer.Updater BATCHED_SORTED = new 
BatchedSorted();
 +
 +    /**
 +     * Updates cache using independent {@link 
org.apache.ignite.cache.GridCache#put(Object, Object, 
org.apache.ignite.lang.IgnitePredicate[])} and
 +     * {@link org.apache.ignite.cache.GridCache#remove(Object, 
org.apache.ignite.lang.IgnitePredicate[])} operations. Thus it is safe from 
deadlocks but performance
 +     * is not the best.
 +     *
 +     * @return Single updater.
 +     */
 +    public static <K, V> IgniteDataStreamer.Updater<K, V> individual() {
 +        return INDIVIDUAL;
 +    }
 +
 +    /**
 +     * Updates cache using batched methods {@link 
org.apache.ignite.cache.GridCache#putAll(Map, 
org.apache.ignite.lang.IgnitePredicate[])} and
 +     * {@link org.apache.ignite.cache.GridCache#removeAll(Collection, 
org.apache.ignite.lang.IgnitePredicate[])}. Can cause deadlocks if the same 
keys are getting
 +     * updated concurrently. Performance is generally better than in {@link 
#individual()}.
 +     *
 +     * @return Batched updater.
 +     */
 +    public static <K, V> IgniteDataStreamer.Updater<K, V> batched() {
 +        return BATCHED;
 +    }
 +
 +    /**
 +     * Updates cache using batched methods {@link 
org.apache.ignite.cache.GridCache#putAll(Map, 
org.apache.ignite.lang.IgnitePredicate[])} and
 +     * {@link org.apache.ignite.cache.GridCache#removeAll(Collection, 
org.apache.ignite.lang.IgnitePredicate[])}. Keys are sorted in natural order 
and if all updates
 +     * use the same rule deadlock can not happen. Performance is generally 
better than in {@link #individual()}.
 +     *
 +     * @return Batched sorted updater.
 +     */
 +    public static <K extends Comparable<?>, V> IgniteDataStreamer.Updater<K, 
V> batchedSorted() {
 +        return BATCHED_SORTED;
 +    }
 +
 +    /**
 +     * Updates cache.
 +     *
 +     * @param cache Cache.
 +     * @param rmvCol Keys to remove.
 +     * @param putMap Entries to put.
 +     * @throws IgniteException If failed.
 +     */
 +    protected static <K, V> void updateAll(IgniteCache<K, V> cache, @Nullable 
Set<K> rmvCol,
 +        Map<K, V> putMap) {
 +        assert rmvCol != null || putMap != null;
 +
 +        // Here we assume that there are no key duplicates, so the following 
calls are valid.
 +        if (rmvCol != null)
 +            ((IgniteCacheProxy<K, V>)cache).removeAll(rmvCol);
 +
 +        if (putMap != null)
 +            cache.putAll(putMap);
 +    }
 +
 +    /**
 +     * Simple cache updater implementation. Updates keys one by one thus is 
not dead lock prone.
 +     */
-     private static class Individual<K, V> implements 
IgniteDataStreamer.Updater<K, V> {
++    private static class Individual<K, V> implements 
IgniteDataStreamer.Updater<K, V>, InternalUpdater {
 +        /** */
 +        private static final long serialVersionUID = 0L;
 +
 +        /** {@inheritDoc} */
 +        @Override public void update(IgniteCache<K, V> cache, 
Collection<Map.Entry<K, V>> entries) {
 +            assert cache != null;
 +            assert !F.isEmpty(entries);
 +
 +            for (Map.Entry<K, V> entry : entries) {
 +                K key = entry.getKey();
 +
 +                assert key != null;
 +
 +                V val = entry.getValue();
 +
 +                if (val == null)
 +                    cache.remove(key);
 +                else
 +                    cache.put(key, val);
 +            }
 +        }
 +    }
 +
 +    /**
 +     * Batched updater. Updates cache using batch operations thus is dead 
lock prone.
 +     */
-     private static class Batched<K, V> implements 
IgniteDataStreamer.Updater<K, V> {
++    private static class Batched<K, V> implements 
IgniteDataStreamer.Updater<K, V>, InternalUpdater {
 +        /** */
 +        private static final long serialVersionUID = 0L;
 +
 +        /** {@inheritDoc} */
 +        @Override public void update(IgniteCache<K, V> cache, 
Collection<Map.Entry<K, V>> entries) {
 +            assert cache != null;
 +            assert !F.isEmpty(entries);
 +
 +            Map<K, V> putAll = null;
 +            Set<K> rmvAll = null;
 +
 +            for (Map.Entry<K, V> entry : entries) {
 +                K key = entry.getKey();
 +
 +                assert key != null;
 +
 +                V val = entry.getValue();
 +
 +                if (val == null) {
 +                    if (rmvAll == null)
 +                        rmvAll = new HashSet<>();
 +
 +                    rmvAll.add(key);
 +                }
 +                else {
 +                    if (putAll == null)
 +                        putAll = new HashMap<>();
 +
 +                    putAll.put(key, val);
 +                }
 +            }
 +
 +            updateAll(cache, rmvAll, putAll);
 +        }
 +    }
 +
 +    /**
 +     * Batched updater. Updates cache using batch operations thus is dead 
lock prone.
 +     */
-     private static class BatchedSorted<K, V> implements 
IgniteDataStreamer.Updater<K, V> {
++    private static class BatchedSorted<K, V> implements 
IgniteDataStreamer.Updater<K, V>, InternalUpdater {
 +        /** */
 +        private static final long serialVersionUID = 0L;
 +
 +        /** {@inheritDoc} */
 +        @Override public void update(IgniteCache<K, V> cache, 
Collection<Map.Entry<K, V>> entries) {
 +            assert cache != null;
 +            assert !F.isEmpty(entries);
 +
 +            Map<K, V> putAll = null;
 +            Set<K> rmvAll = null;
 +
 +            for (Map.Entry<K, V> entry : entries) {
 +                K key = entry.getKey();
 +
 +                assert key instanceof Comparable;
 +
 +                V val = entry.getValue();
 +
 +                if (val == null) {
 +                    if (rmvAll == null)
 +                        rmvAll = new TreeSet<>();
 +
 +                    rmvAll.add(key);
 +                }
 +                else {
 +                    if (putAll == null)
 +                        putAll = new TreeMap<>();
 +
 +                    putAll.put(key, val);
 +                }
 +            }
 +
 +            updateAll(cache, rmvAll, putAll);
 +        }
 +    }
++
++    /**
++     * Marker interface for updaters which do not need to unwrap cache 
objects.
++     */
++    public static interface InternalUpdater {
++        // No-op.
++    }
 +}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00fd3c3c/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerFuture.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerFuture.java
index 91fbdf0,0000000..8ed4271
mode 100644,000000..100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastream/IgniteDataStreamerFuture.java
@@@ -1,66 -1,0 +1,69 @@@
 +/*
 + * 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.datastream;
 +
 +import org.apache.ignite.*;
 +import org.apache.ignite.internal.*;
 +import org.apache.ignite.internal.util.future.*;
 +import org.apache.ignite.internal.util.tostring.*;
 +import org.apache.ignite.internal.util.typedef.internal.*;
 +
 +/**
 + * Data streamer future.
 + */
 +class IgniteDataStreamerFuture extends GridFutureAdapter<Object> {
++    /** */
++    private static final long serialVersionUID = 0L;
++
 +    /** Data loader. */
 +    @GridToStringExclude
 +    private IgniteDataStreamerImpl dataLdr;
 +
 +    /**
 +     * Default constructor for {@link java.io.Externalizable} support.
 +     */
 +    public IgniteDataStreamerFuture() {
 +        // No-op.
 +    }
 +
 +    /**
 +     * @param ctx Context.
 +     * @param dataLdr Data streamer.
 +     */
 +    IgniteDataStreamerFuture(GridKernalContext ctx, IgniteDataStreamerImpl 
dataLdr) {
 +        assert dataLdr != null;
 +
 +        this.dataLdr = dataLdr;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public boolean cancel() throws IgniteCheckedException {
 +        if (onCancelled()) {
 +            dataLdr.closeEx(true);
 +
 +            return true;
 +        }
 +
 +        return false;
 +    }
 +
 +    /** {@inheritDoc} */
 +    @Override public String toString() {
 +        return S.toString(IgniteDataStreamerFuture.class, this, 
super.toString());
 +    }
 +}

Reply via email to