Merge remote-tracking branch 'remotes/origin/ignite-5075' into ignite-5075-pds
# Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java # modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java # modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java # modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ebfbd994 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ebfbd994 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ebfbd994 Branch: refs/heads/ignite-5075-pds Commit: ebfbd994fc1dc67ca5dab8dd3a2532b124f55927 Parents: bd7fde5 ca176a7 Author: sboikov <[email protected]> Authored: Wed May 24 21:05:07 2017 +0300 Committer: sboikov <[email protected]> Committed: Wed May 24 21:05:07 2017 +0300 ---------------------------------------------------------------------- examples/config/filesystem/example-igfs.xml | 4 + .../examples/datagrid/CacheQueryExample.java | 2 +- modules/clients/src/test/config/jdbc-config.xml | 6 - .../internal/jdbc2/JdbcMetadataSelfTest.java | 5 +- .../internal/jdbc2/JdbcResultSetSelfTest.java | 24 +- .../ignite/jdbc/JdbcMetadataSelfTest.java | 4 +- .../ignite/jdbc/JdbcResultSetSelfTest.java | 121 +- .../jdbc/suite/IgniteJdbcDriverTestSuite.java | 3 + .../jdbc/thin/JdbcConnectionSelfTest.java | 195 ++ .../java/org/apache/ignite/IgniteCache.java | 13 + .../org/apache/ignite/IgniteJdbcThinDriver.java | 312 +++ .../apache/ignite/IgniteSystemProperties.java | 2 +- .../ignite/binary/BinaryBasicNameMapper.java | 2 +- .../ignite/cache/query/FieldsQueryCursor.java | 39 + .../configuration/AtomicConfiguration.java | 25 + .../configuration/MemoryConfiguration.java | 3 +- .../MemoryPolicyConfiguration.java | 4 +- .../ignite/internal/GridKernalContext.java | 8 +- .../ignite/internal/GridKernalContextImpl.java | 12 +- .../apache/ignite/internal/IgniteKernal.java | 6 +- .../org/apache/ignite/internal/IgnitionEx.java | 1 + .../internal/binary/BinaryClassDescriptor.java | 1 + .../ignite/internal/binary/BinaryContext.java | 58 +- .../internal/binary/BinaryWriterExImpl.java | 16 +- .../GridClientOptimizedMarshaller.java | 2 +- .../GridClientZipOptimizedMarshaller.java | 2 +- .../internal/jdbc/thin/JdbcConnection.java | 529 +++++ .../ignite/internal/jdbc/thin/JdbcTcpIo.java | 207 ++ .../ignite/internal/jdbc2/JdbcConnection.java | 3 +- .../managers/communication/GridIoManager.java | 380 ++- .../communication/IgniteIoTestMessage.java | 362 ++- .../managers/indexing/GridIndexingManager.java | 19 +- .../optimized/OptimizedClassDescriptor.java | 2 +- .../optimized/OptimizedMarshaller.java | 2 +- .../marshaller/optimized/package-info.java | 22 + .../mem/unsafe/UnsafeMemoryProvider.java | 18 +- .../pagemem/impl/PageMemoryNoStoreImpl.java | 22 +- .../processors/cache/GridCacheMapEntry.java | 4 +- .../processors/cache/IgniteCacheProxy.java | 22 +- .../processors/cache/QueryCursorImpl.java | 19 +- .../IgniteCacheDatabaseSharedManager.java | 29 +- .../cache/database/tree/BPlusTree.java | 64 +- .../cache/query/GridCacheQueryManager.java | 32 +- .../processors/odbc/OdbcNioListener.java | 242 -- .../internal/processors/odbc/OdbcProcessor.java | 199 -- .../odbc/SqlListenerAbstractMessageParser.java | 265 +++ .../odbc/SqlListenerAbstractObjectReader.java | 137 ++ .../odbc/SqlListenerAbstractObjectWriter.java | 111 + .../processors/odbc/SqlListenerNioListener.java | 263 +++ .../processors/odbc/SqlListenerProcessor.java | 191 ++ .../odbc/SqlListenerRequestHandlerImpl.java | 494 ++++ .../processors/odbc/jdbc/JdbcMessageParser.java | 50 + .../processors/odbc/jdbc/JdbcObjectReader.java | 33 + .../processors/odbc/jdbc/JdbcObjectWriter.java | 33 + .../processors/odbc/odbc/OdbcMessageParser.java | 249 +- .../processors/odbc/odbc/OdbcObjectReader.java | 33 + .../processors/odbc/odbc/OdbcObjectWriter.java | 32 + .../odbc/odbc/OdbcRequestHandler.java | 513 ---- .../processors/query/GridQueryIndexing.java | 100 +- .../processors/query/GridQueryProcessor.java | 312 +-- .../processors/query/QueryIndexKey.java | 20 +- .../query/QueryTypeDescriptorImpl.java | 16 +- .../processors/query/QueryTypeIdKey.java | 26 +- .../processors/query/QueryTypeNameKey.java | 12 +- .../internal/processors/query/QueryUtils.java | 14 +- .../schema/SchemaIndexCacheVisitorImpl.java | 12 +- .../processors/query/schema/SchemaKey.java | 59 - .../message/SchemaProposeDiscoveryMessage.java | 7 +- .../operation/SchemaAbstractOperation.java | 27 +- .../operation/SchemaIndexAbstractOperation.java | 7 +- .../operation/SchemaIndexCreateOperation.java | 8 +- .../operation/SchemaIndexDropOperation.java | 7 +- .../handlers/GridRestCommandHandlerAdapter.java | 3 + .../handlers/cache/GridCacheCommandHandler.java | 2 +- .../handlers/query/QueryCommandHandler.java | 13 +- .../ignite/internal/util/IgniteUtils.java | 17 + .../apache/ignite/marshaller/Marshaller.java | 3 - .../ignite/marshaller/jdk/JdkMarshaller.java | 5 +- .../spi/indexing/IndexingQueryFilter.java | 8 +- .../apache/ignite/spi/indexing/IndexingSpi.java | 17 +- .../spi/indexing/noop/NoopIndexingSpi.java | 6 +- modules/core/src/test/config/example-cache.xml | 5 +- .../src/test/config/spring-start-nodes-attr.xml | 4 +- .../core/src/test/config/spring-start-nodes.xml | 4 +- .../config/websession/example-cache-base.xml | 5 +- .../IgniteExternalizableAbstractTest.java | 15 +- ...dbcPojoStoreOptimizedMarshallerSelfTest.java | 31 - ...ptimizedMarshallerWithSqlEscapeSelfTest.java | 28 - .../apache/ignite/igfs/IgfsPathSelfTest.java | 7 +- .../internal/GridLifecycleAwareSelfTest.java | 3 +- .../BinarySimpleNameTestPropertySelfTest.java | 17 + .../managers/GridManagerStopSelfTest.java | 3 +- .../GridDiscoveryManagerAttributesSelfTest.java | 2 +- .../optimized/OptimizedMarshallerTest.java | 8 + .../marshaller/optimized/package-info.java | 22 + .../pagemem/impl/PageMemoryNoLoadSelfTest.java | 31 +- .../AtomicCacheAffinityConfigurationTest.java | 175 ++ .../CacheStartupInDeploymentModesTest.java | 37 - .../cache/GridCacheEntryMemorySizeSelfTest.java | 2 +- ...ridCacheStoreManagerDeserializationTest.java | 4 +- .../cache/GridCacheVersionSelfTest.java | 7 +- .../IgniteTxExceptionAbstractSelfTest.java | 6 +- .../distributed/CacheAffinityEarlyTest.java | 7 +- .../CacheGetFutureHangsSelfTest.java | 6 +- .../IgniteCacheCreatePutMultiNodeSelfTest.java | 7 +- .../distributed/IgniteCacheCreatePutTest.java | 7 +- .../IgniteCachePartitionLossPolicySelfTest.java | 1 + .../paged/PageEvictionMultinodeTest.java | 22 +- .../cache/query/IndexingSpiQuerySelfTest.java | 14 +- .../cache/query/IndexingSpiQueryTxSelfTest.java | 6 +- .../CacheEntryProcessorNonSerializableTest.java | 5 +- .../igfs/IgfsAbstractBaseSelfTest.java | 10 - .../processors/igfs/IgfsFileInfoSelfTest.java | 16 +- .../IgfsPrimaryOptimziedMarshallerSelfTest.java | 28 - .../odbc/OdbcProcessorValidationSelfTest.java | 182 -- .../SqlListenerProcessorValidationSelfTest.java | 184 ++ .../service/ClosureServiceClientsNodesTest.java | 4 +- ...namicProxySerializationMultiJvmSelfTest.java | 13 - .../GridMarshallerPerformanceTest.java | 8 +- .../IgniteMessagingWithClientTest.java | 4 +- ...pClientDiscoveryMarshallerCheckSelfTest.java | 4 +- .../TcpDiscoveryMarshallerCheckSelfTest.java | 4 +- .../ignite/testframework/GridTestUtils.java | 2 +- .../config/GridTestProperties.java | 3 +- .../configvariations/ConfigVariations.java | 14 +- .../testframework/junits/GridAbstractTest.java | 33 + .../junits/IgniteTestResources.java | 8 +- .../multijvm/IgniteCacheProcessProxy.java | 8 + ...naryObjectsTxDeadlockDetectionTestSuite.java | 37 - .../ignite/testsuites/IgniteBasicTestSuite.java | 4 +- .../testsuites/IgniteBinaryBasicTestSuite.java | 14 +- .../IgniteBinaryCacheFullApiTestSuite.java | 37 - .../testsuites/IgniteBinaryCacheTestSuite.java | 4 - ...ObjectsCacheDataStructuresSelfTestSuite.java | 42 - ...BinaryObjectsCacheExpiryPolicyTestSuite.java | 38 - ...gniteBinaryObjectsCacheRestartTestSuite.java | 37 - .../IgniteBinaryObjectsCacheTestSuite2.java | 37 - .../IgniteBinaryObjectsCacheTestSuite3.java | 2 - .../IgniteBinaryObjectsCacheTestSuite4.java | 37 - ...IgniteBinaryObjectsComputeGridTestSuite.java | 4 - .../IgniteCacheDataStructuresSelfTestSuite.java | 3 + .../ignite/testsuites/IgniteCacheTestSuite.java | 4 - ...teBasicConfigVariationsFullApiTestSuite.java | 2 +- .../ignite/testsuites/IgniteIgfsTestSuite.java | 3 - .../testsuites/IgniteKernalSelfTestSuite.java | 4 - .../IgniteMarshallerSelfTestSuite.java | 8 +- ...essagingConfigVariationFullApiTestSuite.java | 2 +- ...ServiceConfigVariationsFullApiTestSuite.java | 2 +- .../webapp/META-INF/ignite-webapp-config.xml | 15 +- .../test/config/hadoop-fs-open-test/grid-0.xml | 3 +- .../test/config/hadoop-fs-open-test/grid-1.xml | 3 +- .../test/config/hadoop-fs-open-test/grid-2.xml | 3 +- .../test/config/igfs-cli-config-dual-async.xml | 3 +- .../test/config/igfs-cli-config-dual-sync.xml | 3 +- .../src/test/config/igfs-cli-config-primary.xml | 3 +- .../src/test/config/igfs-cli-config-proxy.xml | 3 +- .../IgniteHadoopFileSystemAbstractSelfTest.java | 4 +- .../query/h2/DmlStatementsProcessor.java | 71 +- .../query/h2/GridH2ResultSetIterator.java | 191 -- .../query/h2/H2ConnectionWrapper.java | 67 + .../processors/query/h2/H2DatabaseType.java | 161 ++ .../processors/query/h2/H2FieldsIterator.java | 50 + .../processors/query/h2/H2KeyValueIterator.java | 48 + .../query/h2/H2ResultSetIterator.java | 191 ++ .../processors/query/h2/H2RowDescriptor.java | 479 ++++ .../internal/processors/query/h2/H2Schema.java | 135 ++ .../processors/query/h2/H2SqlFieldMetadata.java | 111 + .../processors/query/h2/H2StatementCache.java | 73 + .../processors/query/h2/H2TableDescriptor.java | 345 +++ .../processors/query/h2/H2TableEngine.java | 89 + .../query/h2/H2TwoStepCachedQuery.java | 49 + .../query/h2/H2TwoStepCachedQueryKey.java | 107 + .../internal/processors/query/h2/H2Utils.java | 299 +++ .../processors/query/h2/IgniteH2Indexing.java | 2206 +++--------------- .../query/h2/database/H2PkHashIndex.java | 4 +- .../query/h2/database/H2TreeIndex.java | 4 +- .../query/h2/ddl/DdlStatementsProcessor.java | 25 +- .../query/h2/opt/GridH2CollocationModel.java | 6 +- .../query/h2/opt/GridH2IndexBase.java | 12 +- .../processors/query/h2/opt/GridH2Table.java | 149 +- .../query/h2/opt/GridH2TreeIndex.java | 2 +- .../query/h2/opt/GridLuceneIndex.java | 15 +- .../query/h2/sql/GridSqlDropIndex.java | 14 +- .../query/h2/sql/GridSqlQueryParser.java | 2 +- .../query/h2/sql/GridSqlQuerySplitter.java | 4 +- .../query/h2/twostep/GridMapQueryExecutor.java | 10 +- .../h2/twostep/GridReduceQueryExecutor.java | 31 +- .../cache/GridCacheCrossCacheQuerySelfTest.java | 12 +- .../cache/IgniteCacheNoClassQuerySelfTest.java | 4 +- .../cache/SqlFieldsQuerySelfTest.java | 12 +- .../DynamicIndexAbstractBasicSelfTest.java | 26 +- .../DynamicIndexAbstractConcurrentSelfTest.java | 74 +- .../cache/index/SchemaExchangeSelfTest.java | 2 +- .../query/IgniteQueryDedicatedPoolTest.java | 6 +- .../query/IgniteSqlSegmentedIndexSelfTest.java | 25 + .../h2/GridIndexingSpiAbstractSelfTest.java | 140 +- .../h2/sql/AbstractH2CompareQueryTest.java | 4 +- .../query/h2/sql/GridQueryParsingTest.java | 6 +- .../FetchingQueryCursorStressTest.java | 4 +- .../IgniteBinaryCacheQueryTestSuite.java | 4 - .../IgniteBinaryCacheQueryTestSuite2.java | 4 - .../IgniteBinaryCacheQueryTestSuite3.java | 39 - .../IgniteBinaryCacheQueryTestSuite4.java | 39 - .../cpp/odbc/include/ignite/odbc/message.h | 10 + .../Apache.Ignite.Core.Tests/MarshallerTest.cs | 2 +- .../GridSpringBeanSerializationSelfTest.java | 15 +- .../webapp2/META-INF/ignite-webapp-config.xml | 15 +- .../ignite-int-max-values-onheap-config.xml | 4 +- modules/yardstick/config/ignite-jdbc-config.xml | 4 +- 209 files changed, 7894 insertions(+), 5036 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java index f600066,4b9c0e2..fbb608b --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java @@@ -237,17 -231,19 +231,17 @@@ public interface GridQueryIndexing /** * Rebuilds all indexes of given type from hash index. * - * @param spaceName Space name. + * @param cacheName Cache name. - * @param type Type descriptor. * @throws IgniteCheckedException If failed. */ - public void rebuildIndexesFromHash(String spaceName) throws IgniteCheckedException; + public void rebuildIndexesFromHash(String cacheName, GridQueryTypeDescriptor type) throws IgniteCheckedException; /** * Marks all indexes of given type for rebuild from hash index, making them unusable until rebuild finishes. * - * @param spaceName Space name. + * @param cacheName Cache name. - * @param type Type descriptor. */ - public void markForRebuildFromHash(String spaceName); + public void markForRebuildFromHash(String cacheName, GridQueryTypeDescriptor type); /** * Returns backup filter. http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java index 62242f1,a40c9e9..fb70a1c --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java @@@ -693,17 -696,15 +695,17 @@@ public class GridQueryProcessor extend QueryTypeDescriptorImpl oldDesc = tblTypMap.put(desc.tableName(), desc); if (oldDesc != null) - throw new IgniteException("Duplicate table name [cache=" + space + + throw new IgniteException("Duplicate table name [cache=" + cacheName + - ", tblName=" + desc.tableName() + ", type1=" + desc.name() + ", type2=" + oldDesc.name() + ']'); + ",tblName=" + desc.tableName() + + ", type1=" + desc.name() + ", type2=" + oldDesc.name() + ']'); for (String idxName : desc.indexes().keySet()) { oldDesc = idxTypMap.put(idxName, desc); if (oldDesc != null) - throw new IgniteException("Duplicate index name [cache=" + space + + throw new IgniteException("Duplicate index name [cache=" + cacheName + - ", idxName=" + idxName + ", type1=" + desc.name() + ", type2=" + oldDesc.name() + ']'); + ",idxName=" + idxName + + ", type1=" + desc.name() + ", type2=" + oldDesc.name() + ']'); } } @@@ -1445,7 -1448,10 +1449,7 @@@ * @param desc Type descriptor. * @return Future that will be completed when rebuilding of all indexes is finished. */ - private IgniteInternalFuture<Object> rebuildIndexesFromHash(@Nullable final String space, @Nullable final QueryTypeDescriptorImpl desc) { - private IgniteInternalFuture<Object> rebuildIndexesFromHash( - @Nullable final String cacheName, - @Nullable final QueryTypeDescriptorImpl desc - ) { ++ private IgniteInternalFuture<Object> rebuildIndexesFromHash(@Nullable final String cacheName, @Nullable final QueryTypeDescriptorImpl desc) { if (idx == null) return new GridFinishedFuture<>(new IgniteCheckedException("Indexing is disabled.")); http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index c3de1f7,4e9d0c7..d57c0f1 mode 100755,100644..100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/test/java/org/apache/ignite/testframework/config/GridTestProperties.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java ---------------------------------------------------------------------- diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java index b3b0881,8e6eeba..2556312 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java @@@ -85,8 -71,8 +72,9 @@@ import org.apache.ignite.internal.proce import org.apache.ignite.internal.processors.cache.GridCacheEntryEx; import org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException; import org.apache.ignite.internal.processors.cache.QueryCursorImpl; + import org.apache.ignite.internal.processors.cache.database.CacheDataRow; import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtInvalidPartitionException; import org.apache.ignite.internal.processors.cache.query.GridCacheQueryMarshallable; import org.apache.ignite.internal.processors.cache.query.GridCacheTwoStepQuery; import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode; @@@ -2121,50 -1851,67 +1853,66 @@@ public class IgniteH2Indexing implement /** * Rebuild indexes from hash index. * - * @param spaceName Space name. + * @param cacheName Cache name. - * @param type Type descriptor. * @throws IgniteCheckedException If failed. */ - @Override public void rebuildIndexesFromHash(String spaceName) throws IgniteCheckedException { - int cacheId = CU.cacheId(spaceName); + @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter") + @Override public void rebuildIndexesFromHash(String cacheName, + GridQueryTypeDescriptor type) throws IgniteCheckedException { + H2TableDescriptor tbl = tableDescriptor(type.name(), cacheName); + + if (tbl == null) + return; + + assert tbl.table() != null; + + assert tbl.table().rebuildFromHashInProgress(); + + H2PkHashIndex hashIdx = tbl.primaryKeyHashIndex(); + + Cursor cursor = hashIdx.find((Session)null, null, null); + + int cacheId = CU.cacheId(tbl.schema().cacheName()); GridCacheContext cctx = ctx.cache().context().cacheContext(cacheId); - IgniteCacheOffheapManager offheapMgr = cctx.group().offheap(); + while (cursor.next()) { + CacheDataRow dataRow = (CacheDataRow)cursor.get(); - for (int p = 0; p < cctx.affinity().partitions(); p++) { - try (GridCloseableIterator<KeyCacheObject> keyIter = offheapMgr.cacheKeysIterator(cctx.cacheId(), p)) { - while (keyIter.hasNext()) { - cctx.shared().database().checkpointReadLock(); + boolean done = false; - try { - KeyCacheObject key = keyIter.next(); + while (!done) { + GridCacheEntryEx entry = cctx.cache().entryEx(dataRow.key()); - while (true) { - try { - GridCacheEntryEx entry = cctx.isNear() ? - cctx.near().dht().entryEx(key) : cctx.cache().entryEx(key); + try { + synchronized (entry) { + // TODO : How to correctly get current value and link here? - entry.ensureIndexed(); + GridH2Row row = tbl.table().rowDescriptor().createRow(entry.key(), entry.partition(), - dataRow.value(), entry.version(), entry.expireTime()); ++ dataRow.value(), entry.version(), entry.expireTime()); - break; - } - catch (GridCacheEntryRemovedException ignore) { - // Retry. - } - catch (GridDhtInvalidPartitionException ignore) { - break; - } + row.link(dataRow.link()); + + List<Index> indexes = tbl.table().getAllIndexes(); + + for (int i = 2; i < indexes.size(); i++) { + Index idx = indexes.get(i); + + if (idx instanceof H2TreeIndex) + ((H2TreeIndex)idx).put(row); } - } - finally { - cctx.shared().database().checkpointReadUnlock(); + + done = true; } } + catch (GridCacheEntryRemovedException e) { + // No-op + } } + } - for (TableDescriptor tblDesc : tables(spaceName)) - tblDesc.tbl.markRebuildFromHashInProgress(false); + tbl.table().markRebuildFromHashInProgress(false); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/ebfbd994/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java ----------------------------------------------------------------------
